API Keys

Authentication

Every API request is authenticated with a secret API key sent as a Bearer token.

Issue an API key

Open Developer in your dashboard sidebar (app → Developer, requires an org admin) and click Create API key. Pick an environment and the scopes the key needs. The secret is shown once — copy it immediately.

Keys look like:

cw_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx   # production
cw_test_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx   # sandbox

Keep secret keys server-side

Secret keys grant full scoped access to your organization. Never embed them in client-side code or commit them. For browser use, use the embeddable widget's publishable keys instead.

Send the token

Pass the key as a Bearer token on every request:

curl https://www.createworker.com/api/v1/account \
  -H "Authorization: Bearer cw_live_…"

A missing or invalid key returns 401; a key missing a required scope returns 403. Every response carries a CW-Request-Id header for support.

Scopes

Scopes narrow what a key can do. Grant the least a key needs:

account:read
workers:read     workers:write
tasks:read       tasks:write      tasks:cancel
approvals:write
deliverables:read deliverables:write
chat:read        chat:write
knowledge:read   knowledge:write
integrations:read integrations:write
webhooks:write

deliverables:write, chat:read, and chat:write are used by external workers — an outside agent (e.g. Claude Code) that runs a worker's tasks and answers its chat.

Idempotency & rate limits

Send an Idempotency-Key header on any POST that creates a resource; retrying with the same key replays the original response instead of creating duplicates. The SDK does this automatically.

Rate-limited requests return 429 with a Retry-After header — the SDK retries with backoff.