Heads up: API keys are scoped to the Social Set that issued them. Rotate keys regularly and delete unused keys immediately.
Base URL & Versioning
All requests target https://api.contentrabbit.ai/v1 and must include a Bearer token in the Authorization header.
Authorization: Bearer YOUR_API_KEY
Authorization: Bearer YOUR_API_KEY
Getting an API Key
- Open Settings → Social Sets.
- Choose the Social Set you want to automate.
- Go to the API & Integrations tab and press Generate API key.
- Copy the value immediately — you can always rotate to get a fresh key.
Quick Start
List the latest drafts for a Social Set:
curl -X GET \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
"https://api.contentrabbit.ai/v1/drafts?limit=10&status=draft"
curl -X GET \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
"https://api.contentrabbit.ai/v1/drafts?limit=10&status=draft"
Create a new draft, attach media, and schedule it in a single call:
curl -X POST \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"content": "Hello world from the API 👋",
"platforms": ["twitter", "linkedin"],
"media": [
{
"type": "image",
"source": {
"base64": "DATA_URI_BASE64",
"filename": "office.jpg",
"mimeType": "image/jpeg"
}
}
],
"scheduleDate": "2025-01-01T10:00:00Z"
}' \
"https://api.contentrabbit.ai/v1/drafts"
curl -X POST \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"content": "Hello world from the API 👋",
"platforms": ["twitter", "linkedin"],
"media": [
{
"type": "image",
"source": {
"base64": "DATA_URI_BASE64",
"filename": "office.jpg",
"mimeType": "image/jpeg"
}
}
],
"scheduleDate": "2025-01-01T10:00:00Z"
}' \
"https://api.contentrabbit.ai/v1/drafts"
Core Endpoints
| Method | Path | Purpose |
|---|---|---|
GET | /drafts | Paginated list filtered by status, platform, limit, cursor. |
POST | /drafts | Create or replace a draft, optionally uploading media inline. |
GET | /drafts/{draftId} | Fetch a single draft. |
PATCH | /drafts/{draftId} | Update content, media, or scheduling info. |
DELETE | /drafts/{draftId} | Remove a draft. |
POST | /drafts/{draftId}/publish | Publish immediately when the platform allows. |
GET | /media | List media assets in the Social Set library. |
POST | /media | Upload images or videos; returns mediaId plus variants. |
GET | /notifications | Fetch inbox/activity notifications. |
POST | /notifications/mark-read | Mark notifications as read. |
GET /drafts
curl -X GET \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
"https://api.contentrabbit.ai/v1/drafts?limit=10&status=draft"
curl -X GET \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
"https://api.contentrabbit.ai/v1/drafts?limit=10&status=draft"
POST /drafts
curl -X POST \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"content": "Hello world from the API 👋",
"platforms": ["twitter", "linkedin"],
"media": [
{
"type": "image",
"source": {
"base64": "DATA_URI_BASE64",
"filename": "office.jpg",
"mimeType": "image/jpeg"
}
}
]
}' \
"https://api.contentrabbit.ai/v1/drafts"
curl -X POST \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"content": "Hello world from the API 👋",
"platforms": ["twitter", "linkedin"],
"media": [
{
"type": "image",
"source": {
"base64": "DATA_URI_BASE64",
"filename": "office.jpg",
"mimeType": "image/jpeg"
}
}
]
}' \
"https://api.contentrabbit.ai/v1/drafts"
GET /drafts/{draftId}
curl -X GET \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
"https://api.contentrabbit.ai/v1/drafts/draft_123"
curl -X GET \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
"https://api.contentrabbit.ai/v1/drafts/draft_123"
PATCH /drafts/{draftId}
curl -X PATCH \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"content": "Updated copy",
"mediaIds": ["media_123"]
}' \
"https://api.contentrabbit.ai/v1/drafts/draft_123"
curl -X PATCH \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"content": "Updated copy",
"mediaIds": ["media_123"]
}' \
"https://api.contentrabbit.ai/v1/drafts/draft_123"
DELETE /drafts/{draftId}
curl -X DELETE \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
"https://api.contentrabbit.ai/v1/drafts/draft_123"
curl -X DELETE \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
"https://api.contentrabbit.ai/v1/drafts/draft_123"
POST /drafts/{draftId}/publish
curl -X POST \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
"https://api.contentrabbit.ai/v1/drafts/draft_123/publish"
curl -X POST \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
"https://api.contentrabbit.ai/v1/drafts/draft_123/publish"
GET /media
curl -X GET \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
"https://api.contentrabbit.ai/v1/media?limit=20"
curl -X GET \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
"https://api.contentrabbit.ai/v1/media?limit=20"
POST /media
curl -X POST \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"type": "image",
"source": {
"base64": "DATA_URI_BASE64",
"filename": "office.jpg",
"mimeType": "image/jpeg"
}
}' \
"https://api.contentrabbit.ai/v1/media"
curl -X POST \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"type": "image",
"source": {
"base64": "DATA_URI_BASE64",
"filename": "office.jpg",
"mimeType": "image/jpeg"
}
}' \
"https://api.contentrabbit.ai/v1/media"
GET /notifications
curl -X GET \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
"https://api.contentrabbit.ai/v1/notifications?limit=50"
curl -X GET \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
"https://api.contentrabbit.ai/v1/notifications?limit=50"
POST /notifications/mark-read
curl -X POST \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "kind": "activity" }' \
"https://api.contentrabbit.ai/v1/notifications/mark-read"
curl -X POST \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "kind": "activity" }' \
"https://api.contentrabbit.ai/v1/notifications/mark-read"
More endpoints (media generation, analytics, integrations) follow the same envelope and will roll out over time.
Typical Workflows
Update Draft Content
curl -X PATCH \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"content": "Updated copy",
"mediaIds": ["media_123"]
}' \
"https://api.contentrabbit.ai/v1/drafts/draft_abc"
curl -X PATCH \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"content": "Updated copy",
"mediaIds": ["media_123"]
}' \
"https://api.contentrabbit.ai/v1/drafts/draft_abc"
Mark Notifications Read
curl -X POST \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "kind": "activity" }' \
"https://api.contentrabbit.ai/v1/notifications/mark-read"
curl -X POST \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "kind": "activity" }' \
"https://api.contentrabbit.ai/v1/notifications/mark-read"
Automations (Zapier / n8n)
- Zapier: Use the Webhooks (Custom Request) action, choose
POST, and add the Bearer header. - n8n: Use an HTTP Request node with Bearer authentication and JSON body.
- Store secrets in the automation platform’s encrypted credential vault.
Rate Limits & Errors
- Every key is rate-limited per minute. Inspect the
X-RateLimit-*headers. - Exceeding limits returns
429 Too Many Requests; retry with exponential backoff. - Error payloads follow
{ "requestId": "...", "errors": [{ "code": string, "message": string }] }to simplify debugging with support.
Need Help?
Reach us via the in-app chat or email support@contentrabbit.ai. Mention the requestId from error responses so we can trace your call quickly.
Related Articles
Was this helpful?