How an order works
Orders are asynchronous. You get an acknowledgement straight away, and the eSIM itself arrives later on your webhook.- Sign the request. Every call carries three headers derived from your secret key. See Authentication.
- Create the order.
POST /v1/api_partner/orderswith your own order ID and the products you want. - Read the
201. It returns onetopup_idper unit ordered. The eSIM data is not in this response. - Receive a webhook per unit. Once each eSIM is issued, we POST its activation data to your webhook URL. Failed deliveries are retried, so the same unit can arrive more than once.
- Verify the signature, then process. Match the delivery to your order with
external_order_id, and to the unit withtopup_id— which is also the key to deduplicate on.
Base URL
ProductionPOST /v1/api_partner/orders
means https://api.esimstory.com/api/v1/api_partner/orders.
Credentials
Three values, issued per environment:
Production credentials are in your partner dashboard. Sandbox credentials are
issued separately — contact support to have a sandbox account set up.
Sandbox and production do not share credentials. Sandbox orders use test data
and cost nothing, and its webhooks are signed exactly as production ones are, so
you can build and test signature
verification there before
going live.
Before you write any code
Two of these come from us and cannot be worked out from the docs, so collect them first rather than discovering them mid-integration.1
Your product catalogue
The
option_id values you order with are not discoverable through the
API — there is no catalogue endpoint. eSIM Story issues your catalogue as
a CSV when your partner account is set up; ask support if you do not have
it. See Reading your
catalogue for which column
goes in the request.2
A registered webhook URL
The eSIM never appears in an API response, and there is nothing to poll
instead. Give support the URL before you place your first order.
Reading these docs with an AI assistant
The docs are published in machine-readable form, so you can point a coding agent at them rather than pasting pages:State your
option_id values in the prompt. They come from your catalogue
rather than from any endpoint, so an assistant working from the docs alone
cannot find them — and will invent one if you let it.Authentication
Sign your requests
Create an order
The endpoint, the webhook, and the errors