SASOM Partners API
The SASOM Partners API lets partner sellers list products, price them, fulfil orders and ship into the SASOM warehouse programmatically.
Overview
- Listings — create and reprice ask (instant sell) and pre-order listings, and cancel them
- Pricing — read the lowest live price per SKU, one SKU at a time or 100 per request, plus a catalog snapshot + delta feed for keeping a local price mirror
- Orders — list your processing and settled orders, confirm them, set tracking, confirm shipping, and download shipping labels
- Warehouse — send ready-to-ship (R2S) batches into the SASOM warehouse
Base URL
https://partners.sasomapi.com
Production is the only environment exposed to partners. There is no partner-facing sandbox — if you need one for integration testing, ask your SASOM account manager.
Getting started
- Get credentials — ask your SASOM account manager for an
api_keyandsecret. See Authentication. - Verify them — call a read-only endpoint and confirm you get a
200. - Build — start with the Quick Start Guide.
curl -sS https://partners.sasomapi.com/partner/processing/orders \
-u "$SASOM_API_KEY:$SASOM_API_SECRET"
Before you write any code
Five things about this API surprise most integrators. Each is covered in detail later, but reading them now will save you a debugging session:
- There is no response envelope. No
successfield, nodatawrapper. The body is the object each endpoint documents, at the top level. Branch on the HTTP status code. See Error Handling. - Auth failures return
401,403or500— and never429. A missing header is401; an unrecognisedapi_keyis a500(our authorizer fails instead of denying — a known defect); a wrongsecretand a rate-limit denial are both403, with noRetry-After. So a500on the auth path usually means a bad credential, not a SASOM outage. See Authentication. - The rate limit is 200 requests per 60 seconds per credential, across all endpoints. It is low on purpose — use the bulk and catalog endpoints rather than crawling.
- Writes are not idempotent. No endpoint takes an idempotency key. Retrying
PUT /partner/confirm/ordercan deduct a fee twice; retrying a create makes a second listing. See Order Management. - Prices below the floor are clamped, not rejected. Post an ask at
10and you get a201and a live listing at50. Validate prices before sending.
Endpoint map
| Area | Endpoints |
|---|---|
| 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 |
There is no partner endpoint for cancelling or refunding an order once it is in
fulfilment, and no webhook or callback mechanism. Order state is discovered by
polling GET /partner/processing/orders. Cancellations and refunds are handled by
SASOM operations — contact your account manager.
Amounts and units
Every price, payout and fee is a Thai baht amount, not satang. 5500 means
฿5,500.
Need help?
- Authentication — credentials, rotation, and what to do if a secret leaks
- Rate Limiting — the real limit and how to stay under it
- Error Handling — status codes and the actual error bodies
- API Reference — every endpoint
- Submit a ticket