THE SOCIAL PUBLISHING API

One API.Every next post.

Publish, schedule, and keep the conversation going. Connect your product to the platforms your audience actually uses.

Free developer beta. No card required.
POST /v1/posts
curl -X POST https://castrook.com/api/v1/posts \
  -H "Authorization: Bearer $CASTROOK_API_KEY" \
  -H "Idempotency-Key: collection-launch-v1" \
  -H "Content-Type: application/json" \
  -d '{
    "text": "Something worth sharing.",
    "account_ids": ["acc_tiktok", "acc_instagram"],
    "media": {
      "type": "video",
      "url": "https://your-cdn.com/launch.mp4"
    }
  }'
Four platforms.
One familiar contract.
TikTokInstagramFacebookYouTube Shorts
EVERY DESTINATION ACCOUNTED FOR

“Accepted” is just
the beginning.

A post is more than an API response. Follow each destination from queue to publication, with the status and errors your app needs.

POST /v1/postsCollection launchpst_example · 4 destinations
TikTokDestination deliveredpublished
InstagramDestination deliveredpublished
FacebookDestination deliveredpublished
YouTubeAwaiting platform processingpublishing
Illustrative delivery trace. Live publishing requires platform access.See access requirements ↗

Give every post its moment.

Send an ISO timestamp. Inspect the queue, cancel pending posts, and get an event when delivery finishes.

Explore scheduling

Retry without the double post.

Idempotency keys keep repeated requests tied to the same post. A result for each destination makes partial failures visible.

Understand delivery states

Publishing starts a conversation.

Read and reply to comments through the same API on supported accounts. Capabilities tell you what’s available.

Build with comments
BUILT FOR THE NEXT PERSON READING YOUR CODE

Less decoding.
More shipping.

Predictable JSON. Scoped keys. Useful errors. A TypeScript client and a complete OpenAPI specification, ready to work the way you do.

A response you can build on
{
  "data": {
    "id": "pst_example",
    "status": "queued",
    "mode": "test",
    "targets": [
      {
        "account_id": "acc_instagram",
        "platform": "instagram",
        "status": "queued",
        "attempts": 0
      }
    ]
  }
}

Your next feature
could be a whole new channel.

Start in test mode. Connect live accounts when you’re ready.

Build with Castrook