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

Parameter Type Required Description
email string Required User’s email address
password string Required Strong password (min 8 chars, uppercase, lowercase, number, special char)
role string Required User role: “user” or “reseller”
name string Required Full name of the user
companyName string Optional Company 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

Parameter Type Required Description
token string Required Verification 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

Parameter Type Required Description
name string Optional User’s full name
companyName string Optional Company name
phoneNumber string Optional Phone 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

Parameter Type Default Description
page integer 1 Page number
limit integer 20 Items 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

Parameter Type Required Description
name string Required Profile name
logo_url string Optional URL to profile logo
email_sender_name string Optional Name shown in emails
is_default boolean Optional Set 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

Parameter Type Required Description
country string Optional ISO country code (e.g., “US”)
region string Optional Region 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

Parameter Type Required Description
plan_id integer Required Plan 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

Parameter Type Required Description
plan_id integer Required ID of the plan to purchase
quantity integer Required Number of eSIMs to order
reseller_profile_id integer Optional Reseller profile to use
end_customer_email string Required Customer’s email address
customer_name string Optional Customer’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

Parameter Type Default Description
page integer 1 Page number
limit integer 10 Items per page
status string all Filter 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 Category Rate Limit Window
Authentication 5 requests per minute
General API 100 requests per minute
Order Creation 20 requests per minute
Usage Refresh 1 request per 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