Skip to main content
Atoll returns JSON for API responses.

Success responses

Successful create requests usually return 201. Reads and updates usually return 200. List responses include pagination fields:
REST list endpoints keep their legacy resource-key shape by default. Main list endpoints also support ?shape=envelope (alias: ?response_shape=cli) for the same agent-friendly envelope used by CLI JSON list output:

Pagination

List endpoints support: Example:

Error format

Most errors return:
Missing authentication on a shared guarded route returns:
Unknown /api/* paths return:
OAuth profile selection uses stable machine-readable error values: These errors occur before the requested business handler reads or changes its resource. invalid_profile deliberately does not reveal whether the rejected reference exists under another connection. The POST initiative issue, initiative milestone, and initiative-target issue link routes normalize accepted identifiers before writing the relationship. They return these stable messages when resolution fails: Missing request fields use the route-specific issue_id is required or milestone_id is required message. Successful writes store the canonical UUID, even when the request used a number, prefix, or milestone name.

Common status codes

Directly requested project-bound resources, including issues and their child resources, milestones, board columns, status updates, PR links, and issue activity, use 404 to conceal a missing, wrong-organization, wrong-parent, or unreadable resource. A readable project or resource with insufficient write access returns 403; collection reads can omit unreadable linked resources. Organization-level role failures may also return 403.

Plan limit errors

Creation endpoints can return 402:
resource can be:
  • humans
  • agents
  • activeProjects
  • activeIssues

Deletion permissions

Permanent task delete requires owner/admin access:
For most workflows, use archive instead:
Reverse it with: