Build on SellersCommerce
A REST API for your store's orders, shoppers, products, categories and returns. Requests and responses are JSON over HTTPS, and every call is authenticated and scoped to your store.
providerId.
Quick start
Three steps from credentials to your first response.
Get credentials
Your store admin issues an Access Key and Shared Secret for your integration. Keep them on your server, and never in browser or mobile code.
Request a token
Post the key and secret to /token. You get a bearer token that is valid for 60 minutes, plus a refresh token.
Call the API
Send Authorization: Bearer <token> with every request. Responses are wrapped in a standard envelope.
Authentication
OAuth 2 resource-owner grant. The token is bound to the store that owns the credentials.
{ "access_token": "…", "token_type": "bearer", "expires_in": 3599, "refresh_token": "…" }.
To renew the token without re-sending the secret, post grant_type=refresh_token&refresh_token=… to the same URL. Refresh tokens are valid for 4 hours and work only once.401/403/404 responses, block the calling IP for an hour. Cache your token and reuse it until it expires.Rate limits & security
Limits apply per store and per endpoint, and every response is scoped to the store in your token.
| Window | Limit | When exceeded |
|---|---|---|
| Per minute | 120 requests per endpoint | 429 with a Retry-After header in seconds |
| Per hour | 3000 requests per endpoint | 429 until the next hour |
| Abuse protection | Repeated failed sign-ins or refused requests from one IP | 403 for that IP for 60 minutes |
The response envelope reports throttling as StatusCode 429. Back off for Retry-After seconds, then retry.
- Only HTTPS. Never send credentials over plain HTTP.
- A token reads and writes only its own store's data. A group-store parent may also pass
providerIdfor one of its child stores. - Asking for another store's data returns 403.
- Keep the Shared Secret server-side. If it leaks, ask your store admin to rotate it straight away.
- Tokens are opaque, so don't parse them. Treat a 401 as "get a new token".
Response envelope
Every response has the same shape. Check StatusCode in the body as well as the HTTP status.
| Field | Type | Description |
|---|---|---|
Results | object · array · null | The requested data, or the status name of a write operation (for example Processed). |
ResponseMessage | string | Human-readable outcome. Don't parse it; use StatusCode. |
StatusCode | int | SellersCommerce status code. See Status codes. |
List endpoints marked OData accept $filter, $orderby, $top, $skip and $select.
Pagination
List endpoints return at most 200 records per page. Use $skip and $top to page through larger result sets.
- A page returns up to 200 records. If you pass
$topgreater than 200, it is capped at 200. - Fetch the next page by increasing
$skipin steps of 200:?$skip=0, then?$skip=200, then?$skip=400, and so on. - Keep paging until a page returns fewer than 200 records — that is the last page.
- Pair with
$orderbyfor a stable order across pages; results are newest-first by default.
| Request | Returns |
|---|---|
/api/shopper/getall | Records 1–200 |
/api/shopper/getall?$skip=200 | Records 201–400 |
/api/shopper/getall?$top=50&$skip=100 | Records 101–150 |
Status codes
HTTP status, and the StatusCode value returned in the envelope.
Enums & reference values
IDs and names accepted or returned by the endpoints.