ChirpyDevelopers Open Chirpy

REST API

Every action is a POST with a JSON body to https://chirpy.me/api/v1/{action}, with an API key.

Your first call

curl https://chirpy.me/api/v1/me \
  -H "Authorization: Bearer YOUR_API_KEY"
curl https://chirpy.me/api/v1/create_drafts \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: weekend-offer-1" \
  -d '{"posts":[{"content":"Weekend special: two coffees for the price of one.","platforms":["instagram"]}]}'

Endpoints

GET /meWho the key belongs to, its scopes and plan.
GET /toolsEvery action with its scope and input schema.
GET /openapi.jsonThe full OpenAPI 3.1 reference (also here).
POST /{action}Run one action.

Responses

{
  "ok": true,
  "data": {
    "status": "done"
  },
  "actions": [
    {
      "kind": "schedule_posts",
      "title": "Schedule 1 post",
      "status": "done",
      "result": "Scheduled."
    }
  ]
}
{
  "ok": false,
  "error": {
    "code": "invalid_request",
    "message": "Missing required field: postId."
  }
}

actions lists what the call carried out, such as a scheduled post or a generated image, with each outcome. When an action used AI credits for something that costs Chirpy money per call, creditsCharged says how many.

Headers

Authorization: Bearer chirpy_sk_...Your API key. Cookies never sign in to the API.
Idempotency-KeyAny unique string up to 128 characters on a call that changes something. A retry with the same key returns the first result instead of acting twice. Kept 24 hours.
Chirpy-Brand-KitBrand Kit id to work with. Defaults to your default Brand Kit.
X-RateLimit-Limit, -Remaining, -ResetYour per-minute budget, on every response.
There is no sandbox. Calls act on your live workspace, so test with drafts.