Skip to content
Beta: the Biskèt Partner API may still change before v1 is final. Sandbox access is by request:partners@bisket.ai.

Error catalogue

Errors are application/problem+json (RFC 9457) with a stable machine code. Codes may be added within v1; treat an unknown code by its HTTP status.

HTTPCodeWhen
400invalid_jsonThe body could not be parsed as JSON.
400invalid_parameterA path or query parameter is malformed (an id that is not a UUID, a limit out of 1–100, a bad cursor).
400missing_idempotency_keyEvery POST needs an `Idempotency-Key` header.
401api_key_expiredThe key passed its expiry date (keys live at most a year).
401authentication_requiredNo `Authorization: Bearer …` header was sent.
401invalid_api_keyThe key is unknown or was revoked. The two cases answer the same on purpose.
401wrong_environmentA `bk_test_` key was sent to the live host, or a `bk_live_` key to the sandbox.
403grant_revokedThe restaurant disconnected your partner account. New orders are refused; existing orders and settlement continue.
403grant_suspendedThe connection to this location is suspended.
403insufficient_scopeYour key, or the restaurant's grant, lacks the scope this operation needs.
403partner_suspendedBiskèt suspended your partner account; every key is refused.
404not_foundThe object does not exist, or it is not visible to you (another partner's object, a location you are not connected to).
405method_not_allowedThe path exists but not with this HTTP method; `Allow` lists the methods it takes.
406not_acceptableThe `Accept` header excludes JSON.
409cancellation_already_requestedA cancel request for this order is pending.
409external_id_conflictAn order with this `external_id` exists with a different body.
409idempotency_conflictThis `Idempotency-Key` was already used with a different request.
409idempotency_in_progressThe first request with this key is still running.
409invalid_state_transitionThe order (or object) is not in a state that allows this action; `current_version` is included.
409item_unavailableA line is sold out, hidden from your channel, or off the menu; `errors[]` names it.
409location_not_accepting_ordersThe location is closed, paused or unreachable.
409order_not_cancellableThe kitchen already started: a cancel is now a request the restaurant approves or rejects.
409payment_already_openA payment intent for this order is still open.
409payment_not_requiredThe order is `collected_by: partner`, or already paid.
409payout_not_cancellableThe restaurant already confirmed or disputed this payout.
409pickup_manual_code_lockedToo many wrong manual codes for this order.
409pickup_token_usedThis order was already picked up with this token.
409price_changedA line's price no longer matches the menu; `current_menu_version` tells you which version to read.
409redelivery_limitThis delivery was already redelivered the maximum number of times.
409statement_not_issuedThe statement is still open for its period.
409webhook_endpoint_limitYou reached the maximum number of endpoints.
412precondition_failedYour `If-Match` names a version that is no longer current; `current_version` is included.
413payload_too_largeThe body is over 64 KiB.
415unsupported_media_typeThe body is not `application/json`.
422amount_not_whole_gourdesMonCash needs a whole number of gourdes.
422collection_mode_not_allowedThis `collected_by` is not enabled for you, or the location cannot collect.
422currency_not_supportedv1 exposes HTG only.
422discount_exceeds_limitThe partner-funded discount exceeds your cap.
422fulfillment_type_not_supportedThe location or your account does not support this fulfillment type.
422invalid_authorization_codeThe Connect code is unknown, expired (10 min) or already used.
422invalid_modifier_selectionA modifier group got too many, too few or unknown options.
422payment_amount_mismatchThe payment amount is not subtotal + markup + delivery fee − discount.
422payment_method_not_allowedThis payment method is not enabled for you.
422pickup_token_expiredThe token is older than its validity (8 h).
422pickup_token_invalidThe scanned token is not a Biskèt pickup token (or was altered).
422pickup_token_wrong_orderThe token belongs to a different order.
422pkce_verification_failedThe `code_verifier` does not match the `code_challenge` sent at the start of Connect.
422redirect_uri_mismatchThe `redirect_uri` is not one Biskèt registered for you, byte for byte.
422subtotal_mismatchThe `subtotal` is not the sum of the lines.
422validation_failedOne or more fields are invalid; `errors[]` lists each with its JSON path and code.
422variant_requiredThis item has sizes: a `variant_id` is required.
422webhook_url_not_allowedThe URL is not https, or resolves to a private or reserved address.
429rate_limitedYou exceeded a rate limit; `Retry-After` says when to retry.
500internal_errorA bug on Biskèt's side.
502payment_provider_errorMonCash failed or did not answer.
503service_unavailableMaintenance, overload, or the database could not be reached.