Shop
The call to make first, and the one to make once.
It proves the credential works and names what it connected to, which is what a
setup screen shows back to the seller so they know they pasted the right key. It
is also where two values every other response depends on come from: the shop’s
currency and its timeZone.
Deliberately thin. Nothing about billing, nothing about the owner’s account, no contact email — it answers which shop, not tell me everything about this seller.
Cache it
The values here change about once a year. Read this at setup and hold the result; a consumer that calls it before every other request is spending a quarter of its rate limit on an answer that has not moved.
The object
The full shape, field by field, is on the shop object reference.
GET /shop
The call to make first. It proves the credential works and names what it connected to, which is what a setup screen shows back to the seller so they know they pasted the right key. Deliberately thin — nothing about billing, nothing about the owner's account.
Request
curl https://api.sailo.store/api/v1/shop \ -H "Authorization: Bearer sailo_sk_…"
200
{
"data": {
"id": "3f1c9a80-5e17-4a2b-9c44-2f0d8b71e6a3",
"object": "shop",
"handle": "acme",
"name": "Acme Supply",
"currency": "GBP",
"timeZone": "Europe/London",
"createdAt": "2026-01-09T11:02:44.108Z"
}
}Failures
| code | When it happens |
|---|---|
| unauthorized HTTP 401 | No Authorization header, or a key we do not recognise. |
| forbidden HTTP 403 | A real key, but the shop's plan does not include the API. |
| rate_limited HTTP 429 | Too many calls on this key. Slow down and retry. |
| server_error HTTP 500 | Our fault. The body says nothing about the cause; retry. |