Content RabbitContent Rabbit

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

Getting an API Key

  1. Open Settings → Social Sets.
  2. Choose the Social Set you want to automate.
  3. Go to the API & Integrations tab and press Generate API key.
  4. 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"

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"

Core Endpoints

MethodPathPurpose
GET/draftsPaginated list filtered by status, platform, limit, cursor.
POST/draftsCreate 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}/publishPublish immediately when the platform allows.
GET/mediaList media assets in the Social Set library.
POST/mediaUpload images or videos; returns mediaId plus variants.
GET/notificationsFetch inbox/activity notifications.
POST/notifications/mark-readMark 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"

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"

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"

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"

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"

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"

GET /media

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"

GET /notifications

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"

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"

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"

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.

Was this helpful?