Strong eSIM API Documentation

Strong eSIM API Documentation

Complete API reference for StrongESIM.com

Base URL

https://api.strongesim.com/api/v1

All API endpoints require the base URL above. The API uses Bearer token authentication for most endpoints.

Authentication

Manage user authentication, registration, and session management.

POST Register New User

/auth/register

Create a new user account with specified role (user/reseller).

Request Body

{
  "email": "reseller@example.com",
  "password": "TestPassword123!",
  "role": "reseller",
  "name": "John Doe",
  "companyName": "Reseller Inc."
}

Body Parameters

ParameterTypeRequiredDescription
emailstringRequiredUser’s email address
passwordstringRequiredStrong password (min 8 chars, uppercase, lowercase, number, special char)
rolestringRequiredUser role: “user” or “reseller”
namestringRequiredFull name of the user
companyNamestringOptionalCompany name (recommended for resellers)
Note: After registration, users must verify their email address before they can log in. A verification email will be sent automatically.

POST Login

/auth/login

Authenticate user and receive access tokens.

Request Body

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

Response

{
  "success": true,
  "data": {
    "accessToken": "eyJhbGciOiJIUzI1NiIs...",
    "refreshToken": "eyJhbGciOiJIUzI1NiIs...",
    "session_id": "sess_abc123...",
    "user": {
      "id": 1,
      "email": "user@example.com",
      "role": "reseller",
      "name": "John Doe"
    }
  }
}
Important: Store the accessToken and session_id securely. You’ll need both for authenticated requests.
Important Security Notes:
  • Access tokens expire after 15 minutes
  • Use the refresh token endpoint to get new access tokens
  • Session IDs help track active sessions across devices
  • Always use HTTPS when making API calls
  • Never expose tokens in client-side code

GET Verify Email

/auth/verify-email?token={verification_token}

Verify user email with token received via email.

Query Parameters

ParameterTypeRequiredDescription
tokenstringRequiredVerification token from email

POST Forgot Password

/auth/forgot-password

Request a password reset link via email.

Request Body

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

POST Reset Password

/auth/reset-password

Reset password using token from reset email.

Request Body

{
  "token": "reset_token_from_email",
  "password": "NewPassword123!",
  "confirmPassword": "NewPassword123!",
  "role": "reseller"
}

POST Refresh Token

/auth/refresh-token

Get a new access token using a refresh token.

Request Body

{
  "refreshToken": "eyJhbGciOiJIUzI1NiIs..."
}

POST Logout πŸ”’ Auth Required

/auth/logout

Log out current session or all sessions.

Headers

Authorization: Bearer {access_token}
X-Session-ID: {session_id}

Request Body (Optional)

{
  "session_id": "sess_abc123..."
}

GET List Active Sessions πŸ”’ Auth Required

/auth/sessions

View all active login sessions for the current user.

Headers

Authorization: Bearer {access_token}
X-Session-ID: {session_id}

User Management

Manage user profiles and account information.

GET Get My Profile πŸ”’ Auth Required

/users/me

Retrieve the current user’s profile information.

Headers

Authorization: Bearer {access_token}
X-Session-ID: {session_id}

Response

{
  "success": true,
  "data": {
    "id": 1,
    "email": "user@example.com",
    "name": "John Doe",
    "role": "reseller",
    "companyName": "Reseller Inc.",
    "phoneNumber": "+1234567890",
    "emailVerified": true,
    "createdAt": "2025-01-15T10:00:00Z"
  }
}

PUT Update My Profile πŸ”’ Auth Required

/users/me

Update the current user’s profile information.

Request Body

{
  "name": "Updated Name",
  "companyName": "Updated Company Name",
  "phoneNumber": "+1234567890"
}

Body Parameters

ParameterTypeRequiredDescription
namestringOptionalUser’s full name
companyNamestringOptionalCompany name
phoneNumberstringOptionalPhone number with country code

Credits & Payments

Manage credit balance and view transactions.

GET Get Credit Balance πŸ”’ Auth Required

/credits/balance

Get the current credit balance for the authenticated user.

Response

{
  "success": true,
  "data": {
    "balance": 1250.50,
    "currency": "USD",
    "lastUpdated": "2025-01-15T10:00:00Z"
  }
}

GET List Credit Transactions πŸ”’ Auth Required

/credits/transactions

Get a paginated list of credit transactions.

Query Parameters

ParameterTypeDefaultDescription
pageinteger1Page number
limitinteger20Items per page (max 100)

Reseller Management

Manage reseller profiles and branding settings.

GET Get My Profiles πŸ”’ Auth Required

/reseller/profile

Get all profiles for the authenticated reseller.

Response

{
  "success": true,
  "data": [
    {
      "id": 1,
      "name": "My Store",
      "logo_url": "https://example.com/logo.png",
      "email_sender_name": "My Store Support",
      "is_default": true,
      "created_at": "2025-01-15T10:00:00Z"
    }
  ]
}

POST Create Profile πŸ”’ Auth Required

/reseller/profile

Create a new reseller profile with custom branding.

Request Body

{
  "name": "My Store",
  "logo_url": "https://example.com/logo.png",
  "email_sender_name": "My Store Support",
  "is_default": true
}

Body Parameters

ParameterTypeRequiredDescription
namestringRequiredProfile name
logo_urlstringOptionalURL to profile logo
email_sender_namestringOptionalName shown in emails
is_defaultbooleanOptionalSet as default profile

POST Upload Logo πŸ”’ Auth Required

/reseller/upload-logo

Upload a logo image for reseller branding.

Request Body

Form data with file upload:

Content-Type: multipart/form-data

logo: [binary file data]

Response

{
  "success": true,
  "data": {
    "logo_url": "https://api.strongesim.com/uploads/logos/abc123.png"
  }
}
File Requirements:
  • Maximum file size: 5MB
  • Supported formats: PNG, JPG, JPEG, GIF
  • Recommended dimensions: 200x200px minimum

eSIM Plans

Browse and manage available eSIM data plans.

GET List Plans πŸ”’ Auth Required

/plans

Get available eSIM plans filtered by country and region.

Query Parameters

ParameterTypeRequiredDescription
countrystringOptionalISO country code (e.g., “US”)
regionstringOptionalRegion code (e.g., “CA” for California)

Response

{
  "success": true,
  "data": [
    {
      "id": 1,
      "name": "USA 5GB - 30 Days",
      "data_amount_gb": 5,
      "validity_days": 30,
      "price": 25.00,
      "currency": "USD",
      "countries": ["US"],
      "regions": ["North America"],
      "features": [
        "5G/4G/LTE Coverage",
        "Hotspot Enabled",
        "No Daily Limits"
      ]
    }
  ]
}

GET Get Plan by ID πŸ”’ Auth Required

/plans/{plan_id}

Get detailed information about a specific plan.

Path Parameters

ParameterTypeRequiredDescription
plan_idintegerRequiredPlan identifier

POST Sync Provider Plans πŸ”’ Admin Only

/plans/sync/{provider_id}

Synchronize plans from a provider (Admin only).

Admin Access Required: This endpoint is restricted to users with admin role.

Orders

Create and manage eSIM orders.

POST Create Order πŸ”’ Auth Required

/orders

Create a new eSIM order.

Request Body

{
  "plan_id": 1,
  "quantity": 1,
  "reseller_profile_id": null,
  "end_customer_email": "customer@example.com",
  "customer_name": "John Doe"
}

Body Parameters

ParameterTypeRequiredDescription
plan_idintegerRequiredID of the plan to purchase
quantityintegerRequiredNumber of eSIMs to order
reseller_profile_idintegerOptionalReseller profile to use
end_customer_emailstringRequiredCustomer’s email address
customer_namestringOptionalCustomer’s name

Response

{
  "success": true,
  "data": {
    "id": 123,
    "order_number": "ORD-2025-0123",
    "status": "completed",
    "esims": [
      {
        "iccid": "89000000000000000001",
        "qr_code": "data:image/png;base64,..."
      }
    ],
    "total_amount": 25.00,
    "currency": "USD"
  }
}

GET List My Orders πŸ”’ Auth Required

/orders

Get a list of your orders with pagination.

Query Parameters

ParameterTypeDefaultDescription
pageinteger1Page number
limitinteger10Items per page
statusstringallFilter by status: all, pending, completed, cancelled

POST Cancel Order πŸ”’ Auth Required

/orders/{order_id}/cancel

Cancel an order by ICCID.

Request Body

{
  "iccid": "89000000000000000001",
  "reason": "Customer requested cancellation"
}
Note: Orders can only be cancelled if the eSIM has not been activated. Once activated, cancellation may not be possible.

Order Usage

Monitor data usage for eSIM orders.

GET Get Order Usage πŸ”’ Auth Required

/orders/{order_id}/usage

Get current data usage for an order.

Response

{
  "success": true,
  "data": {
    "order_id": 123,
    "total_data_mb": 5120,
    "used_data_mb": 1234,
    "remaining_data_mb": 3886,
    "usage_percentage": 24.1,
    "last_updated": "2025-01-15T10:00:00Z",
    "esims": [
      {
        "iccid": "89000000000000000001",
        "used_mb": 1234,
        "status": "active"
      }
    ]
  }
}

POST Force Update Usage πŸ”’ Auth Required

/orders/{order_id}/usage/refresh

Force refresh usage data from the provider.

Rate Limit: This endpoint has a rate limit of 1 request per 5 minutes per order to prevent excessive API calls to providers.

Error Handling

The API uses standard HTTP status codes and returns detailed error messages.

Common Error Responses

401 Unauthorized

{
  "success": false,
  "error": {
    "code": "UNAUTHORIZED",
    "message": "Invalid or expired token"
  }
}

400 Bad Request

{
  "success": false,
  "error": {
    "code": "VALIDATION_ERROR",
    "message": "Validation failed",
    "details": {
      "email": "Invalid email format",
      "password": "Password must be at least 8 characters"
    }
  }
}

429 Too Many Requests

{
  "success": false,
  "error": {
    "code": "RATE_LIMIT_EXCEEDED",
    "message": "Too many requests. Please try again later.",
    "retry_after": 60
  }
}

Rate Limiting

The API implements rate limiting to ensure fair usage and system stability.

Rate Limit Rules

Endpoint CategoryRate LimitWindow
Authentication5 requestsper minute
General API100 requestsper minute
Order Creation20 requestsper minute
Usage Refresh1 requestper 5 minutes per order
Rate Limit Headers:
  • X-RateLimit-Limit – Request limit per window
  • X-RateLimit-Remaining – Remaining requests
  • X-RateLimit-Reset – Unix timestamp when limit resets

Β© 2025 Strong eSIM. All rights reserved.

API Version: v1 | Last Updated: June 2025