NoteBugsDocs

Integration

Status codes

Every code the API emits, and when.

CodeWhen
200reads, edits, deletes and the count answers ({ updated: 2 })
201creation: card, comment, attachment, link, project, epic, label, template, column, workspace, account and the installation's first account
400the body is not valid JSON; or a multipart with file and remote together
401no credential, expired credential, wrong current password, invalid e-mail or password
403insufficient role; workspace out of reach; feature turned off (epics, columns, uploads, workspace creation); demo mode
404the resource does not exist or has been deleted
409duplicate name; the installation already has an account (setup); backup under way; .zip outside READY; a bucket that keeps no backups; a link that already exists; storage locked
413file larger than the per-attachment limit
415format not accepted, judged by the magic bytes and not the extension
422body outside the schema (with details) or a business rule refused (without details)
429rate limit exceeded; the response carries Retry-After in seconds
500an untreated failure. EACCES/EPERM on the volume come with the path in the message, not as a generic 500
502the bucket refused or did not answer; the message carries what S3 returned

Never 200 with an error inside

The only route that answers 200 for a state that looks like failure is /api/auth/session: “there is nobody” is an answer, not an error. Everything else uses the HTTP code.