> ## 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.

# Direct publish

> Posting live to TikTok with no draft/review step — what it takes, and why it's scope-gated.

By default, every schedule Stratos AI creates lands in the connected TikTok account's **drafts**. A human opens the TikTok app and taps post. This is the safe default, and it's what every automation and every `POST /v1/schedules` call gets unless you explicitly ask for otherwise.

## What `mode: "publish"` actually does

`mode: "publish"` skips the draft step and posts live immediately, using TikTok's own `DIRECT_POST` capability. Three things all have to be true for it to work:

<Steps>
  <Step title="The API key has the schedules:publish scope">
    This is checked before the request ever reaches TikTok — a key without it gets `403 missing_scope`, full stop. This scope is not granted by default on new keys; request it explicitly when creating a key.
  </Step>

  <Step title="privacyLevel is set on the request">
    TikTok's own API requires this for direct posts. Stratos AI enforces the same check before calling TikTok, so you get a clear `400 missing_privacy_level` locally instead of an opaque TikTok-side rejection.
  </Step>

  <Step title="The connected TikTok account has direct-post audit approval">
    This is TikTok's own app-review process, outside Stratos AI's control. An account without it will fail at the TikTok API call itself — Stratos AI surfaces whatever error TikTok returns.
  </Step>
</Steps>

## Using it

```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_xyz",
    "tiktokAccountId": "...",
    "scheduledFor": "2026-08-20T14:00:00Z",
    "mode": "publish",
    "privacyLevel": "PUBLIC_TO_EVERYONE"
  }'
```

From the CLI, this requires an explicit `--yes`:

```bash theme={null}
stratos schedules create --content content_xyz --tiktok-account ... --at 2026-08-20T14:00:00Z --mode publish --yes
```

## For agent operators

If you're granting an MCP-connected or CLI-scripted agent a `schedules:publish`-scoped key, understand what you're authorizing: that agent can post to a real TikTok account with no human review of the specific post. The `stratos_schedule_create` MCP tool's description states this and instructs the agent to only use `mode: "publish"` when explicitly asked — but the scope grant is what actually enforces it, not the instruction. Issue publish-capable keys deliberately, and revoke them the moment you're not actively using that capability.
