Skip to main content
The Seller API uses the same error format as the rest of the Spree v3 API. Every error response carries a machine-readable code and a human-readable message.

Error response format

Validation errors include a details field with per-field messages:
Permission errors name the key the caller was missing:

Status codes

403 versus 404 — the distinction that matters

This is the most important thing to understand about the seller branch, because the two codes answer different questions. 403 means “you have not told me who you are acting as, or you may not do this.” It comes from one of two places:
  • No X-Spree-Seller-Id header, or one naming a seller the caller has no role on.
  • The acting seller’s role lacks the permission key the action requires.
404 means “no such record, for you.” Every lookup is rooted in the acting seller, so an ID belonging to another seller — or to the marketplace operator — is simply not found.
This is deliberate. Answering 403 for another seller’s product would confirm the record exists, which is how a seller could probe the marketplace’s catalog one ID at a time. The seller is never told the difference between “this belongs to someone else” and “this does not exist”.

Common error codes

Handling errors with the SDK

The SDK throws a SpreeError carrying the code, status, and details:

Requirements that block submission

Submitting for review with something required still outstanding returns 422 with a message naming what is blocking. The seller’s status is unchanged — nothing partial happens.
Read the checklist from GET /api/v3/seller/onboarding to see each requirement’s status and whether it is blocking.