Skip to main content
The Five API is a REST API. You send JSON over HTTPS and get JSON back. Every endpoint page in this section has an interactive playground: add your API key and send real requests from the browser.
Requests from the playground are real: creating a task holds and charges credits from your balance.

Base URL

All endpoints live under /v1.

Authentication

Send your API key in the Authorization header with the Bearer scheme, or in the x-api-key header:
Create keys in the developer console. See Authentication for scopes, IP allowlists and rotation.

Endpoints

Requests

  • Send Content-Type: application/json with every request that has a body.
  • Field names are snake_case.
  • Input files are public HTTPS URLs; there is no upload endpoint. See Input files.
  • Create requests accept an optional Idempotency-Key header.

Responses

  • Successful requests answer 200 OK with a JSON object. Lists have the shape {"object": "list", "data": [...], "has_more": false}.
  • Ids are opaque strings with a prefix: task_..., evt_... (webhook events), acct_..., req_... (requests).
  • Timestamps are ISO 8601 in UTC with milliseconds, for example 2026-10-23T06:21:02.127Z.
  • Members without a value are omitted, except error on a task, which is always present.
  • Every response carries X-Request-Id. Error bodies repeat it as error.request_id; include it when you contact support.
  • Authenticated responses carry X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset. See Rate limits.
  • Responses are not cacheable (Cache-Control: no-store).

Errors

Errors use standard HTTP status codes and one JSON shape:
Branch on error.code. See Errors for every code and the retry strategy.

Pagination

GET /v1/tasks uses cursor paging. Pass limit (1–100, default 20) and, for the next page, starting_after set to the id of the last item you received. Continue while has_more is true.

Versioning

The API version is part of the path (/v1). Additive changes, such as new models, new optional fields, new response fields and new error codes, are made without a version change, so ignore fields you don’t know. See the changelog.