eSIM API Documentation
Complete REST API for managing eSIM orders, credits, and user accounts
Base URL
Production: https://api.strongesim.com/api/v1
📚 Developer Resources:
- Interactive API Docs: Swagger UI Documentation – Try out endpoints directly in your browser
- Postman Collection: Download Collection – Import into Postman for easy API testing
Authentication: All authenticated endpoints require a JWT Bearer token in the Authorization header:
Authorization: Bearer {access_token}
X-Session-ID: {session_id}Rate Limiting:
- Login/Registration: 5 attempts per IP per 15 minutes
- Password reset: 3 attempts per email per hour
- Other endpoints: 1000 requests per user per hour
Authentication
Manage user authentication, registration, and session management.
POST Register a new user account
Register a new user account.
Request Body
{
"email": "user@example.com",
"password": "SecurePassword123!",
"role": "reseller",
"name": "John Doe"
}Body Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| string | Required | Valid email address | |
| password | string | Required | User password (min 8 characters, must include uppercase, lowercase, number, special character for resellers/developers) |
| role | string | Required | User role – one of: mobile_user, reseller, developer |
| name | string | Optional | User’s full name |
POST Login
Authenticate with email and password to obtain access and refresh tokens.
Request Body
{
"email": "user@example.com",
"password": "SecurePassword123!",
"role": "reseller"
}Body Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| string | Required | User’s email address | |
| password | string | Required | User’s password |
| role | string | Optional | Specify role if user has multiple accounts with same email |
GET Verify user email address with verification token
Verify user email address using verification token sent to email.
POST Resend email verification link
Send a new verification link to the user’s email.
Request Body
{
"email": "user@example.com",
"role": "reseller"
}Body Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| string | Required | Email address to resend verification to | |
| role | string | Optional | User role if multiple accounts exist |
POST Refresh access token using refresh token Auth Required
Exchange a valid refresh token for a new access token.
Request Body
{
"refreshToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
}POST Logout user and invalidate session tokens Auth Required
Logout user and invalidate tokens. If session_id omitted, logs out all sessions.
Request Body (Optional)
{
"session_id": "{{session_id}}"
}POST Request password reset link via email
Send password reset email.
Request Body
{
"email": "user@example.com",
"role": "reseller"
}POST Reset password using reset token
Reset password using token from email.
Request Body
{
"token": "reset-token-from-email",
"password": "NewSecurePassword123!",
"confirmPassword": "NewSecurePassword123!",
"role": "reseller"
}GET Get all active login sessions for current user Auth Required
Retrieve all active login sessions for the authenticated user.
DELETE Revoke a specific session (logout from specific device) Auth Required
Logout from a specific device/session.
Users
Manage user profiles and account information.
GET Get the current authenticated user’s profile with role-specific data Auth Required
Fetch authenticated user’s profile with role-specific data.
PUT Update the current user’s profile information Auth Required
Update user profile information.
Request Body
{
"name": "John Doe",
"companyName": "Acme Corporation"
}PUT Change the current user’s password Auth Required
Update password with validation of old password.
Request Body
{
"old_password": "CurrentPassword123!",
"new_password": "NewSecurePassword456!",
"confirm_password": "NewSecurePassword456!"
}Body Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| old_password | string | Required | Current password |
| new_password | string | Required | New password |
| confirm_password | string | Required | New password confirmation (must match new_password) |
Credits and Deposits
Manage credit balance and view transactions.
GET Get current credit balance for the authenticated user Auth Required
Retrieve current credit balance for reseller/developer. Response differs by billing mode.
GET Get paginated list of credit transactions with optional filtering Auth Required (Reseller only)
Retrieve credit transactions with filtering by type, status, and date range.
Notification Preferences
Manage notification settings for your account.
GET Get Notification Preferences Auth Required
Get current notification preferences for the authenticated user.
PUT Update Notification Preferences Auth Required
Update notification preferences.
Request Body
{
"preferences": {
"low_data_50": true,
"low_data_20": true,
"low_data_10": false,
"expiry_warning": true,
"activation": false
}
}POST Reset Notification Preferences Auth Required
Reset notification preferences to default values.
Request Body
{
"low_data_50": true,
"low_data_20": true,
"low_data_10": true,
"expiry_warning": true,
"activation": true
}Orders
Create and manage eSIM orders.
POST Create a new eSIM order Auth Required
Create a new eSIM order. For Resellers: Must have completed onboarding, must have sufficient credit balance.
Request Body
{
"plan_id": "{{plan_id}}",
"quantity": 1,
"reseller_profile_id": "{{reseller_profile_id}}",
"end_customer_email": "customer@example.com",
"customer_name": "John Doe"
}Body Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| plan_id | string | Required | UUID of the eSIM plan to order |
| quantity | number | Optional | Number of eSIMs to order (default: 1) |
| provider_id | string | Optional | Specific provider to use (overrides plan default) |
| reseller_profile_id | string | Optional | Reseller profile for branding (uses default if not provided) |
| end_customer_email | string | Optional | Customer’s email for QR code delivery |
| customer_name | string | Optional | Customer’s full name |
GET Get detailed status and information for a specific order Auth Required
Retrieve details for a specific order.
GET Get a paginated list of orders for the authenticated user Auth Required
Get paginated list of user’s orders with optional filtering.
POST Cancel an order and receive refund (if eligible) Auth Required
Cancel an order and receive refund if eligible.
Request Body
{
"esimTranNo": "ESIM-20240115-001",
"iccid": "{{iccid}}",
"reason": "Customer requested cancellation"
}GET Get data usage statistics for an active eSIM order Auth Required
Get data usage statistics for an active eSIM order.
POST Force refresh usage data from the provider (bypasses cache) Auth Required
Force refresh usage data from the provider, bypassing cache.
GET Get Order Usage Auth Required
Get order usage information (v2 endpoint).
GET Get Top-up Plans Auth Required
Retrieve available top-up plans for an order.
POST Top-up Order Auth Required
Add data to an existing eSIM order.
Request Body
{
"topupId": "b3JkZXItdXVpZDpVU0FfMUdCXzdEX1RPUFVQ"
}GET Get Order Top-ups Auth Required
Get list of all top-ups for an order.
Plans
Browse and manage available eSIM data plans.
GET Get a paginated list of all active eSIM plans with optional filtering Auth Required
Get available eSIM plans with filtering and pagination.
GET Get list of all countries with available eSIM plans and minimum prices Auth Required
Get list of all countries with available eSIM plans and minimum prices.
GET Get detailed information about a specific plan Auth Required
Retrieve details for a specific eSIM plan by ID.
GET Get timestamp when plans were last updated Auth Required
Get timestamp when plans were last updated. Useful for cache invalidation.
GET Get incremental changes to plans since a specific timestamp Auth Required
Get incremental changes to plans since a specific timestamp.
GET Get statistics about total coverage (countries and regions) Auth Required
Get statistics about total coverage including countries and regions.
Reseller API
Manage reseller profiles, pricing settings, and dashboard.
GET Get All Reseller Profiles Auth Required (Reseller role)
Retrieve all reseller branding profiles.
GET Get Specific Profile Auth Required (Reseller role)
Get details for a specific reseller profile.
POST Create New Profile Auth Required (Reseller role)
Create a new branding profile for reseller.
PUT Update Profile Auth Required (Reseller role)
Update an existing reseller profile.
DELETE Delete Profile Auth Required (Reseller role)
Delete a reseller profile.
GET Get Onboarding Status Auth Required (Reseller role)
Get reseller onboarding completion status.
POST Upload Logo Auth Required (Reseller role)
Upload a reseller logo file.
GET Get All Pricing Auth Required (Reseller role)
Retrieve custom pricing overrides for plans.
GET Get Specific Plan Pricing Auth Required (Reseller role)
Get pricing for a specific plan.
POST Create/Update Plan Pricing Auth Required (Reseller role)
Set custom pricing for a plan (markup % or fixed price).
DELETE Delete Plan Pricing Auth Required (Reseller role)
Remove custom pricing for a plan.
GET Get All Associated Users Auth Required (Reseller role)
Get all users associated with the reseller.
GET Get Specific User Details Auth Required (Reseller role)
Get details for a specific associated user.
GET Get All Orders Auth Required (Reseller role)
Get all orders for the reseller.
GET Get Dashboard Statistics Auth Required (Reseller role)
Retrieve dashboard data including account balance, pending invoices, recent orders, and transactions.
GET Get SMTP Configuration Auth Required (Reseller role)
Retrieve SMTP configuration for a reseller profile. Password is never returned.
PUT Update SMTP Configuration Auth Required (Reseller role)
Update or configure custom SMTP settings for a reseller profile. Password is encrypted using AES-256-CBC.
Request Body
{
"smtp_host": "smtp.example.com",
"smtp_port": 587,
"smtp_user": "user@example.com",
"smtp_pass": "password",
"smtp_secure": false,
"email_from": "support@company.com",
"email_from_name": "Company Support",
"use_custom_smtp": true
}POST Test SMTP Configuration Auth Required (Reseller role)
Test the SMTP connection for a reseller profile.
DELETE Delete SMTP Configuration Auth Required (Reseller role)
Disable custom SMTP configuration and clear all SMTP data. Emails will be sent using default system SMTP.
Webhook Subscriptions
Manage webhook subscriptions for real-time notifications.
GET Get All Webhook Subscriptions Auth Required
Get user’s webhook subscriptions with available event types.
POST Create Webhook Subscription Auth Required
Create a new webhook subscription with automatic test.
GET Get Single Webhook Subscription Auth Required
Retrieve details for a specific webhook subscription.
PUT Update Webhook Subscription Auth Required
Update webhook subscription settings.
DELETE Delete Webhook Subscription Auth Required
Delete a webhook subscription.
POST Send Test Webhook Auth Required
Send a test webhook to the endpoint.
GET Get Webhook Delivery Logs Auth Required
Get webhook delivery history for a subscription.
Uploads
Upload files such as reseller logos.
POST Upload Logo Auth Required (Reseller only)
Upload a reseller logo file (PNG/JPEG, max 5MB).
- Maximum file size: 5MB
- Supported formats: PNG, JPG, JPEG, GIF
- Recommended dimensions: 200x200px minimum
Request
Form data with file upload:
Content-Type: multipart/form-data logo: [binary file data]
© 2025 eSIM API. All rights reserved.
API Version: v1.0.0 | Last Updated: January 2025
