API Docs

Connect an account once, then publish with a single request — over REST or the hosted MCP server. Adding a platform never changes your code. MVP platform: TikTok.

Authentication

Create an API key in your dashboard (shown once). Send it as a bearer token on every request. The same key works for REST and MCP.

Authorization: Bearer <YOUR_API_KEY>

1. Connect an account

Connect a TikTok account from the dashboard (OAuth). Once connected, reference it as <platform>:<account_id>, e.g. tiktok:acc_123.

2. Register media (optional)

Two modes: pull from a URL, or upload a file via a presigned PUT.

POST https://creasionapp.com/v1/media
Authorization: Bearer <YOUR_API_KEY>
Content-Type: application/json

{ "url": "https://cdn.you.com/teaser.mp4" }

# → 201 { "media": "media_...", "status": "ready" }

3. Publish a post

POST https://creasionapp.com/v1/posts
Authorization: Bearer <YOUR_API_KEY>
Content-Type: application/json

{
  "accounts": ["tiktok:acc_123"],
  "content": "New drop is live ⏰ #fyp",
  "media": ["media_..."]
}

# → 202 { "id": "post_...", "status": "queued" }

4. Check status

GET https://creasionapp.com/v1/posts/{id}
Authorization: Bearer <YOUR_API_KEY>

# → 200 {
#   "status": "published",
#   "results": [
#     { "account": "tiktok:acc_123", "status": "published",
#       "url": "https://www.tiktok.com/@you/video/..." }
#   ]
# }

Webhooks

Register a URL to receive signed events (post.published, post.failed) instead of polling. Each delivery is signed with HMAC-SHA256 in the X-Creasion-Signature header.

POST https://creasionapp.com/v1/webhooks
{ "url": "https://you.com/hook", "events": ["post.published"] }

Hosted MCP server

Point any MCP client at the endpoint below with your API key. Tools map 1:1 to REST: list_accounts, publish_post, schedule_post, get_post_status.

https://creasionapp.com/v1/mcp   (Streamable HTTP, Bearer <YOUR_API_KEY>)

Errors

Every error uses a uniform shape so you can branch on code and honour retryable.

{ "error": { "code": "rate_limited", "message": "...",
  "retryable": true, "retry_after_seconds": 42 } }

Ready to build?

Get an API key