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
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 |
---|---|---|---|
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) |
POST 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" } } }
- 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
Verify user email with token received via email.
Query Parameters
Parameter | Type | Required | Description |
---|---|---|---|
token | string | Required | Verification token from email |
POST Forgot Password
Request a password reset link via email.
Request Body
{ "email": "user@example.com", "role": "reseller" }
POST 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
Get a new access token using a refresh token.
Request Body
{ "refreshToken": "eyJhbGciOiJIUzI1NiIs..." }
POST Logout π Auth Required
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
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
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
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
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
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
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
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
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" } }
- 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
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
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
Synchronize plans from a provider (Admin only).
Orders
Create and manage eSIM orders.
POST Create Order π Auth Required
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
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
Cancel an order by ICCID.
Request Body
{ "iccid": "89000000000000000001", "reason": "Customer requested cancellation" }
Order Usage
Monitor data usage for eSIM orders.
GET Get Order Usage π Auth Required
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
Force refresh usage data from the provider.
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 |
X-RateLimit-Limit
– Request limit per windowX-RateLimit-Remaining
– Remaining requestsX-RateLimit-Reset
– Unix timestamp when limit resets
Β© 2025 Strong eSIM. All rights reserved.
API Version: v1 | Last Updated: June 2025