Errors

The error response format of the Configo API and the full list of error codes.

When a request fails, the API responds with an HTTP status code and a JSON body that identifies the error.

Error format

{
  "id": 4019,
  "code": "ORDER_STATUS_NOT_FOUND",
  "message": "The order status does not exist in this project."
}
Field Type Description
id integer Stable numeric error ID
code string Stable error code. Branch on code or id, never on message
message string Human-readable explanation in English. It may change

Some errors add fields with details. They are listed in the table below and on the endpoint pages.

Validation errors

REQ_VALIDATION_FAILED caused by a malformed body lists every problem in errors:

{
  "id": 2001,
  "code": "REQ_VALIDATION_FAILED",
  "message": "The request was improperly formatted or contained invalid data.",
  "errors": [
    {
      "code": "invalid_type",
      "expected": "string",
      "path": [
        "name"
      ],
      "message": "Invalid input: expected string, received undefined"
    },
    {
      "code": "too_big",
      "maximum": 100,
      "inclusive": true,
      "origin": "number",
      "path": [
        "products",
        0,
        "discount_percent"
      ],
      "message": "Too big: expected number to be <=100"
    }
  ]
}

path points to the field. errors is absent when the same code is returned for a rule checked outside the schema, for example an unknown role_uuid.

Errors without an error object

A few responses carry only {"message": "..."}:

Status Body When
401 {"message": "Unauthorized"} No Authorization header, or the token is invalid, expired or revoked
500 {"message": "Internal Server Error"} An unexpected error on Configo's side

The widget API and the OAuth token endpoints have their own formats.

Error codes

Authorization (1xxx)

id code Status Meaning
1001 AUTH_INSUFFICIENT_SCOPE 403 The token lacks a scope the endpoint requires
1002 AUTH_TRUSTED_CLIENT_REQUIRED 403 Only Configo's own applications may do this
1003 AUTH_NO_ACCESS 403 Not allowed; e.g. reading roles without the needed permissions, unlinking the last sign-in method
1004 AUTH_NO_PROJECT_ACCESS 403 The user's project role lacks the permission the endpoint requires

Request (2xxx)

id code Status Meaning
2001 REQ_VALIDATION_FAILED 400 The request is malformed or contains invalid data; see errors
2002 REQ_NO_DATA_PROVIDED 400 A PATCH request contained no fields to update

Resources (3xxx)

id code Status Meaning
3001 RES_NOT_FOUND 404, 400 The resource does not exist or is not visible to the user. In a request body (400): a referenced resource does not exist
3002 RES_ALREADY_EXISTS 409, 400 The resource already exists, e.g. a duplicate tag name or contact field, an existing member

The API answers 404 RES_NOT_FOUND rather than 403 when the user may not see a resource, so its existence is not revealed. This includes a project whose owner's subscription has lapsed.

Business rules (4xxx)

id code Status Meaning Extra fields
4001 BILL_SUBSCRIPTION_EXPIRED 403 The user, or the project owner, has no active subscription
4002 LIMIT_PROJECT_COUNT_REACHED 403 The plan's project limit is reached
4003 PROJECT_OWNER_REQUIRED 403 Only the project owner may do this; also: removing the owner, the owner leaving
4004 ORDER_STATUS_TRANSITION_NOT_ALLOWED 400 The funnel's transition rules forbid this status change
4005 ORDER_INSUFFICIENT_STOCK 409 A status-change automation could not write off stock shortages, warehouse_uuid
4006 ORDER_LOSS_REASON_REQUIRED 400 A canceled status needs a loss reason
4007 ORDER_REQUIRED_FIELD_MISSING 400 The contact is missing fields the target status requires fields
4008 TASK_ENTITY_NOT_FOUND 400 The task's linked order or contact does not exist
4009 LIMIT_MEMBER_COUNT_REACHED 403 The plan's member limit is reached
4010 AUTOMATION_INVALID 400 The automation does not fit the event catalog reason
4011 EMAIL_SMTP_PASSWORD_REQUIRED 400 An SMTP password is required
4012 ORDER_DELETED 409 The order is deleted; restore it first
4013 CONFIGURATOR_FORMULA_INVALID 400 A configurator formula or product name template does not parse reason
4014 BILL_MANAGED_BY_PARTNER 403 The subscription is managed by a partner
4015 BILL_INSUFFICIENT_BALANCE 402 Not enough balance
4016 BILL_TARIFF_IN_USE 409 The plan is in use and cannot be deleted
4017 BILL_PAYMENT_EXPIRED 409 The payment has expired
4018 BILL_SUBSCRIPTION_NOT_PENDING 409 The subscription is no longer awaiting payment
4019 ORDER_STATUS_NOT_FOUND 400 The status does not exist in this project
4020 ORDER_CONTACT_NOT_FOUND 400 The contact does not exist in this project
4021 ORDER_USER_NOT_MEMBER 400 The responsible user is not a member of this project
4022 ORDER_LOSS_REASON_NOT_FOUND 400 The loss reason does not exist in this project
4023 ORDER_STATUS_REQUIRED 400 An order's status can be changed but not removed
4024 ORDER_PRODUCT_NOT_PRICED 400 A configured product could not be calculated from its configurator details
4025 MEMBER_SELF_EDIT_FORBIDDEN 403 A member cannot change their own role

Codes 4014–4018 come from billing operations available only to Configo's own applications.

Operations (5xxx)

id code Status Meaning Extra fields
5002 WAREHOUSE_INSUFFICIENT_STOCK 409 A stock movement would go below zero
5003 WIKI_PAGE_LOCKED 409 Another user is editing the wiki page holder
5004 WAREHOUSE_DEFAULT_REQUIRED 400 The default warehouse cannot be unset; make another one the default
5005 WAREHOUSE_RETURN_ALREADY_DONE 409 The product was already returned to this warehouse for this order
5006 FUNNEL_DEFAULT_REQUIRED 400 The default funnel cannot be unset; make another one the default
5007 FUNNEL_LAST_CANNOT_BE_DELETED 400 A project must keep at least one funnel
5008 FUNNEL_HAS_ORDERS 400 The funnel still has orders