Get a plan
curl --request GET \
--url https://sandbox-api.sakawave.example/v1/esims/catalog/packages/{slug} \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://sandbox-api.sakawave.example/v1/esims/catalog/packages/{slug}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://sandbox-api.sakawave.example/v1/esims/catalog/packages/{slug}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"slug": "united-states-5gb-30d-pkgus5gb",
"name": "United States 5GB",
"description": null,
"region": {
"code": "US",
"name": "United States",
"kind": "country",
"flagEmoji": "πΊπΈ"
},
"dataType": "fixed",
"data": {
"totalBytes": "5368709120",
"dailyCapBytes": null,
"display": "5 GB"
},
"validityDays": 30,
"price": {
"amount": "999",
"currency": "USD",
"display": "9.99"
},
"supportsTopUp": true,
"supportsPlatformSms": false,
"coverage": [
"US"
]
}{
"statusCode": 400,
"message": "Must be a valid identifier.",
"code": "validation_failed",
"errors": [
{
"message": "Must be a valid identifier.",
"field": "accountId",
"code": "custom",
"path": [
"accountId"
]
}
]
}{
"statusCode": 401,
"code": "INVALID_API_KEY",
"message": "Invalid or inactive API credentials."
}{
"statusCode": 404,
"code": "resource_not_found",
"message": "Resource not found."
}{
"statusCode": 429,
"message": "Too many API requests. Try again later.",
"code": "api_key_rate_limit_exceeded",
"retryAfterSeconds": 17
}{
"statusCode": 500,
"code": "internal_server_error",
"message": "An unexpected error occurred."
}{
"statusCode": 503,
"code": "provider_unavailable",
"message": "We could not issue an account number just now. Try again shortly."
}eSIM
Get a plan
One plan, with the full list of countries it covers.
GET
/
v1
/
esims
/
catalog
/
packages
/
{slug}
Get a plan
curl --request GET \
--url https://sandbox-api.sakawave.example/v1/esims/catalog/packages/{slug} \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://sandbox-api.sakawave.example/v1/esims/catalog/packages/{slug}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://sandbox-api.sakawave.example/v1/esims/catalog/packages/{slug}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"slug": "united-states-5gb-30d-pkgus5gb",
"name": "United States 5GB",
"description": null,
"region": {
"code": "US",
"name": "United States",
"kind": "country",
"flagEmoji": "πΊπΈ"
},
"dataType": "fixed",
"data": {
"totalBytes": "5368709120",
"dailyCapBytes": null,
"display": "5 GB"
},
"validityDays": 30,
"price": {
"amount": "999",
"currency": "USD",
"display": "9.99"
},
"supportsTopUp": true,
"supportsPlatformSms": false,
"coverage": [
"US"
]
}{
"statusCode": 400,
"message": "Must be a valid identifier.",
"code": "validation_failed",
"errors": [
{
"message": "Must be a valid identifier.",
"field": "accountId",
"code": "custom",
"path": [
"accountId"
]
}
]
}{
"statusCode": 401,
"code": "INVALID_API_KEY",
"message": "Invalid or inactive API credentials."
}{
"statusCode": 404,
"code": "resource_not_found",
"message": "Resource not found."
}{
"statusCode": 429,
"message": "Too many API requests. Try again later.",
"code": "api_key_rate_limit_exceeded",
"retryAfterSeconds": 17
}{
"statusCode": 500,
"code": "internal_server_error",
"message": "An unexpected error occurred."
}{
"statusCode": 503,
"code": "provider_unavailable",
"message": "We could not issue an account number just now. Try again shortly."
}Error codes
| Status | code | Cause |
|---|---|---|
404 | esim_package_unavailable | The plan has been withdrawn from the catalog. |
401 | INVALID_API_KEY | The key is missing, invalid, inactive, expired, from the other environment, or blocked by its IP allowlist. |
429 | api_key_rate_limit_exceeded | The per-minute limit for this key was exceeded. |
503 | esim_feature_disabled | eSIM is not enabled on this deployment. |
503 | esim_catalog_unavailable | The catalog is empty and could not be refreshed from the provider. |
503 | esim_provider_unavailable | The eSIM provider could not be reached. Nothing was charged. |
Authorizations
A secret API key, sent as Authorization: Bearer sk_test_β¦ in sandbox or Bearer sk_live_β¦ in live.
Path Parameters
Plan slug.
Response
Successful response.
Stable identifier for the plan. Send it when quoting or buying.
Show child attributes
Show child attributes
Available options:
fixed, unlimited, daily Show child attributes
Show child attributes
Required range:
x >= 1Show child attributes
Show child attributes
Whether this plan can extend an eSIM already installed.
Whether the provider flags this plan as SMS-capable. Not a phone number and not inbound SMS: an eSIM has no MSISDN and cannot receive a message. It concerns only messages the platform pushes to the handset.
ISO 3166-1 alpha-2 codes the plan covers.