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
