Docs β€Ί Reference

Errors

Error shape, codes and what to do.

Every error has the same shape:

json
{
  "error": {
    "code": "VALIDATION_ERROR",
    "message": "dropoff.contactPhone: A valid contact cellphone number is required",
    "details": [{ "path": "dropoff.contactPhone", "message": "A valid contact cellphone number is required" }]
  }
}
  • code: stable and machine-readable. Branch on this.
  • message: human-readable. It may change.
  • details: present on VALIDATION_ERROR, with one entry per bad field. path uses dots and array indexes (dropoffs.1.windowStart).

Codes

HTTPcodeMeaningWhat to do
400VALIDATION_ERROROne or more fields are missing or malformed.Fix the fields in details; resend with the same externalId.
400INVALID_JSONThe body isn't valid JSON.Send valid JSON with content-type: application/json.
400INVALID_SUB_MERCHANTsubMerchantId isn't one of your locations.Use one of your location ids, or omit it.
401UNAUTHORIZEDMissing, malformed, wrong or revoked credentials.Check the key or HMAC signature.
401MISSING_TOKENSignup poll without X-Signup-Token.Send the pollToken from signup.
403MERCHANT_INACTIVEThe merchant account is deactivated.Contact support.
403FORBIDDENThe key lacks the scope for this call.Ask for a key with orders:write.
404NOT_FOUNDNo such order (or application) on your account.Check the externalId.
409CANCEL_NOT_ALLOWEDAlready picked up, finished, or on a Dragonfly route.Call or email support.
409DUPLICATE_APPLICATIONA signup for this email is already pending or approved.Poll the existing application.
409EMAIL_IN_USEThat email already has a Dragonfly account.Request access in the merchant portal (how).
429RATE_LIMITEDToo many requests.Back off and retry. See rate limits.
500PROVISION_FAILED / otherSomething failed on our side.Retry with backoff; if it persists, contact support with the time and externalId.

Something unclear or missing? Tell us.