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
https://api.slowboat.com.au/v1Authentication
Secure your API requests using OAuth 2.0 Client Credentials flow.
Get Access Token
Exchange your API credentials for an access token. Tokens expire after 1 hour.
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"
}'Token Response
{
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"token_type": "Bearer",
"expires_in": 3600,
"scope": "read:products write:orders read:orders read:esims"
}Make Authenticated Requests
Include the token in the Authorization header for all API requests.
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
| Parameter | Type | Description |
|---|---|---|
region | string | Filter by region (US, EU, ASIA, GLOBAL) |
page | integer | Page number (default: 1) |
limit | integer | Results per page (default: 20, max: 100) |
Response
{
"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.createdNew order placed
order.fulfilledeSIM assigned to order
order.failedOrder fulfillment failed
esim.activatedeSIM installed on device
esim.data_lowData below 20%
esim.expiredeSIM validity ended
Webhook Payload
{
"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"
}]
}
}X-Webhook-Signature header using your webhook secret.Error Handling
All errors return a consistent JSON structure with actionable information.
{
"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
| Code | Description |
|---|---|
200 | Success |
400 | Bad Request - Invalid parameters |
401 | Unauthorized - Invalid or expired token |
403 | Forbidden - Insufficient permissions |
404 | Not Found - Resource doesn't exist |
429 | Rate Limited - Too many requests |
500 | Server Error - Something went wrong |
Rate Limits
API rate limits vary by plan. Exceeded limits return 429 status.