Developers

Errors

The error envelope, HTTP statuses and the most common error codes.

Error envelope

Every Partner API error has the same shape. Branch on code, show message to humans.

422
{
  "error": {
    "message": "No such store for this seller.",
    "code": "STORE_NOT_FOUND"
  }
}

Validation errors add details, one entry per field (paths are dot-joined):

400
{
  "error": {
    "message": "Validation failed",
    "code": "VALIDATION_ERROR",
    "details": [
      {
        "field": "lines.0.lineTotal",
        "message": "Amount must be a decimal string in major units, e.g. \"299.00\""
      }
    ]
  }
}

Scope errors add required. The OAuth token and revoke endpoints use the OAuth shape { "error", "error_description" } instead — see OAuth errors.

HTTP statuses

StatusMeaningWhat to do
200 / 201 / 204Success (201 created, 204 no content).—
400Malformed request (VALIDATION_ERROR).Fix the request; do not retry as is.
401INVALID_TOKEN: missing, expired or revoked token; app deactivated; seller account not active or deactivated.Refresh once; if it still fails, the seller must reconnect.
403INSUFFICIENT_SCOPE (also after a scope was removed from your app), COUNTRY_NOT_ALLOWED, COD_DROP_ACCESS_CLOSED, COD_DROP_CATALOG_NOT_ENABLED, and business refusals (RESELLER_BLOCKED…).Do not retry.
404NOT_FOUND / PRODUCT_NOT_FOUND / ADOPTION_NOT_FOUND / NOT_ADOPTED: not found for this seller and app.Do not retry.
409Conflict (SKU_CONFLICT, UNIQUE_CONSTRAINT, AMBIGUOUS_PRODUCT_REFERENCE); on the sandbox, a refused test step (ILLEGAL_TRANSITION, SANDBOX_NO_STOCK…).Change the input.
422Business rule refused the request (see each endpoint).Do not retry as is.
429RATE_LIMITED.Back off, see Rate limits.
500 / 504INTERNAL_ERROR, DB_TIMEOUT.Retry with backoff. POST /orders and adoptions are safe to retry.
503SANDBOX_SYSTEM_USER_MISSING (sandbox test helper only).Tell ColiSwift.

Common codes

CodeStatusWhere
INVALID_TOKEN401Any call
INSUFFICIENT_SCOPE403Any call
VALIDATION_ERROR400Any write, list queries
RATE_LIMITED429Any call
COUNTRY_NOT_ALLOWED403country filters, POST /orders, COD Drop catalogue
NOT_FOUND404Orders, products
STORE_NOT_FOUND422POST /orders
PRODUCT_NOT_FOUND404POST /orders, COD Drop
LEAD_VARIANT_REQUIRED · INVALID_VARIANT · PRODUCT_INACTIVE · PRODUCT_NOT_IN_LEAD_COUNTRY422POST /orders
MIXED_SALE_TYPE · COD_DROP_PACK_NOT_SUPPORTED422POST /orders
NOT_OWNED422PUT /products/{id} on an adopted product
REFERENCE_EXISTS409POST/PUT /products
PRODUCT_COUNTRY_NOT_ALLOWED422POST/PUT /products
SALE_BELOW_CESSION · COUNTRY_NOT_OPEN · SKU_CONFLICT · CANNOT_ADOPT_OWN · NOT_COD_DROP422 / 409COD Drop adoptions
ADOPTION_NOT_FOUND · NOT_ADOPTED404PUT / DELETE /cod-drop/adoptions/{productId}
COD_DROP_ACCESS_CLOSED403Every /cod-drop/* endpoint, when the seller’s COD Drop access is closed (details)
COD_DROP_CATALOG_NOT_ENABLED403GET /cod-drop/catalog, GET /cod-drop/catalog/{productId}, when ColiSwift has not enabled the catalogue synchronisation for your app

Sandbox test helper codes

Answered by POST /test/orders/{externalId}/advance, which exists on the sandbox only — see Advance an order.

CodeStatusMeaning
NOT_FOUND404No such order created by your app for this seller (also: the route on production).
ILLEGAL_TRANSITION409Step not allowed from the order’s stage; the message lists the allowed ones.
SANDBOX_NO_STOCK409No warehouse holds stock for every line.
SANDBOX_NO_ZONE409No active city and neighbourhood for the chosen warehouse.
ORDER_IN_CALL · ORDER_CHANGED409An agent is calling the customer; the order changed during the call (retry).
COURIER_MANAGED409Orders of this country are handled by a courier partner.
LEAD_ALREADY_INVOICED409The order is on an invoice; its delivery status cannot change.
SANDBOX_SYSTEM_USER_MISSING503Sandbox misconfigured; tell ColiSwift.

Codes shown in ColiSwift screens

Not Partner API answers, but codes you may meet while testing:

CodeStatusWhere
OAUTH_APP_PRIVATE403Consent page: a sandbox developer app opened by a seller other than its creator (consent errors).
GRANT_REVOKED409« Replay » of a webhook delivery to an app the seller is no longer connected to (replay).
EVENT_NOT_GRANTED409« Replay » of a delivery the app may no longer receive: an event type its scopes no longer entitle, or a stored event whose body holds a field the app may not see.
COD_DROP_CLOSED409« Replay » of a cod_drop.catalog_changed delivery once the app’s catalogue synchronisation or the seller’s COD Drop access is closed.
SCOPE_NOT_SELF_SERVICE400« Applications développeur »: the restricted scopes orders:details and products:details are enabled by ColiSwift only, on request.
DEVELOPER_APP_LIMIT409« Applications développeur »: already 5 active apps.
APP_DEACTIVATED409« Applications développeur »: editing, rotating or pinging a deleted app.
NO_WEBHOOK_URL400« Applications développeur »: test event on an app without a webhook URL.
TEST_EVENT_RATE_LIMITED429« Applications développeur »: more than one test event in 10 seconds for an app, or 30 in an hour for a seller.