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 /me | Who the key belongs to, its scopes and plan. |
GET /tools | Every action with its scope and input schema. |
GET /openapi.json | The 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-Key | Any 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-Kit | Brand Kit id to work with. Defaults to your default Brand Kit. |
X-RateLimit-Limit, -Remaining, -Reset | Your per-minute budget, on every response. |
There is no sandbox. Calls act on your live workspace, so test with drafts.
