Coline Docs
API

Errors

The error format and the codes you're most likely to see.

Every error has the same shape and a matching HTTP status:

{
  "error": {
    "code": "API_KEY_SCOPE_FORBIDDEN",
    "message": "API key is missing required scope: files.write"
  }
}

The code is also in the x-coline-error-code response header. Branch on code, not on message; messages are written for people and can change.

Status codes

StatusMeaningRetry?
400The request is malformed or fails validationNo, fix the request
401Missing, unknown or expired credentialsRefresh the OAuth token, then retry once
402Not enough API credits for a metered callAfter adding credits
403Authenticated, but not allowed: missing scope, wrong workspace, or no access to the resourceNo
404The resource doesn't exist, or you can't see itNo
409Conflicts with the current state, such as a stale versionRead the latest state first
429Rate limitedYes, after X-RateLimit-Reset
500Something failed on Coline's sideYes, with backoff. Read back before retrying a create

Common codes

Authentication and access

CodeStatusMeaning
UNAUTHORIZED401No credentials, or you need to sign in
INVALID_TOKEN401The OAuth access token is unknown or expired
API_KEY_SCOPE_FORBIDDEN403The API key lacks a scope the route needs
OAUTH_SCOPE_FORBIDDEN403The OAuth token lacks a scope the route needs
API_KEY_WORKSPACE_MISMATCH403The key belongs to a different workspace than the one in the path
USER_IDENTITY_REQUIRED403The route acts for a person; use an OAuth token, not an API key
WORKSPACE_REQUIRED400The route needs a workspace in the path
WORKSPACE_NOT_FOUND404No workspace with that slug or ID that you can access
WORKSPACE_INACTIVE403The workspace is suspended or deleted
WORKSPACE_ARCHIVED403The workspace is archived and read-only
MUTATION_ORIGIN_REQUIRED403A write was sent without a bearer token and without a same-origin browser session

Requests

CodeStatusMeaning
VALIDATION_ERROR400The body or query failed validation; the message says which field
BAD_REQUEST400The request can't be processed as sent
CONFLICT409The change conflicts with the current state
RATE_LIMIT_EXCEEDED429Too many requests in the current minute
INSUFFICIENT_CREDITS402The workspace's API credit balance can't cover the call
MODEL_NOT_FOUND400Unknown Tab model
INTERNAL_ERROR500Unexpected failure

Resources

CodeStatusMeaning
NOT_FOUND404Generic not found
FILE_NOT_FOUND, DRIVE_NOT_FOUND404The file or drive doesn't exist or isn't visible to you
TASK_NOT_FOUND, TASKBOARD_NOT_FOUND404The task or board doesn't exist or isn't visible to you
PARENT_NOT_FOUND, INVALID_PARENT400The target folder doesn't exist or can't hold the file
UPLOAD_NOT_FOUND404The upload ID is unknown or expired
APP_NOT_FOUND, APP_INSTALL_NOT_FOUND404The app doesn't exist, or isn't installed in this workspace
APP_MANIFEST_INVALID400A pushed app version failed manifest validation

OAuth

CodeStatusMeaning
INVALID_CLIENT401Unknown client, or the secret doesn't match
INVALID_REDIRECT_URI400The redirect URL isn't registered for the client
INVALID_GRANT400The code or refresh token is expired, already used, or for another client

Routes return other, more specific codes too. Treat any code you don't recognize by its HTTP status.

On this page