The short version
caption, exactly as you want them to appear.
Send an
Idempotency-Key header. If the request times out and you resend it with the same key, you get the original post back instead of a second copy — so a network blip can never double-post a video.Three ways to attach the video
Pick the one that matches where your file already is.
Marky always re-hosts the file at save time rather than fetching your link later. That is deliberate: a signed or throwaway link that expires before the platform reads it would turn into a publish failure hours after your call already returned
201. Re-hosting means the link handed to Instagram or TikTok is always one we serve.
The trade is that the link has to work at the moment you call us. A URL we cannot fetch fails the request with a 400 right then, which is the signal you want.
File limits
Anything over 500 MB is rejected: a
413 from the upload endpoints, a 400 from create_post when the oversized file is behind a media_urls link. Trim or re-encode first — we do not compress on your behalf.
Platform coverage
Every platform Marky publishes to takes video except one.
“Skipped” means that one account is dropped from this post and the others still go out. You will not get a failure row or a failure email for a skip.
Use
restrict_publish_to to target platforms by name, or restrict_publish_to_integration_ids when a workspace has several accounts on the same platform and you want specific ones. Omit both and the post goes to every connected account.
Separate captions per platform
One video, a different caption on each platform, in the same call:Scheduling rules
scheduled_publish_timeis ISO 8601 and must be in the future. A past time is a400.status: "SCHEDULED"requiresscheduled_publish_time. Missing it is a400.- To let Marky pick the slot from your posting schedule instead, create the post with
status: "NEW", thenPOST /api/businesses/{business_id}/posts/{post_id}/queue. - To schedule a post you already created, call schedule post.
