Browse docs

Reference · validation layers

Field limits

Every rule names the layer that enforces it. Recorded platform guidance never masquerades as current validation.

Five evidence layers

Enforcement key

Schema enforced

Rejected by the configured callable schema before execution.

Runtime enforced

Rejected or constrained by the current API or media path.

Conditional runtime

Enforced only when the named production component is active.

Warning only

Shown during review without rejecting the request.

Unvalidated guidance

Recorded metadata that current request and media validation do not enforce.

Callable and runtime rules

Enforced limits

Schema and runtime checks can stop a call. Conditional checks require the named production component.

SurfaceFieldLimitEnforcement
submit_planaccount_ids
At least one value

The adapter resolves each value to a configured connected destination.

Schema enforced
submit_plantitle
1–120 characters

Whitespace is trimmed before validation.

Schema enforced
submit_planobjective
1–1,000 characters

Whitespace is trimmed before validation.

Schema enforced
submit_planmax_posts
Integer from 1–20

Defines the plan's maximum authorized post count.

Schema enforced
write toolsintent
1–500 characters

Required on submit_plan and publish_video.

Schema enforced
write toolsagent_identity
1–120 characters

Optional when the configured client does not provide an identity.

Schema enforced
write toolsidempotency_key
Non-empty string

Optional to callers. The adapter generates a UUID when omitted.

Schema enforced
publish_videocaption
At most 4,000 characters

The MCP boundary accepts an empty caption.

Schema enforced
upload_mediacontent_type
video/mp4 or video/quicktime

The returned PUT contract requires the same Content-Type header.

Schema enforced
upload_mediasize_bytes
Integer from 1 byte through 500 MB

The returned PUT contract requires the same Content-Length header.

Schema enforced
upload_mediaplatforms
One to nine unique supported destinations

Postdom validates the requested media against the shared platform limits before issuing a URL.

Schema enforced
upload_mediaworkspace request cap
20 upload contracts per rolling hour

The per-workspace cap is reserved atomically before the scoped URL is signed.

Runtime enforced
upload_mediaworkspace byte cap
2 GB declared per rolling hour

The per-workspace byte budget is reserved atomically before the scoped URL is signed.

Runtime enforced
publish_videomedia source
Exactly one of video_url or media_handle

A media handle must reach stored through get_media before publication.

Schema enforced
publish_videovideo_url
Syntactically valid URL when supplied

Runtime media checks apply after schema validation.

Schema enforced
publish_videomedia_handle
Valid workspace-scoped pd_media_ handle when supplied

Cross-workspace, missing, pending, and failed handles are rejected without revealing another workspace's object.

Runtime enforced
plan and publishdatetime fields
RFC 3339 UTC ending in Z

Applies to starts_at, ends_at, and optional publish_at.

Schema enforced
plan and publishplan_id
UUID

Required for get_plan and optional for publish_video.

Schema enforced
get_publishpost_id
Non-empty string

Identifies the durable post record.

Schema enforced
get_performancewindow
7d or 30d; defaults to 7d

The window changes account reads only.

Schema enforced
get_performancescope
Exactly one of post_id or account_id

Supplying both or neither throws before a performance read.

Runtime enforced
get_best_postsaccount_id
Connected account in the current workspace

Unknown or cross-workspace accounts return account_not_found.

Runtime enforced
get_best_postsmetric
One normalized Postdom metric

Null values are excluded with a reason and never ranked as zero.

Schema enforced
get_best_postswindow
7d or 30d; defaults to 7d

The rolling publication window ends at the read observation time.

Schema enforced
submit_planends_at
Later than starts_at

The API rejects a plan whose window does not move forward.

Runtime enforced
submit_planplan window
At most 14 days

Measured from starts_at to ends_at.

Runtime enforced
submit_plantargets
Unique account/platform pairs

Duplicate plan targets are rejected.

Runtime enforced
publish_videomedia host
HTTPS host; no credentials or port

Without the production media resolver, localhost and private or special literal IPs are rejected.

Runtime enforced
publish_videoproduction media source URL
Configured source host; no query or fragment

Enforced when production media storage is active, before internal delivery-host resolution.

Conditional runtime
publish_videomedia response
HTTP 200 or 206

Postdom performs a byte-range reachability read before review.

Runtime enforced
publish_videoContent-Type
video/* or application/octet-stream

A present incompatible type is rejected. For a media_handle the declared type is checked against each destination, so a QuickTime handle is refused by a destination accepting only video/mp4. For a media_url a missing type, or application/octet-stream, is unknown and passes: nothing declared it, so no destination rule can be tested against it.

Runtime enforced
publish_videomedia size
At most 500 MB

Checked whenever the size is known, whether or not production media storage is active. A media_handle always has one, because it was declared and signed for at upload. A media_url whose origin returns no length is published unchecked against this cap.

Runtime enforced
publish_videoper-destination delivery
The size and format limits recorded for each targeted destination

Checked against the destinations a post targets, not the platforms declared at upload. A recorded limit may come from the platform or from the route Postdom delivers through, so a refusal names the destination that cannot receive the video without claiming whose limit stopped it. The whole post is refused; publish the rest in a separate request.

Runtime enforced

Non-blocking records

Warnings and guidance

Warnings inform human review. Unvalidated guidance records a platform expectation without claiming runtime rejection.

SurfaceFieldLimitEnforcement
Instagram Reelscaption
2,200 characters

Preflight marks attention above this value; the request schema does not reject it.

Warning only
globalvideo duration
At most 10 minutes

Recorded metadata; current request and media validation do not enforce duration.

Unvalidated guidance
globalmedia format
MP4 or QuickTime

Recorded metadata; a generic video/* response can currently pass reachability.

Unvalidated guidance
TikTokvideo duration
3 seconds–10 minutes

Recorded guidance, not current runtime validation.

Unvalidated guidance
Instagram Reelsvideo duration
At most 90 seconds

Recorded guidance, not current runtime validation.

Unvalidated guidance
YouTube Shortsvideo duration
At most 3 minutes

Recorded guidance, not current runtime validation.

Unvalidated guidance
YouTube Shortsaspect ratio
9:16

Recorded guidance, not current runtime validation.

Unvalidated guidance

Caller behavior

Validation boundary

Respect the strictest layer

Passing the callable schema does not guarantee media acceptance. Treat warnings and recorded guidance as human review evidence.

VERIFIED · 26 AUGUST 2026Configured schemas · Runtime validators · Recorded platform limits

Rules reflect the current configured path and may change with executable validation.