> ## Documentation Index
> Fetch the complete documentation index at: https://docs.trystratos.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Schedules

> Post approved content to TikTok — drafts by default, direct publish with the right scope.

## Create a schedule

<ParamField body="tiktokAccountId" type="string" required />

Requires `schedules:write` (and `schedules:publish` for `mode: "publish"`) and an `Idempotency-Key` header.

```bash theme={null}
curl -X POST https://www.try-orbit.com/api/v1/schedules \
  -H "Authorization: Bearer $STRATOS_API_KEY" -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"contentId": "content_x1y2z3", "tiktokAccountId": "...", "scheduledFor": "2026-08-20T14:00:00Z"}'
```

### Error responses to handle explicitly

| Status | Code                                             | Meaning                                                                                    |
| ------ | ------------------------------------------------ | ------------------------------------------------------------------------------------------ |
| 409    | `not_approved`                                   | Content isn't approved yet — call `/approve` first                                         |
| 400    | `missing_privacy_level`                          | `mode: "publish"` without `privacyLevel`                                                   |
| 403    | `missing_scope`                                  | Key lacks `schedules:publish` for `mode: "publish"`                                        |
| 409    | `no_images`                                      | Content has no rendered slide images — see the [content reference](/api-reference/content) |
| 502    | `tiktok_create_failed` / `tiktok_publish_failed` | TikTok itself rejected the request — the message is TikTok's own error text                |

This posts through the same TikTokHub integration the Stratos AI app itself uses — not a separate reimplementation, so behavior (drafts vs. direct post, compliance fields) matches the app exactly.

## List / delete

* `GET /v1/schedules` — `schedules:read`
* `DELETE /v1/schedules/{id}` — `schedules:write`. Only works while `status` is still `"pending"`.
