Manage the lifecycle of a SIM card including suspension, disconnection, reconnection, device swapping, balance adjustments, and line management.
Suspend & Restore Service
Suspend Service (Hotline)
Places an MDN on "hotline" status, suspending service.
Endpoint: POST /sim/suspend/
Rate Limit: 20 requests/minute
Authentication: Bearer token required
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
mdn |
string | Yes | 10-digit Mobile Number |
service |
string | No | Specific service to suspend (VOICE/SMS/DATA). If empty, suspends all. |
hotline_number |
string | No | Number to redirect calls to (if supported) |
hotline_chargeable |
boolean | No | Whether the hotline status is billable (true/false) |
reason |
string | No | Optional suspension reason for internal tracking |
transaction_id |
string | No | Unique Transaction ID (auto-generated with SUSPEND_ prefix if not provided) |
Request Example
{
"mdn": "5550199888",
"service": "DATA",
"hotline_number": "5551234567",
"hotline_chargeable": true,
"reason": "Lost Device",
"transaction_id": "SUSPEND_TX123"
}
Response Examples
Success (200 OK):
{
"status": "success",
"mdn": "5550199888",
"transaction_id": "SUSPEND_1C68F4E4797B",
"message": "Success"
}
Common Errors (400 Bad Request):
{
"status": "failure",
"mdn": "5550199888",
"transaction_id": "SUSPEND_00627C3E7BC3",
"message": "SUBSCRIBER WITH GIVEN RESOURCE NOT EXISTS. (918)"
}
{
"status": "failure",
"mdn": "5550199888",
"transaction_id": "SUSPEND_B15C731E74B2",
"message": "SUBSCRIBER STATE NOT IN NEW OR ACTIVE STATE. (935)"
}
Idempotency Error (409 Conflict):
Possible Error Codes
(918), (935), (909), (915), GENS-0183, GENS-0185
For full error details see Error & Response Codes.
Restore Service (Remove Hotline)
Remove "Hotline" status to restore service.
Endpoint: POST /sim/restore/
Rate Limit: 20 requests/minute
Authentication: Bearer token required
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
mdn |
string | Yes | 10-digit Mobile Number |
service |
string | No | Specific service to restore (VOICE/SMS/DATA). If empty, restores all. |
transaction_id |
string | No | Unique Transaction ID (auto-generated with RESTORE_ prefix if not provided) |
Request Example
Response Examples
Success (200 OK):
{
"status": "success",
"mdn": "5550199888",
"transaction_id": "RESTORE_1C68F4E4797B",
"message": "Success"
}
Common Errors (400 Bad Request):
{
"status": "failure",
"mdn": "5550199888",
"transaction_id": "RESTORE_00627C3E7BC3",
"message": "SUBSCRIBER WITH GIVEN RESOURCE NOT EXISTS. (918)"
}
{
"status": "failure",
"mdn": "5550199888",
"transaction_id": "RESTORE_B15C731E74B2",
"message": "MSISDN is not suspended (GENS-0033)"
}
Idempotency Error (409 Conflict):
Possible Error Codes
(918), (909), (915), GENS-0033, GENS-0185
For full error details see Error & Response Codes.
Disconnect & Reconnect
Disconnect Service
Permanently disconnect a subscriber. This action cannot be undone.
Endpoint: POST /sim/disconnect/
Rate Limit: 10 requests/minute
Authentication: Bearer token required
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
mdn |
string | Yes | 10-digit Mobile Number |
sim |
string | Yes | ICCID for verification (alphanumeric, max 25 chars) |
acknowledge_final |
bool | Yes | Must be true to confirm permanent disconnection |
transaction_id |
string | No | Unique Transaction ID (auto-generated with DISCONNECT_ prefix if not provided) |
Request Example
{
"mdn": "5550199888",
"sim": "89014103211118500000",
"acknowledge_final": true,
"transaction_id": "DISCONNECT_TX123"
}
Response Examples
Success (200 OK):
{
"status": "success",
"mdn": "5550199888",
"sim": "89014103211118500000",
"transaction_id": "DISCONNECT_CBB2AA8551CB",
"message": "Success"
}
Common Errors (400 Bad Request):
{
"status": "failure",
"mdn": "5550199888",
"sim": "89014103211118500000",
"transaction_id": "DISCONNECT_00627C3E7BC3",
"message": "SUBSCRIBER WITH GIVEN RESOURCE NOT EXISTS. (918)"
}
{
"status": "failure",
"mdn": "5550199888",
"sim": "89014103211118500000",
"transaction_id": "DISCONNECT_B15C731E74B2",
"message": "ESN/MDN is Inactive (915)"
}
Idempotency Error (409 Conflict):
Possible Error Codes
(918), (915), (909), GENS-0065, GENS-0185
For full error details see Error & Response Codes.
Reconnect Service
Reactivates a disconnected SIM (within ~30 days of disconnection).
Endpoint: POST /sim/reconnect/
Rate Limit: 20 requests/minute
Authentication: Bearer token required
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
mdn |
string | Yes | 10-digit Mobile Number |
sim |
string | Yes | ESN or ICCID (alphanumeric, max 25 chars) |
plan_id |
string | Yes | Plan Code to reactivate with (must be in user's authorized plans) |
zip_code |
string | Yes | Service ZIP Code (5 digits) |
billing_code |
string | No | Optional Billing Code (default: BC123) |
address1 |
string | No | E911 Address Line 1 (Required for WFC) |
address2 |
string | No | E911 Address Line 2 |
city |
string | No | E911 City (Required for WFC) |
state |
string | No | E911 State — 2-letter code (Required for WFC) |
transaction_id |
string | No | Unique Transaction ID (auto-generated with RECONNECT_ prefix if not provided) |
Request Example
{
"mdn": "5550199888",
"sim": "89014103211118500000",
"plan_id": "2037",
"zip_code": "98104",
"address1": "222 XYZ St",
"city": "Seattle",
"state": "WA",
"transaction_id": "RECONNECT_TX123"
}
Response Examples
Success (200 OK):
{
"status": "success",
"mdn": "5550199888",
"sim": "89014103211118500000",
"transaction_id": "RECONNECT_1C68F4E4797B",
"message": "Success"
}
Success with WFC Warning (200 OK):
{
"status": "success",
"mdn": "5550199888",
"sim": "89014103211118500000",
"transaction_id": "RECONNECT_1C68F4E4797B",
"message": "Success",
"warning": "Reconnect Completed Successfully: Failed To Add WFC due to Invalid E911 Address. Please Retry With AddWFC API",
"wfc_status": false
}
Common Errors (400 Bad Request):
{
"status": "failure",
"mdn": "5550199888",
"sim": "89014103211118500000",
"transaction_id": "RECONNECT_00627C3E7BC3",
"message": "SUBSCRIBER WITH GIVEN RESOURCE NOT EXISTS. (918)"
}
{
"status": "failure",
"mdn": "5550199888",
"sim": "89014103211118500000",
"transaction_id": "RECONNECT_B15C731E74B2",
"message": "MSISDN is ineligible for reactivation (GENS-0147)"
}
Authorization Error (403 Forbidden):
{
"status": "failure",
"message": "Plan ID '2037' is not authorized for user XXX.",
"code": "HTTP_403"
}
Idempotency Error (409 Conflict):
Possible Error Codes
(918), (915), (909), (906), (910), GENS-0006, GENS-0090, GENS-0147, GENS-0289
For full error details see Error & Response Codes.
Swap SIM
Move an existing MDN to a new SIM card (e.g., device change, lost/stolen SIM).
Endpoint: POST /sim/swap/
Rate Limit: 30 requests/minute
Authentication: Bearer token required
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
mdn |
string | Yes | 10-digit Mobile Number |
new_sim |
string | Yes | New ICCID to activate (alphanumeric, max 25 chars) |
old_sim |
string | Yes | Current (old) ICCID to deactivate (alphanumeric, max 25 chars) |
transaction_id |
string | No | Unique Transaction ID (auto-generated with SWAP_ prefix if not provided) |
Request Example
{
"mdn": "5550199888",
"new_sim": "89014103211118512345",
"old_sim": "89014103211118500000",
"transaction_id": "SWAP_TX123"
}
Response Examples
Success (200 OK):
{
"status": "success",
"mdn": "5550199888",
"sim": "89014103211118512345",
"transaction_id": "SWAP_416DA9294B56",
"message": "Success"
}
Common Errors (400 Bad Request):
{
"status": "failure",
"mdn": "5550199888",
"sim": "89014103211118512345",
"transaction_id": "SWAP_DA2647245C12",
"message": "ESN does not belong to this MVNO (910)"
}
{
"status": "failure",
"mdn": "5550199888",
"sim": "8901240467145154136",
"transaction_id": "SWAP_4D2DAA0B3C88",
"message": "ESN/MDN is Inactive (915)"
}
{
"status": "failure",
"mdn": "5550199888",
"sim": "8901240467145154136",
"transaction_id": "SWAP_41C2B61D142F",
"message": "INVALID SIM (GENS-0006)"
}
Idempotency Error (409 Conflict):
Possible Error Codes
(910), (915), (918), (909), (506), GENS-0006, GENS-0018, GENS-0012, GENS-0197
For full error details see Error & Response Codes.
Swap MDN
Change the phone number associated with a SIM. Assigns a new MDN from the carrier's number pool.
Endpoint: POST /sim/mdn/swap/
Rate Limit: 20 requests/minute
Authentication: Bearer token required
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
mdn |
string | Yes | Current 10-digit Mobile Number |
sim |
string | Yes | ICCID (alphanumeric, max 25 chars) |
zip_code |
string | Yes | Zip code for the new number assignment (5 digits) |
imei |
string | No | Device IMEI (optional, max 15 digits) |
transaction_id |
string | No | Unique Transaction ID (auto-generated with SWAP_MDN_ prefix if not provided) |
Request Example
{
"mdn": "5550199888",
"sim": "89014103211118500000",
"zip_code": "10001",
"imei": "350336269492124",
"transaction_id": "SWAP_MDN_TX123"
}
Response Examples
Success (200 OK):
{
"status": "success",
"mdn": "5550199888",
"new_mdn": "5550199999",
"sim": "89014103211118500000",
"transaction_id": "SWAP_MDN_CA040EB53477",
"message": "Success"
}
Common Errors (400 Bad Request):
{
"status": "failure",
"mdn": "5550199888",
"transaction_id": "SWAP_MDN_00627C3E7BC3",
"message": "SUBSCRIBER WITH GIVEN RESOURCE NOT EXISTS. (918)"
}
{
"status": "failure",
"mdn": "5550199888",
"transaction_id": "SWAP_MDN_B15C731E74B2",
"message": "ESN/MDN is Inactive (915)"
}
Idempotency Error (409 Conflict):
Possible Error Codes
(918), (915), (909), (910), GENS-0011, GENS-0289
For full error details see Error & Response Codes.
Balance Adjustment
Manually adjust a subscriber's balance. Use the single adjustment endpoint for one subscription, or the multiple adjustment endpoint for bulk corrections across several subscriptions.
Superuser Only
Balance adjustment endpoints require superuser privileges. Non-superuser requests will receive HTTP 403 Forbidden.
Adjust Single Balance
Add or deduct balance from a single subscription.
Endpoint: POST /sim/balance/adjust/
Rate Limit: 20 requests/minute
Authentication: Bearer token required (superuser)
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
mdn |
string | Yes | 10-digit Mobile Number |
subscription_id |
string | Yes | Subscription/purchase ID to adjust |
uom |
string | No | Unit of measure: SECOND (voice), EVENT (SMS), or BYTE (data) |
amount |
integer | No | Positive to add, negative to deduct |
expiry_date |
string | No | Expiry date for the adjustment in YYYY-MM-DD format |
transaction_id |
string | No | Unique Transaction ID (auto-generated with ADJ_BAL_ prefix if not provided) |
Request Example
{
"mdn": "5550199888",
"subscription_id": "1125899982205364",
"uom": "EVENT",
"amount": 500,
"expiry_date": "2026-04-15",
"transaction_id": "ADJ_BAL_TX123"
}
Response Examples
Success (200 OK):
{
"status": "success",
"mdn": "5550199888",
"transaction_id": "ADJ_BAL_1C68F4E4797B",
"message": "Success"
}
Common Errors (400 Bad Request):
{
"status": "failure",
"mdn": "5550199888",
"transaction_id": "ADJ_BAL_00627C3E7BC3",
"message": "SUBSCRIBER WITH GIVEN RESOURCE NOT EXISTS. (918)"
}
{
"status": "failure",
"mdn": "5550199888",
"transaction_id": "ADJ_BAL_B15C731E74B2",
"message": "Invalid SUBSCRIPTIONID. (919)"
}
Authorization Error (403 Forbidden):
Idempotency Error (409 Conflict):
Validation Error (422 Unprocessable Entity):
{
"detail": [
{
"type": "value_error",
"loc": ["body", "uom"],
"msg": "Value error, UOM must be one of: SECOND, EVENT, BYTE"
}
]
}
Possible Error Codes
(918), (919), (920), (909), (915)
For full error details see Error & Response Codes.
Adjust Multiple Balances
Adjust balances across multiple subscriptions in a single request.
Endpoint: POST /sim/balance/adjust-multiple/
Rate Limit: 20 requests/minute
Authentication: Bearer token required (superuser)
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
mdn |
string | Yes | 10-digit Mobile Number |
adjustments |
array | Yes | List of balance adjustments |
adjustments[].subscription_id |
string | Yes | Subscription/purchase ID |
adjustments[].uom |
string | Yes | Unit of measure: SECOND, EVENT, or BYTE |
adjustments[].amount |
integer | Yes | Positive to add, negative to deduct |
transaction_id |
string | No | Unique Transaction ID (auto-generated with ADJ_MULTI_BAL_ prefix if not provided) |
Request Example
{
"mdn": "5550199888",
"adjustments": [
{
"subscription_id": "1125899982205364",
"uom": "EVENT",
"amount": 500
},
{
"subscription_id": "1125899982205365",
"uom": "SECOND",
"amount": 3000
},
{
"subscription_id": "1125899982205366",
"uom": "BYTE",
"amount": 1073741824
}
],
"transaction_id": "ADJ_MULTI_BAL_TX123"
}
Response Examples
Success (200 OK):
{
"status": "success",
"mdn": "5550199888",
"transaction_id": "ADJ_MULTI_BAL_1C68F4E4797B",
"message": "Success"
}
Common Errors (400 Bad Request):
{
"status": "failure",
"mdn": "5550199888",
"transaction_id": "ADJ_MULTI_BAL_00627C3E7BC3",
"message": "SUBSCRIBER WITH GIVEN RESOURCE NOT EXISTS. (918)"
}
{
"status": "failure",
"mdn": "5550199888",
"transaction_id": "ADJ_MULTI_BAL_B15C731E74B2",
"message": "Invalid SUBSCRIPTIONID. (919)"
}
Authorization Error (403 Forbidden):
Idempotency Error (409 Conflict):
Possible Error Codes
(918), (919), (920), (909), (915)
For full error details see Error & Response Codes.
Line Management
Manage shared/family plan line associations by adding or removing child lines from a parent account.
Add Child Line
Add a child line to a parent account for shared/family plan configurations.
Endpoint: POST /sim/line/add/
Rate Limit: 20 requests/minute
Authentication: Bearer token required
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
parent_mdn |
string | Yes | 10-digit parent (primary) Mobile Number |
parent_sim |
string | Yes | Parent SIM identifier (ICCID) — alphanumeric, max 25 characters |
child_mdn |
string | Yes | 10-digit child Mobile Number to add |
child_sim |
string | No | Child SIM identifier (ICCID) — alphanumeric, max 25 characters |
transaction_id |
string | No | Unique Transaction ID (auto-generated with ADD_LINE_ prefix if not provided) |
Request Example
{
"parent_mdn": "5550199888",
"parent_sim": "89014103211118500000",
"child_mdn": "5550198765",
"child_sim": "89014103211118500001",
"transaction_id": "ADD_LINE_TX123"
}
Response Examples
Success (200 OK):
{
"status": "success",
"mdn": "5550199888",
"transaction_id": "ADD_LINE_1C68F4E4797B",
"message": "Success"
}
Common Errors (400 Bad Request):
{
"status": "failure",
"mdn": "5550199888",
"transaction_id": "ADD_LINE_00627C3E7BC3",
"message": "SUBSCRIBER WITH GIVEN RESOURCE NOT EXISTS. (918)"
}
{
"status": "failure",
"mdn": "5550199888",
"transaction_id": "ADD_LINE_B15C731E74B2",
"message": "ESN/MDN is Inactive (915)"
}
Idempotency Error (409 Conflict):
Possible Error Codes
(918), (915), (909), (910)
For full error details see Error & Response Codes.
Remove Child Line
Remove a child line from a parent account.
Endpoint: POST /sim/line/remove/
Rate Limit: 20 requests/minute
Authentication: Bearer token required
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
parent_mdn |
string | Yes | 10-digit parent (primary) Mobile Number |
parent_sim |
string | Yes | Parent SIM identifier (ICCID) — alphanumeric, max 25 characters |
child_mdn |
string | Yes | 10-digit child Mobile Number to remove |
child_sim |
string | No | Child SIM identifier (ICCID) — alphanumeric, max 25 characters |
transaction_id |
string | No | Unique Transaction ID (auto-generated with REM_LINE_ prefix if not provided) |
Request Example
{
"parent_mdn": "5550199888",
"parent_sim": "89014103211118500000",
"child_mdn": "5550198765",
"transaction_id": "REM_LINE_TX123"
}
Response Examples
Success (200 OK):
{
"status": "success",
"mdn": "5550199888",
"transaction_id": "REM_LINE_1C68F4E4797B",
"message": "Success"
}
Common Errors (400 Bad Request):
{
"status": "failure",
"mdn": "5550199888",
"transaction_id": "REM_LINE_00627C3E7BC3",
"message": "SUBSCRIBER WITH GIVEN RESOURCE NOT EXISTS. (918)"
}
{
"status": "failure",
"mdn": "5550199888",
"transaction_id": "REM_LINE_B15C731E74B2",
"message": "ESN/MDN is Inactive (915)"
}
Idempotency Error (409 Conflict):
Possible Error Codes
(918), (915), (909), (910)
For full error details see Error & Response Codes.
Common HTTP Errors (All Endpoints on This Page)
| HTTP Code | Meaning |
|---|---|
| 400 | Bad request / upstream carrier operation failed |
| 401 | Not authenticated (missing or invalid Bearer token) |
| 403 | Forbidden (insufficient permissions or superuser-only endpoint) |
| 409 | Conflict (duplicate transaction_id) |
| 422 | Validation error (invalid state code, ZIP format, MDN format) |
| 429 | Rate limit exceeded |
| 500 | Internal server error |
Full error reference: Error & Response Codes