Skip to content

Validate a post

POST
/posts/validate
curl --request POST \
--url https://postflow.biz.id/api/v1/posts/validate \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "caption": "", "mediaIds": [], "targets": [], "tagIds": [ "example" ], "repeatDays": 1, "scheduledAt": "2026-04-15T12:00:00Z", "action": "draft", "useNextSlot": true }'

Runs pre-flight on a post body (as if scheduling it) without saving anything. action is optional. Allowed for read-only keys.

MCP tool: validate_post.

Media typeapplication/json
object
caption
string
"" <= 70000 characters
mediaIds
Array<string>
default: <= 35 items
targets
Array<object>
default: <= 20 items
object
socialAccountId
required
string
>= 1 characters
contentType
required
string
Allowed values: fb_post fb_photo fb_video fb_reel ig_image ig_carousel ig_reel ig_story tt_video tt_photo th_text th_image th_video th_carousel tg_message tg_media bs_post bs_video yt_short yt_video
captionOverride
Any of:
string
<= 70000 characters
mediaIds
Any of:
Array<string>
<= 35 items
options
object
firstComment
string
<= 2200 characters
followUps
Array<object>
<= 5 items
object
text
required
string
>= 1 characters <= 2200 characters
delayMinutes
required
integer
>= 1 <= 1440
link
string format: uri
<= 2000 characters
shareToFeed
boolean
instagram
object
collaborators
Array<string>
<= 3 items
aiGenerated
boolean
tiktok
object
privacyLevel
string
<= 40 characters
disableComment
boolean
disableDuet
boolean
disableStitch
boolean
brandOrganic
boolean
brandContent
boolean
autoAddMusic
boolean
music
object
id
required
string
>= 1 characters <= 64 characters
title
required
string
<= 200 characters
artist
string
<= 200 characters
coverUrl
Any of:
string format: uri
<= 2000 characters
volume
integer
<= 100
originalVolume
integer
<= 100
cover
object
mediaId
string
>= 1 characters
offsetMs
integer
<= 14400000
youtube
object
title
string
<= 100 characters
privacy
string
Allowed values: public unlisted private
madeForKids
boolean
tags
Array<string>
<= 50 items
categoryId
string
/^\d{1,3}$/
thumbnailMediaId
string
>= 1 characters
tagIds
Array<string>
<= 10 items
repeatDays
Any of:
integer
>= -9007199254740991 <= 9007199254740991
scheduledAt
Any of:
string format: date-time
/^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$/
action
string
Allowed values: draft schedule now submit
useNextSlot
boolean

OK

Media typeapplication/json
object
valid
required

True when no account has an error. Warnings don’t block.

boolean
targets
required
Array<object>
object
socialAccountId
required
string
contentType
required
string
Allowed values: fb_post fb_photo fb_video fb_reel ig_image ig_carousel ig_reel ig_story tt_video tt_photo th_text th_image th_video th_carousel tg_message tg_media bs_post bs_video yt_short yt_video
issues
required
Array<object>
object
severity
required
string
Allowed values: error warning
code
required

E.g. caption_length, media_aspect. See the errors guide.

string
message
required
string
mediaId

The file the issue is about.

string

Example

{
"targets": [
{
"contentType": "fb_post",
"issues": [
{
"severity": "error"
}
]
}
]
}

Validation failed. details lists what to fix.

Media typeapplication/json
object
error
required
object
code
required
string
Allowed values: UNAUTHENTICATED FORBIDDEN NOT_FOUND VALIDATION CONFLICT SUBSCRIPTION_GRACE SUBSCRIPTION_EXPIRED PLAN_LIMIT RATE_LIMITED INTERNAL
message
required

A sentence you can show to a person.

string
details

Field errors ({ field: [messages] }), or preflight: per-account rule violations with an issue code.

Example

{
"error": {
"code": "UNAUTHENTICATED"
}
}

Missing, invalid, expired or deleted key or token.

Media typeapplication/json
object
error
required
object
code
required
string
Allowed values: UNAUTHENTICATED FORBIDDEN NOT_FOUND VALIDATION CONFLICT SUBSCRIPTION_GRACE SUBSCRIPTION_EXPIRED PLAN_LIMIT RATE_LIMITED INTERNAL
message
required

A sentence you can show to a person.

string
details

Field errors ({ field: [messages] }), or preflight: per-account rule violations with an issue code.

Example

{
"error": {
"code": "UNAUTHENTICATED"
}
}

More than 120 requests in a minute with this key.

Media typeapplication/json
object
error
required
object
code
required
string
Allowed values: UNAUTHENTICATED FORBIDDEN NOT_FOUND VALIDATION CONFLICT SUBSCRIPTION_GRACE SUBSCRIPTION_EXPIRED PLAN_LIMIT RATE_LIMITED INTERNAL
message
required

A sentence you can show to a person.

string
details

Field errors ({ field: [messages] }), or preflight: per-account rule violations with an issue code.

Example

{
"error": {
"code": "UNAUTHENTICATED"
}
}