Reference
Errors
Every error returns the same body: one machine-readable code and the request id. Branch on error.code, never on message text, and quote meta.request_id when you contact support.
{
"error": {
"code": "SCOPE_REQUIRED"
},
"meta": {
"request_id": "3f0c2b8e-7a51-4c1e-9d0a-5b6f1e2d4c3a"
}
}400Bad request
INVALID_PUBLIC_REQUESTThe request carries a cookie, or a path containing % or \.
What to doSend from a server without cookies, with a clean path.
DUPLICATE_PUBLIC_HEADERRepeated header: Authorization, If-Match, Idempotency-Key or Content-Type.
What to doSend each header once.
INVALID_QUERYThe query string is too long, repeats keys, or carries a secret token.
What to doCheck the query limits, and never put tokens in the URL.
INVALID_BODYThe body is not a JSON object, or was sent with GET.
What to doSend a JSON object with POST and PATCH only.
INVALID_FILTERInvalid filter value, such as a limit outside 1–100.
What to doCorrect the value.
CURSOR_MISMATCHThe cursor was issued for different filters.
What to doRestart the list with the new filters.
CURSOR_EXPIRED15 minutes have passed since the first page.
What to doRestart the list, and finish it faster.
IDEMPOTENCY_KEY_REQUIREDThe operation requires an Idempotency-Key.
What to doAdd a unique key for each operation.
INVALID_IDEMPOTENCY_KEYThe key is longer than 128 bytes or contains whitespace.
What to doUse a UUID.
INVALID_GRANT_TYPEUnknown grant_type.
What to doUse authorization_code or refresh_token.
INVALID_GRANTMissing fields or wrong token prefix.
What to doCheck the request body.
INVALID_CODEThe authorization code expired or was not approved.
What to doAuthorize again.
REDIRECT_URI_MISMATCHredirect_uri does not match.
What to doUse exactly the same URL.
PKCE_MISMATCHcode_verifier does not match code_challenge.
What to doAuthorize again with a new verifier.
INVALID_REFRESH_TOKENThe refresh token is unknown or inactive.
What to doAuthorize again.
REFRESH_ALREADY_USEDThe refresh token was already exchanged.
What to doUse the latest token pair you stored.
TOKEN_REUSE_DETECTEDResent after success; all tokens were revoked.
What to doAuthorize again, and fix your retry logic.
EVENT_NOT_SUBSCRIBEDTest webhook for a topic you are not subscribed to.
What to doSubscribe to it first.
INVALID_REPLAYThe replay range is outside the last 7 days, or the reason is missing.
What to doCorrect from, to and reason.
401Unauthorized
INVALID_TOKENThe access token is missing, malformed or expired.
What to doRefresh the token, then retry the request once.
INVALID_CLIENTClient authentication failed.
What to doCheck the Client ID, the secret and its validity.
LAUNCH_EXPIREDThe launch URL is older than 5 minutes.
What to doAsk the merchant to open the app again.
LAUNCH_SIGNATURE_INVALIDThe launch URL signature does not match.
What to doReject the session.
403Forbidden
SCOPE_REQUIREDThe token does not carry the required scope.
What to doCall /me. If the merchant revoked the scope, disable the feature or request new consent.
SCOPE_NOT_AVAILABLEThe resource is not available to apps.
What to doDo not retry.
RECONSENT_REQUIREDThe version's scopes changed and merchant consent is required.
What to doSend the merchant back through authorization.
PLAN_NOT_ELIGIBLEThe store's plan does not include apps.
What to doTell the merchant; apps are included in the Professional plan.
INSTALLATION_INACTIVEThe installation was uninstalled or suspended.
What to doStop all work for this store.
ENDPOINT_NOT_APPROVEDThe URL is not registered in the version.
What to doAdd it in a new version.
SUBSCRIPTION_EXPANSION_REQUIRES_RECONSENTAdding topics with PATCH.
What to doDelete the subscription and create a new one.
404Not found
RESOURCE_NOT_FOUNDNo resource with this ID in this store. A cart that was paid or is no longer abandoned, and a payment still in progress, are not found either.
What to doCheck the ID. The resource may have been deleted.
NOT_FOUNDThe path does not exist.
What to doCheck the URL against the API reference.
STORE_UNREGISTEREDThe store is not registered with LARM.
What to doStop all work for this store.
405Method not allowed
METHOD_NOT_ALLOWEDThe method is not supported on this path.
What to doUse a method listed in the Allow header.
409Conflict
IDEMPOTENCY_CONFLICTThe same key was used for a different request.
What to doUse a new key for each distinct operation.
IDEMPOTENCY_GENERATION_CONFLICTThe key was used before the app was reinstalled.
What to doUse a new key.
OPERATION_IN_PROGRESSThe first request with the same key is still running.
What to doWait a second and retry with the same key.
RESOURCE_CONFLICTConflicts with an existing resource.
What to doRead the existing resource.
INSUFFICIENT_STOCKThe quantity is not enough for the requested decrease.
What to doRead the current stock.
ORDER_NOT_PAIDThe order is not paid, so it has no digital content.
What to doWait for order.paid.
SUBSCRIPTION_EXISTSThe installation already has a subscription.
What to doUpdate the existing one with PATCH.
412Precondition failed
RESOURCE_CHANGEDThe resource changed after you read it.
What to doRead it again, and rebuild the update on the latest version.
413Payload too large
BODY_TOO_LARGEThe body is larger than 64 KB.
What to doSplit the operation.
415Unsupported media type
CONTENT_TYPE_REQUIREDThe body has no Content-Type: application/json.
What to doAdd the header.
422Unprocessable
UNKNOWN_FIELDUnknown field or filter.
What to doRemove it. Field lists are closed.
EMPTY_MUTATIONThe update changes nothing.
What to doSend at least one field.
CATEGORY_NOT_FOUNDThe referenced category does not exist.
What to doCreate it first, or use an existing name.
PRICE_CHANGE_TOO_LARGEThe price change is larger than 90%.
What to doConfirm the price with the merchant.
PAGE_MEDIA_NOT_SUPPORTEDThe page content contains images or media.
What to doSend text and links only.
ENDPOINT_UNSAFEThe URL is not https or does not resolve to a public address.
What to doUse a public domain with a valid certificate.
428Precondition required
PRECONDITION_REQUIREDThe update requires If-Match.
What to doRead the resource and send its ETag.
429Too many requests
RATE_LIMITEDRate limit exceeded.
What to doWait for Retry-After, then retry.
500Server error
INTERNAL_ERRORUnexpected error.
What to doRetry shortly, and send the request_id to support if it persists.
503Unavailable
APPS_DISABLEDReads or writes are temporarily disabled.
What to doRetry later.
STORE_MIGRATINGThe store is moving between servers.
What to doRetry after a few seconds.
ROUTE_UNVERIFIEDThe store route could not be verified.
What to doRetry after a few seconds.
APPS_SCOPE_RUNTIME_NOT_READYThe resource is not enabled on this merchant's store yet.
What to doRetry after a few hours.