# Agentic Posting > TikTok-only publishing API for agents. Creator 300 costs $8/month for one TikTok account and 300 TikTok-accepted publishing initializations per Polar billing period. Canonical resources: - Product and API setup: https://agenticposting.com/docs.html - Agent instructions: https://agenticposting.com/SKILL.md - OpenAPI: https://api.agenticposting.com/v1/openapi.json - Short AI discovery: https://agenticposting.com/ai.txt - OpenAI metadata: https://agenticposting.com/agents/openai.yaml - Account, billing, TikTok connection, and API key: https://agenticposting.com/dashboard.html - Privacy: https://agenticposting.com/privacy.html - Terms: https://agenticposting.com/terms.html - Support and deletion requests: https://agenticposting.com/support.html Launch operations: - GET /v1/context - GET /v1/capabilities - POST /v1/uploads - PUT /v1/uploads/{assetId}/content - POST /v1/posts (mode=draft only) - POST /v1/post-intents - GET /v1/post-intents/{postIntentId} - POST /v1/post-intents/{postIntentId}/confirm - GET /v1/posts/{jobId} - POST /v1/posts/{jobId}/refresh Browser-only review read: - GET /v1/post-intents/{postIntentId}/review with X-Review-Token. New review capabilities use the agp_review_ prefix; legacy bare digest tokens are invalid. Active review data is token-scoped; terminal responses are minimal. Confirmation additionally requires a current Clerk session for a member of the same workspace. Current capabilities contract: version 2026-08-09; active media capacity is 70 assets and 1,000,000,000 bytes per workspace. Safety contract: - Direct Post always begins with an immutable post intent. - The agent must show the complete media and settings summary, then stop and wait for a separate creator response. - A Direct Post intent requires a recognizable TikTok username or nickname. Stop on tiktok_creator_identity_missing; never confirm a generic or missing creator identity. - Never infer, invent, or reuse creator confirmation. - Agent-channel Direct Post is disabled by default pending TikTok approval; respect GET /v1/capabilities. - Use the signed browser review URL or TikTok draft path when agent confirmation is unavailable. - An API key cannot select the browser confirmation channel. Never ask for a Clerk session or review token in chat. - Any content or setting change requires a new intent. - Never ask the user to paste an API key, OAuth token, or review token into chat. - Route AI-generated photo slideshows to TikTok draft/inbox delivery; do not Direct Post them without a supported AI-generated-content disclosure field. - A video uses title as its TikTok caption (2,200 characters maximum) and does not accept description. A photo may have both a title (90 characters maximum) and description (4,000 characters maximum); show both when supplied. - Review auto-add music, photo cover index, and video cover timestamp explicitly. Show a setting for the other media type as not applicable rather than hiding it; omitted photoCoverIndex is normalized to 0. - Video intents may use Duet, Stitch, and videoCoverTimestampMs but must omit autoAddMusic and photoCoverIndex. Photo intents may use autoAddMusic and photoCoverIndex, must set Duet and Stitch false, and must omit videoCoverTimestampMs. Incompatible settings are rejected. - Upload exactly one MP4 video or 1-35 JPEG/WebP photos per reservation. Do not mix roles or repeat asset ids. Active capacity is 70 assets and 1,000,000,000 bytes per workspace. - Accepted usage belongs to the Polar period containing TikTok acceptance. Unresolved provider attempts are reserved capacity, not accepted usage, and reduce remaining capacity until internal provider/operator evidence reconciles them. A missing-publish-id hold has no public reconciliation endpoint, agent/creator release control, or automatic expiry. - Only a non-null TikTok publishId proves initialization acceptance, and acceptance is not publication or inbox-delivery proof. An exact idempotent replay may recover a stored failed or submission_unknown job without a second TikTok publish initialization or usage reservation and remains recoverable after entitlement ends. A racing retry may repeat a safe creator-info metadata read before it observes the winning attempt. Inspect and report its exact state. A key is bound to exact input; changed input returns a conflict. Poll the existing job or intent. Never create a replacement request or new idempotency key after an ambiguous result. - Treat a submitting intent as already claimed and in flight. Do not confirm it again or prepare a replacement; poll the same intent/job identity. - Job read and refresh responses expose only id, status, publishId, tiktokPostId, and failReason. Internal owner, request, and idempotency hashes are not public fields. Out of scope: scheduling, calendars, other social networks, content generation, teams, and customer-facing post history or analytics dashboards.