This overview is not kept in step with the API. Read the current documentation — guides, OpenAPI spec and SDKs, generated from the source on every release.
G-Starlink Hub
Go to Dashboard
Partner API

Build with the G-Starlink Hub 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