eSIM API – Complete API Reference

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:

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

/auth/register

Register a new user account.

Request Body

{
  "email": "user@example.com",
  "password": "SecurePassword123!",
  "role": "reseller",
  "name": "John Doe"
}

Body Parameters

ParameterTypeRequiredDescription
emailstringRequiredValid email address
passwordstringRequiredUser password (min 8 characters, must include uppercase, lowercase, number, special character for resellers/developers)
rolestringRequiredUser role – one of: mobile_user, reseller, developer
namestringOptionalUser’s full name

POST Login

/auth/login

Authenticate with email and password to obtain access and refresh tokens.

Account Lockout: After 5 failed login attempts, account is locked for 15 minutes.

Request Body

{
  "email": "user@example.com",
  "password": "SecurePassword123!",
  "role": "reseller"
}

Body Parameters

ParameterTypeRequiredDescription
emailstringRequiredUser’s email address
passwordstringRequiredUser’s password
rolestringOptionalSpecify role if user has multiple accounts with same email

GET Verify user email address with verification token

/auth/verify-email

Verify user email address using verification token sent to email.

POST Resend email verification link

/auth/resend-verification

Send a new verification link to the user’s email.

Request Body

{
  "email": "user@example.com",
  "role": "reseller"
}

Body Parameters

ParameterTypeRequiredDescription
emailstringRequiredEmail address to resend verification to
rolestringOptionalUser role if multiple accounts exist

POST Refresh access token using refresh token Auth Required

/auth/refresh-token

Exchange a valid refresh token for a new access token.

Request Body

{
  "refreshToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
}

POST Logout user and invalidate session tokens Auth Required

/auth/logout

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

/auth/forgot-password

Send password reset email.

Request Body

{
  "email": "user@example.com",
  "role": "reseller"
}

POST Reset password using reset token

/auth/reset-password

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

/auth/sessions

Retrieve all active login sessions for the authenticated user.

DELETE Revoke a specific session (logout from specific device) Auth Required

/auth/sessions/:sessionId

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

/users/me

Fetch authenticated user’s profile with role-specific data.

PUT Update the current user’s profile information Auth Required

/users/me

Update user profile information.

Request Body

{
  "name": "John Doe",
  "companyName": "Acme Corporation"
}

PUT Change the current user’s password Auth Required

/users/me/password

Update password with validation of old password.

Request Body

{
  "old_password": "CurrentPassword123!",
  "new_password": "NewSecurePassword456!",
  "confirm_password": "NewSecurePassword456!"
}

Body Parameters

ParameterTypeRequiredDescription
old_passwordstringRequiredCurrent password
new_passwordstringRequiredNew password
confirm_passwordstringRequiredNew 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

/credits/balance

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)

/credits/transactions

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

/notification-preferences

Get current notification preferences for the authenticated user.

PUT Update Notification Preferences Auth Required

/notification-preferences

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

/notification-preferences/reset

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

/orders

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

ParameterTypeRequiredDescription
plan_idstringRequiredUUID of the eSIM plan to order
quantitynumberOptionalNumber of eSIMs to order (default: 1)
provider_idstringOptionalSpecific provider to use (overrides plan default)
reseller_profile_idstringOptionalReseller profile for branding (uses default if not provided)
end_customer_emailstringOptionalCustomer’s email for QR code delivery
customer_namestringOptionalCustomer’s full name

GET Get detailed status and information for a specific order Auth Required

/orders/:order_id

Retrieve details for a specific order.

GET Get a paginated list of orders for the authenticated user Auth Required

/orders

Get paginated list of user’s orders with optional filtering.

POST Cancel an order and receive refund (if eligible) Auth Required

/orders/:order_id/cancel

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

/orders/:order_id/usage

Get data usage statistics for an active eSIM order.

POST Force refresh usage data from the provider (bypasses cache) Auth Required

/orders/:order_id/usage/refresh

Force refresh usage data from the provider, bypassing cache.

GET Get Order Usage Auth Required

/v2/order-usage/:order_id

Get order usage information (v2 endpoint).

GET Get Top-up Plans Auth Required

/orders/:order_id/topup-plans

Retrieve available top-up plans for an order.

POST Top-up Order Auth Required

/orders/:order_id/topup

Add data to an existing eSIM order.

Request Body

{
  "topupId": "b3JkZXItdXVpZDpVU0FfMUdCXzdEX1RPUFVQ"
}

GET Get Order Top-ups Auth Required

/orders/:order_id/topups

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

/plans

Get available eSIM plans with filtering and pagination.

GET Get list of all countries with available eSIM plans and minimum prices Auth Required

/plans/countries

Get list of all countries with available eSIM plans and minimum prices.

GET Get detailed information about a specific plan Auth Required

/plans/:id

Retrieve details for a specific eSIM plan by ID.

GET Get timestamp when plans were last updated Auth Required

/plans/last-updated

Get timestamp when plans were last updated. Useful for cache invalidation.

GET Get incremental changes to plans since a specific timestamp Auth Required

/plans/changes

Get incremental changes to plans since a specific timestamp.

GET Get statistics about total coverage (countries and regions) Auth Required

/plans/stats/coverage

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)

/reseller/profile

Retrieve all reseller branding profiles.

GET Get Specific Profile Auth Required (Reseller role)

/reseller/profile/:id

Get details for a specific reseller profile.

POST Create New Profile Auth Required (Reseller role)

/reseller/profile

Create a new branding profile for reseller.

PUT Update Profile Auth Required (Reseller role)

/reseller/profile/:id

Update an existing reseller profile.

DELETE Delete Profile Auth Required (Reseller role)

/reseller/profile/:id

Delete a reseller profile.

GET Get Onboarding Status Auth Required (Reseller role)

/reseller/onboarding-status

Get reseller onboarding completion status.

POST Upload Logo Auth Required (Reseller role)

/reseller/upload-logo

Upload a reseller logo file.

GET Get All Pricing Auth Required (Reseller role)

/reseller/pricing

Retrieve custom pricing overrides for plans.

GET Get Specific Plan Pricing Auth Required (Reseller role)

/reseller/pricing/:plan_id

Get pricing for a specific plan.

POST Create/Update Plan Pricing Auth Required (Reseller role)

/reseller/pricing

Set custom pricing for a plan (markup % or fixed price).

DELETE Delete Plan Pricing Auth Required (Reseller role)

/reseller/pricing/:plan_id

Remove custom pricing for a plan.

GET Get All Associated Users Auth Required (Reseller role)

/reseller/users

Get all users associated with the reseller.

GET Get Specific User Details Auth Required (Reseller role)

/reseller/users/:userId

Get details for a specific associated user.

GET Get All Orders Auth Required (Reseller role)

/reseller/orders

Get all orders for the reseller.

GET Get Dashboard Statistics Auth Required (Reseller role)

/reseller/dashboard

Retrieve dashboard data including account balance, pending invoices, recent orders, and transactions.

GET Get SMTP Configuration Auth Required (Reseller role)

/reseller/profile/:id/smtp

Retrieve SMTP configuration for a reseller profile. Password is never returned.

PUT Update SMTP Configuration Auth Required (Reseller role)

/reseller/profile/:id/smtp

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)

/reseller/profile/:id/smtp/test

Test the SMTP connection for a reseller profile.

DELETE Delete SMTP Configuration Auth Required (Reseller role)

/reseller/profile/:id/smtp

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

/webhook-subscriptions

Get user’s webhook subscriptions with available event types.

POST Create Webhook Subscription Auth Required

/webhook-subscriptions

Create a new webhook subscription with automatic test.

GET Get Single Webhook Subscription Auth Required

/webhook-subscriptions/:id

Retrieve details for a specific webhook subscription.

PUT Update Webhook Subscription Auth Required

/webhook-subscriptions/:id

Update webhook subscription settings.

DELETE Delete Webhook Subscription Auth Required

/webhook-subscriptions/:id

Delete a webhook subscription.

POST Send Test Webhook Auth Required

/webhook-subscriptions/:id/test

Send a test webhook to the endpoint.

GET Get Webhook Delivery Logs Auth Required

/webhook-subscriptions/:id/logs

Get webhook delivery history for a subscription.

Uploads

Upload files such as reseller logos.

POST Upload Logo Auth Required (Reseller only)

/uploads/logo

Upload a reseller logo file (PNG/JPEG, max 5MB).

File Requirements:
  • 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