Skip to content

Social media scheduling API

Put a review step inside your scheduling workflow.

Prepare posts from code, check what is ready and create schedules with an explicit approval state. Start with a held workflow before adding publishing authority.

The result to expect from a held schedule
{
  "approval_status": "pending_review",
  "status": "action_required",
  "blocking_reason": {
    "code": "APPROVAL_PENDING"
  },
  "latest_execution": null
}

Illustrative fields from the returned schedule. A held schedule creates no execution, job, or provider request.

From source content to a held schedule.

The sequence below is a preparation workflow. Each step uses the IDs and links returned by the previous request.

  1. Step 1

    Discover your brand and accounts

    Read the authorised context, platform capabilities and connected publishing targets. Choose returned IDs and supported formats.

    GET /v1/contextGET /v1/platforms/capabilitiesGET /v1/brands/:brand_id/targets
  2. Step 2

    Import and check the media

    Import a public image or video, then read its readiness. If it needs attention, return the guidance to your user before continuing.

    POST /v1/brands/:brand_id/media/importsGET /v1/brands/:brand_id/media/:media_id
  3. Step 3

    Create the draft and run preflight

    Attach the media and intended accounts to the draft. Check the requested time and approval state without creating a schedule.

    POST /v1/brands/:brand_id/content-itemsPOST /v1/brands/:brand_id/content-items/:content_item_id/preflight
  4. Step 4

    Create a schedule held for review

    Use pending_review and a stable idempotency key for the schedule. Read its returned status to confirm that approval is still required.

    POST /v1/brands/:brand_id/schedulesGET /v1/brands/:brand_id/schedules/:schedule_id

Ready is not the same as approved.

Preparation and review

Preflight checks readiness without creating a schedule. A schedule with pending_review stays held. Use the returned blockers and next actions to explain what still needs attention.

Publishing authority

An approved schedule additionally requires publish:execute and can lead to publication. Confirm the accounts, content and time before requesting it. Read the receipt to check what happened on each platform.

Handle the details when they apply.

Platform settings, media repair and cleanup have their own requirements. Use the full reference for request bodies, scopes and error responses.

TikTok privacy choices

Read choices for the exact TikTok target. Refresh them explicitly when needed, then update only the privacy choice on the same draft and rerun preflight.

GET /v1/brands/:brand_id/targets/:integration_id/dynamic-optionsPOST /v1/brands/:brand_id/targets/:integration_id/dynamic-optionsPUT /v1/brands/:brand_id/content-items/:content_item_id/tiktok-privacy

Media repair

Create a reviewed crop or padded derivative without overwriting the original media.

POST /v1/brands/:brand_id/media/:media_id/repair-derivatives

Publishing receipts and cleanup

Read per-platform results for one schedule. Cleanup requires the exact authority returned in its receipt and the appropriate publishing permission.

GET /v1/brands/:brand_id/schedules/:schedule_id/receiptPOST /v1/brands/:brand_id/schedules/:schedule_id/provider-cleanup

Try the workflow with one post.

Create a scoped key and follow the held schedule recipe using your own connected account.