Changelog
Notable changes to the SASOM Partners API and to this documentation.
Documentation correction — 2026-09-09
This documentation was audited against the deployed sasom-partners-api stack and
corrected. If you built against an earlier version of these docs, read this
section — several documented behaviours never existed.
Corrected
- Response envelope. Earlier docs showed a
{"success": true, "data": ...}wrapper. There is no envelope. Responses are the documented object at the top level. Code branching onbody.successtreats every success as a failure. The only place asuccessfield appears is the error body ofPOST /partner/batch/r2s. - Rate limit: 200 requests / 60 seconds, not 1,000 per minute.
- Throttling returns
403, not429, and there is noRetry-Afterheader. A throttle is indistinguishable from a wrongsecret. Handlers written for429never fire. - Auth failures return
401,403or500— verified against the live API. A missing header is401; an unrecognisedapi_keyor malformed header is500(the authorizer fails rather than denies — a known defect on our side); a wrongsecretand a rate-limit denial are both403. An earlier revision of this page claimed the API never returns401and that every auth failure was an identical403. Both were wrong. - Pagination fields. The cursor is
nextCursorand the array isorders/listings. There is nocursor,dataorhas_morefield, and nolimitquery parameter. Page size is fixed: 100 for order lists, 500 for live listings. - Price floors. The documented "minimum 250 baht" with a validation error never existed. Real behaviour: creates clamp below 50 THB to 50, edits clamp below 100 THB to 100 — silently, returning success.
- No
quantityon ask listings. Ask and pre-order creates take noquantityfield; earlier examples showed one. Pre-orders usequota. update/trackingfield names. The endpoint takesorder_ids(array) andtracking_code. Earlier examples showedorder_id,tracking_numberandlogistics_provider, none of which exist.- Order-not-yours returns
400("uid not match"), not404.404from this API means the route does not exist. - Not-found orders return
400, not404. 201does not always mean created. In vacation mode listing creates return201with noorder_idand create nothing.
Removed
PUT /partner/reject/order. This endpoint was documented, with a working code sample, but is not available — it returns404. There is no partner path to reject, cancel or refund a sold order. Contact your SASOM account manager instead. Do not build a rejection flow against this API.- Claimed logistics types (
shippop,kerry,kerryDropoff,grab-express,external) as a partner-selectable option, and the associatedpickup_date/pickup_time/ Kerry-pickup validation errors. Partners do not select a carrier through this API; the label endpoint decides shipping type from order state. - The "cannot cancel batch" error and batch cancellation. There is no endpoint to cancel an R2S batch.
- URL-based API versioning and the deprecation policy. No versioning scheme is implemented. Breaking changes are communicated by your account manager.
- Suggested cache times. Replaced with the actual
Cache-Controlvalues the API sends.
Added
POST /partner/lowest/bulk— resolve up to 100 SKUs in one request.GET /partner/catalog/manifest— snapshot metadata plus a presigned URL to a gzipped NDJSON catalog manifest.GET /partner/catalog/delta— SKUs added, removed or changed since a snapshot, for maintaining a local price mirror without crawling.- Documentation of credential rotation and revocation lag (up to 5 minutes).
- Documentation of write non-idempotency, including the double-deduction risk on a
retried
PUT /partner/confirm/order. - Handling requirements for
GET /partner/label/{orderId}, whose PDF contains buyer personal data and whose URL is a bearer credential for it. - Actual
Cache-Controlvalues per endpoint. - The
r2s-processingandr2s-price-processingorder statuses. - The Smart Price / SMP price locks and what they mean.
API — current surface
Listings — POST /partner/list/ask · POST /partner/list/preorder ·
PUT /partner/edit/listing · PUT /partner/edit/preorder ·
PUT /partner/cancel/listing
Pricing — GET /partner/lowest/{sku} · POST /partner/lowest/bulk ·
GET /partner/catalog/manifest · GET /partner/catalog/delta
Orders — GET /partner/processing/orders · GET /partner/settled/orders ·
GET /partner/{order_id} · GET /partner/payout/{order_id} ·
GET /partner/live/listings/{type}
Operations — PUT /partner/confirm/order · PUT /partner/confirm/preorder ·
PUT /partner/update/shipping · PUT /partner/update/tracking ·
GET /partner/label/{orderId}
Warehouse — POST /partner/batch/r2s
Not available: order rejection, refunds, webhooks, batch cancellation, bulk listing creation.
Staying informed
There is no automated change feed. Breaking changes are communicated by your SASOM account manager — make sure they have a technical contact for your integration, not only a commercial one.