API security & limits
API keys are designed to be safe to hand to a third-party tool or LLM. Even if a key leaks, the damage it can do is tightly bounded. Here's exactly what protects you.
Read-only by design
Keys can read your data but never change it. There's no way to grant a key write access — placing orders, editing prices, deploying Actions, changing settings, and the like are all off-limits to API keys. A token handed to an outside agent simply cannot mutate your shop.
Default-deny
Access is default-deny: a key can only reach the specific endpoints we've explicitly opened for programmatic use (the curated agent surface). Anything else — including a brand-new endpoint we ship tomorrow — is rejected with a 403 until it's deliberately allowed. Nothing is exposed by accident.
A key can't manage keys
API-key management (creating, listing, or revoking keys) requires an interactive, signed-in session — it can never be done with an API key. So a leaked read-only token can't escalate by minting fresh credentials or quietly revoking your others.
Sensitive surfaces are walled off
Marketplace partner pass-through (raw Shopee / Lazada / TikTok partner calls), account impersonation / sign-in-as, billing actions, and similar high-risk surfaces are explicitly excluded from key access — separately from the read-only rule, as a second layer of defense.
Scoped to your account
A key inherits your account's view and nothing more. It can't see another seller's shops, products, or numbers — every request is evaluated as you.
Rate limit: 60 requests / minute
Each API key is throttled to 60 requests per minute. The limit is a token bucket: up to 60 requests in a burst, then refilling at 1 request per second. Go over and you'll get:
HTTP 429 Too Many Requests
Retry-After: <seconds>
Honor the Retry-After header and pace your calls — well-behaved scripts rarely hit this. The limit is applied per key, so one runaway agent can't starve the rest of your integrations.
Lifecycle
- Shown once, hashed at rest — we keep only a SHA-256 hash of the token, never the token itself.
- Optional expiry — set a key to expire in 30 / 60 / 90 / 365 days, or never.
- Instant revocation — revoking a key blocks it immediately, on the very next request.