posts

Schedule posts

Schedule a list of posts in one call: queue them in order, or at local times.

mode="queue" (default) appends the posts to the business's posting queue IN THE ORDER YOU SEND THEM: the first id gets the next open slot. A post that already carries a date (created with scheduled_publish_time while NEW) is scheduled at that date instead. mode="at" publishes each post at the matching times_local, a wall-clock time in the business's timezone; never convert to UTC yourself.

Each post is answered separately, in the order sent: publish_time_local (quote it verbatim), warnings (quote them too), or an error for that post only. One bad post never stops the rest. Calling again with posts that are already queued changes nothing (ALREADY_SCHEDULED). Every scheduled post returns a revision_id for Undo. queue summarizes the queue afterwards, so no extra read is needed.

Errors (per post, in results[].error.code): NOT_FOUND, POST_ALREADY_PUBLISHED, ALREADY_SCHEDULED, NOT_SCHEDULABLE, CAPTION_HAS_PLACEHOLDER (fill the [[...]] first), NO_CONNECTED_SOCIALS (follow recovery_hint), MEDIA_REQUIRED, TIME_IN_PAST.

Errors (whole call): 401 authentication_required: API key or token is missing, invalid, or revoked. 403 permission_denied: Your plan does not include API access, or this business is not in your org. 422 validation_error: No post_ids or more than 50, a malformed id, times_local missing or not one per post in at mode, or an unknown timezone. 429 rate_limit_exceeded: You sent too many requests this minute.

post/api/businesses/{business_id}/posts/schedule

Request

  • Base URL: https://api.mymarky.ai
  • URL: https://api.mymarky.ai/api/businesses/{business_id}/posts/schedule
  • Auth: HTTP bearer

Path parameters

business_idstring required

A UUID identifier.

Headers

Marky-Version'2026-04-08' | '2026-07-17' | '2026-08-02' | '2026-08-04' | '2026-08-06'
Example:2026-08-06

Opt into a dated API version. Omit to stay on the floor (2026-04-08) forever — unpinned clients never break. Pin to a newer date (e.g. 2026-08-06) to receive the newest response shapes. Unknown values fall back to the floor. See https://docs.mymarky.ai for the versioning model.

Request body

post_idsstring[] required

The posts to schedule, IN PUBLISH ORDER: in queue mode the first id gets the next open slot, the second the one after, and so on. Send the whole batch in one call; parallel single calls can't keep an order.

mode'queue' | 'at'

queue (default): append to the business's posting queue, in list order. A post that already carries a date (a pin) is scheduled at that date instead. at: publish each post at the matching times_local.

times_localstring[] nullable

at mode only, one per post id, in the same order. Wall-clock time in the business's timezone (or timezone below), e.g. 2026-10-05T09:00. Never convert to UTC yourself; daylight saving is handled here.

ignore_copy_dateboolean

queue mode: queue posts even when the slot is after the day their caption names (COPY_DATE_BEFORE_NEXT_SLOT). Only when the user said so.

timezonestring nullable

IANA timezone for times_local, e.g. Australia/Melbourne. Defaults to the business's calendar timezone. Answers are always shown on the same clock.

Response

Successful Response

timezonestring required

IANA timezone of every *_local time here.

timezone_source'business' | 'unset_utc' required

business: the business's own setting. unset_utc: none saved, so times are UTC.

Changes

No recorded changes to this operation across all 1 revision of this API.