code and a human-readable message.
Error response format
details field with per-field messages:
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-Idheader, 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.
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 aSpreeError carrying the code, status, and details:
Requirements that block submission
Submitting for review with something required still outstanding returns422 with a message naming what is blocking. The seller’s status is unchanged — nothing partial happens.
GET /api/v3/seller/onboarding to see each requirement’s status and whether it is blocking.
