eSIM Atlas
Go to Dashboard
Partner API

Build with the eSIM Atlas API

Integrate eSIM provisioning into your platform with our RESTful API. Get started in minutes with comprehensive documentation and code examples.

OAuth 2.0

Secure client credentials authentication

Real-time

Instant eSIM activation webhooks

Global

Coverage in 190+ countries

Base URL
https://api.slowboat.com.au/v1

Authentication

Secure your API requests using OAuth 2.0 Client Credentials flow.

1

Get Access Token

Exchange your API credentials for an access token. Tokens expire after 1 hour.

bash
curl -X POST https://api.slowboat.com.au/v1/oauth/token \
  -H "Content-Type: application/json" \
  -d '{
    "grant_type": "client_credentials",
    "client_id": "pk_live_your_client_id",
    "client_secret": "sk_live_your_client_secret"
  }'
2

Token Response

json
{
  "access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
  "token_type": "Bearer",
  "expires_in": 3600,
  "scope": "read:products write:orders read:orders read:esims"
}
3

Make Authenticated Requests

Include the token in the Authorization header for all API requests.

bash
curl https://api.slowboat.com.au/v1/products \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
  -H "Content-Type: application/json"

API Endpoints

Complete reference for all available API endpoints.

Products

Retrieve a paginated list of available eSIM products with optional filtering.

Query Parameters

ParameterTypeDescription
regionstringFilter by region (US, EU, ASIA, GLOBAL)
pageintegerPage number (default: 1)
limitintegerResults per page (default: 20, max: 100)

Response

json
{
  "data": [
    {
      "id": "prod_eu5gb30d",
      "name": "Europe eSIM 5GB",
      "description": "5GB data valid for 30 days",
      "coverage": ["FR", "DE", "IT", "ES", "UK", "..."],
      "data_amount_gb": 5,
      "validity_days": 30,
      "price": 2999,
      "currency": "USD",
      "status": "active"
    }
  ],
  "meta": {
    "total": 150,
    "page": 1,
    "per_page": 20,
    "total_pages": 8
  }
}

Orders

eSIMs

Webhooks

Receive real-time notifications for order and eSIM events.

Available Events

order.created

New order placed

order.fulfilled

eSIM assigned to order

order.failed

Order fulfillment failed

esim.activated

eSIM installed on device

esim.data_low

Data below 20%

esim.expired

eSIM validity ended

Webhook Payload

json
{
  "id": "evt_abc123",
  "type": "order.fulfilled",
  "created_at": "2025-01-15T10:35:00Z",
  "data": {
    "order_id": "ord_abc123xyz",
    "status": "fulfilled",
    "esims": [{
      "iccid": "8901234567890123456",
      "activation_code": "LPA:1$smdp.io$K2-ABCD"
    }]
  }
}
Signature Verification: Always verify the X-Webhook-Signature header using your webhook secret.

Error Handling

All errors return a consistent JSON structure with actionable information.

json
{
  "error": {
    "code": "invalid_request",
    "message": "The product_id field is required",
    "param": "product_id",
    "doc_url": "https://docs.slowboat.com.au/errors/invalid_request"
  },
  "request_id": "req_abc123xyz"
}

HTTP Status Codes

CodeDescription
200Success
400Bad Request - Invalid parameters
401Unauthorized - Invalid or expired token
403Forbidden - Insufficient permissions
404Not Found - Resource doesn't exist
429Rate Limited - Too many requests
500Server Error - Something went wrong

Rate Limits

API rate limits vary by plan. Exceeded limits return 429 status.

Starter
100
requests / minute
Professional
500
requests / minute
Enterprise
2,000
requests / minute