Godwit SIM
← Godwit SIM

Godwit SIM for AI agents

Buy a prepaid travel data eSIM for a traveler in three steps, by the JSON API or MCP. No account, no sign-up, no API key.

Find a plan, pay, deliver

  1. Find a plan. GET https://api.godwitsim.com/plans?country=JP&market=UK needs no key. market is AU (AUD), UK (GBP) or US (USD, the default). Or read https://godwitsim.com/plans.md. Pick a plan with at least as many days as the trip and enough data.
  2. Pay. POST https://api.godwitsim.com/checkout with {"planId":"<planId>","market":"UK"} and no key, or your buyer key. Send an Idempotency-Key header (a random string of 22 or more characters) so a retry returns the same order. Save orderSecret (osk_...) and, on your first order, buyerKey (agsk_...): each is shown once. Open checkoutUrl in a browser and pay by card or Link on Stripe Checkout.
  3. Deliver. Poll GET https://api.godwitsim.com/orders/<orderId> with Authorization: Bearer <orderSecret> every few seconds until status is delivered, then forward travelerMessage to the traveler as is. Or POST https://api.godwitsim.com/orders/<orderId>/claim with {"orderSecret":"<osk_...>","phone":"<E.164>","channel":"sms"}: Godwit texts the install details to the traveler and gives them text support for that eSIM.

Routes and tools

Method Path or tool Purpose
GET /plans?country&market Plans for a destination. No key.
POST /checkout Create an order. Body { planId, market?, currency?, billingState?, device?, agentHint?, idempotencyKey? }, or the Idempotency-Key header. Auth: optional Bearer buyerKey.
GET /orders/{orderId} Get an order. Auth: optional Bearer orderSecret or buyerKey.
GET /orders List the buyer's orders. Auth: Bearer buyerKey.
POST /orders/{orderId}/claim Attach the traveler's phone to an eSIM order. Body { orderSecret, phone, channel }. At most 3 phones per order.
POST /orders/{orderId}/topup Pay for more data. Body { packageId }. Auth: Bearer orderSecret or buyerKey.
POST /orders/{orderId}/refund Ask for a refund. Body { reason, notes? }. Auth: Bearer orderSecret or buyerKey.
PUT, GET, DELETE /webhook One low-data callback per buyer key. Auth: Bearer buyerKey.
MCP tool searchDestinations Find a destination by name or code. Key: none.
MCP tool listPlans Plans for a destination, priced for a market. Key: none.
MCP tool getPlan One plan and its price. Key: none.
MCP tool listRecommendations The cheapest plan per country that lasts the stay with enough data. Key: none.
MCP tool createOrder Create an order. Returns checkoutUrl, orderSecret once, and buyerKey once on the first order without one. Pass idempotencyKey to make retries safe. Key: optional buyerKey.
MCP tool getOrder Status only without a key. With one: the eSIM and travelerMessage. Key: optional orderSecret or buyerKey.
MCP tool listOrders Every order the buyer key placed. Key: buyerKey.
MCP tool getUsage Data left on a delivered eSIM. Key: orderSecret or buyerKey.
MCP tool listTopupPackages Top-ups the eSIM can take. Key: orderSecret or buyerKey.
MCP tool createTopup Pay for more data on the same eSIM. Key: orderSecret or buyerKey.
MCP tool claimOrder Attach the traveler's phone to an eSIM order and text them the install details. At most 3 phones per order. Key: orderSecret.
MCP tool requestRefund Ask for a refund under the refund policy. Key: orderSecret or buyerKey.

Order IDs and keys

Keys: every agent order has an ID and an order secret (osk_...). The first order without a buyer key also returns a buyer key (agsk_...). Both are returned once and cannot be recovered. Without a key, GET /orders/{id} returns status only. With the order secret, or the buyer key that bought it, it returns the eSIM, usage, top-up options and travelerMessage. A wrong key gets 401, never a status-only answer. The buyer key also lists orders (GET /orders) and manages a low-data callback (/webhook). There are no accounts or passwords. Never put a key in the traveler message.

Setup and rules

  • MCP config: {"mcpServers":{"godwit-sim":{"url":"https://api.godwitsim.com/mcp"}}}. MCP sends no headers, so pass orderSecret and buyerKey as tool arguments.
  • Forward travelerMessage (under 600 characters) as is. Never rewrite the install link or the codes.
  • The phone must be carrier-unlocked and support eSIM. One purchase is one eSIM for one phone.
  • The eSIM is data only. It has no phone number and cannot make calls, send texts or reach emergency numbers. The traveler keeps their usual SIM for those.
  • Keep the eSIM switched off until arrival. Validity starts when it first connects to a network.
  • Retry POST /checkout with the same Idempotency-Key (idempotencyKey in MCP), never without it. Within 24 hours a retry returns the first response with 200 and Idempotent-Replayed: true, keys included. Without a buyer key the key must be 22 or more random letters, digits, - or _.
  • Poll an order every few seconds, not faster: order reads are limited to 60 a minute per key and per address.
  • Only eSIM orders can be claimed, not top-ups. A claim works for Australian (+61), UK (+44) and US or Canadian (+1) numbers, and an order can move to at most 3 phones. After a claim, the traveler can text Godwit for help, resends and refunds.
  • A refund of an order whose eSIM is still being issued gets 409 order_provisioning: retry in a minute.
  • A low-data callback (PUT /webhook) carries an eventId. Drop an eventId you have seen, and reject a signature timestamp more than 5 minutes off.
  • If the eSIM never installed or never connected, the buyer gets a full refund. The rest is in the refund policy.

Buying by text instead

Text or call +44 7886 075616 (United Kingdom) or +61 420 114 041 (Australia). Use the traveler's own phone, or ask the traveler to send the message. Godwit SIM's AI assistant offers plans, texts a Stripe Checkout link, and texts the eSIM to the same number once paid. On a call, it texts the links to the number that called. Reply HUMAN to reach a person, STOP to opt out.

Files