Authenticate

Generate an API key from Settings → Developers. Pass it on every request in theAuthorizationheader.

# All requests authenticate with a bearer token
curl https://api.publick.ai/v1/me \
-H "Authorization: Bearer pk_live_..."

Push a brief

Submit a brief and Publick returns a job ID. Poll/v1/jobs/{id}or subscribe to the draft.ready webhook.

POST /v1/briefs
{
"brand": "heron_coffee",
"channel": "instagram.reel",
"goal": "awareness",
"prompt": "Launch of the new cold brew."
}

Webhooks

Subscribe once, get every lifecycle event: draft.ready, post.published, learn.completed. Payloads include the signed Publick object ID and a HMAC signature.

# Example: subscribe
POST /v1/webhooks
{
"url": "https://your.app/hooks/publick",
"events": ["draft.ready", "post.published"]
}

Rate limits & SLAs

60 requests per minute per workspace on the beta plan, 600/min on Growth, and custom on Enterprise. We publish status at status.publick.ai.

# Every response includes limit headers
HTTP/1.1 200 OK
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 58
X-RateLimit-Reset: 1714000000

Ready to wire it up?

Grab a key and start shipping with two headers and one endpoint.