Integrate iSave IMEI & GSX services into your panel, bot, CRM, or website
Complete developer reference for the iSave Check API. Covers authentication, all endpoints, PHP and cURL examples, DHRU bridge, bulk orders, order statuses, error codes, and troubleshooting.
Keys are issued manually and linked to your pricing plan and service access.
1. Quick Start
Two integration options — choose the one that fits your stack.
Use REST API if:
- You are building a custom website, Telegram bot, CRM, or backend.
- You want clean JSON requests and JSON responses.
- You work with Laravel, PHP, Python, or Node.js.
Use DHRU Bridge if:
- You already use a DHRU Fusion panel.
- You need supplier sync with iSave.
- You need standard DHRU actions such as accountinfo, imeiservicelist, placeimeiorder, and bulk status checks.
2. Authentication
Every request requires your unique API key. Without a valid key the request is rejected immediately.
REST API — HTTP header
X-API-Key: YOUR_API_KEY
Content-Type: application/json
DHRU — POST form-data field
apiaccesskey=YOUR_API_KEY
3. Native REST API
Single HTTPS endpoint, all commands via JSON body.
Base endpoint
POST https://imeigsx.com/api/v1/check
Available commands
| Command | Purpose | When to use |
|---|---|---|
balance |
Get account balance | Confirm funds before ordering. |
services |
Get active service list | Fetch available services and your prices. |
YOUR_SERVICE_ID |
Place an order | Use the exact command_name from the service list. |
4. REST: Check Balance
Request body
{"command":"balance"}
cURL
curl -X POST "https://imeigsx.com/api/v1/check" \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"command":"balance"}'
Success response
{
"success": true,
"username": "client_username",
"balance": 336.81,
"currency": "USD"
}
5. REST: Get Service List
Returns all active services for your key with command ID, name, description, and your price.
Request body
{"command":"services"}
cURL
curl -X POST "https://imeigsx.com/api/v1/check" \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"command":"services"}'
Success response
{
"success": true,
"services": [
{
"command_name": "gsx",
"service_title": "GSX Standard Report",
"description": "Official API Service",
"price": "0.40"
},
{
"command_name": "gsxpremium",
"service_title": "GSX Premium Report",
"description": "Full GSX details including repair history",
"price": "0.80"
}
]
}
6. REST: Place an Order
| Field | Type | Required | Description |
|---|---|---|---|
command |
string | Yes | Service ID from services list, for example gsx. |
identifier |
string | Yes | IMEI or Serial Number. |
custom_request_id |
string | No | Your internal tracking ID. |
cURL
curl -X POST "https://imeigsx.com/api/v1/check" \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"command":"gsx","identifier":"356557847079356"}'
Success response
{
"success": true,
"request_id": "req_1713657812_82",
"credits": 336.41,
"data": {
"productDescription": "iPhone 13 GREEN 128GB",
"imei": "356557847079356",
"serial": "ABCDEF123456",
"carrierName": "Unlocked",
"fmiStatus": "OFF"
}
}
7. DHRU Fusion API v6.1
Connect to iSave through the DHRU bridge. All examples below use the corrected endpoint without .php.
Base endpoint
POST https://imeigsx.com/api/dhru_bridge
Required POST fields
| Field | Required | Description |
|---|---|---|
apiaccesskey |
Yes | Your API key. |
action |
Yes | DHRU action to execute. |
username |
No | Optional if your panel requires it. |
requestformat |
No | Set JSON if your client supports it. |
parameters |
Depends | Required for order placement. Must be valid XML. |
8. DHRU Actions
8.1 accountinfo / getbalance
curl -X POST "https://imeigsx.com/api/dhru_bridge" \
-d "apiaccesskey=YOUR_API_KEY" \
-d "action=accountinfo"
8.2 imeiservicelist / serverservicelist
curl -X POST "https://imeigsx.com/api/dhru_bridge" \
-d "apiaccesskey=YOUR_API_KEY" \
-d "action=imeiservicelist"
8.3 placeimeiorder / placeorder
The parameters field must be URL-encoded valid XML.
curl -X POST "https://imeigsx.com/api/dhru_bridge" \
-d "apiaccesskey=YOUR_API_KEY" \
-d "action=placeimeiorder" \
--data-urlencode "parameters=<PARAMETERS><ID>gsx</ID><IMEI>356327109246188</IMEI></PARAMETERS>"
8.4 getimeiorder / getorder
curl -X POST "https://imeigsx.com/api/dhru_bridge" \
-d "apiaccesskey=YOUR_API_KEY" \
-d "action=getimeiorder" \
-d "ID=171365781282"
9. Bulk Orders
9.1 placeimeiorderbulk
curl -X POST "https://imeigsx.com/api/dhru_bridge" \
-d "apiaccesskey=YOUR_API_KEY" \
-d "action=placeimeiorderbulk" \
--data-urlencode "parameters=<REQUEST>
<ORDER><ID>gsx</ID><IMEI>356327109246188</IMEI></ORDER>
<ORDER><ID>findmy</ID><IMEI>356327109246189</IMEI></ORDER>
</REQUEST>"
9.2 getimeiorderbulk
curl -X POST "https://imeigsx.com/api/dhru_bridge" \
-d "apiaccesskey=YOUR_API_KEY" \
-d "action=getimeiorderbulk" \
-d "IDS=171365781281,171365781282,171365781283"
10. PHP / Laravel Examples
10.1 Check balance (PHP cURL)
<?php
$apiKey = 'YOUR_API_KEY';
$endpoint = 'https://imeigsx.com/api/v1/check';
$ch = curl_init($endpoint);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => ['X-API-Key: ' . $apiKey, 'Content-Type: application/json'],
CURLOPT_POSTFIELDS => json_encode(['command' => 'balance']),
CURLOPT_TIMEOUT => 15,
]);
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($httpCode === 200) {
$data = json_decode($response, true);
echo 'Balance: ' . $data['balance'] . ' ' . $data['currency'];
} else {
echo 'Error HTTP ' . $httpCode;
}
10.2 Place order (reusable function)
<?php
function isaveCheck(string $apiKey, string $command, string $identifier): array
{
$ch = curl_init('https://imeigsx.com/api/v1/check');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => ['X-API-Key: ' . $apiKey, 'Content-Type: application/json'],
CURLOPT_POSTFIELDS => json_encode([
'command' => $command,
'identifier' => $identifier
]),
CURLOPT_TIMEOUT => 20,
]);
$body = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($httpCode !== 200) {
return ['success' => false, 'error' => 'HTTP ' . $httpCode];
}
return json_decode($body, true) ?? ['success' => false, 'error' => 'Invalid JSON'];
}
$result = isaveCheck('YOUR_API_KEY', 'gsx', '356557847079356');
print_r($result);
10.3 Laravel HTTP Client
use Illuminate\Support\Facades\Http;
$response = Http::withHeaders([
'X-API-Key' => config('services.isave.api_key'),
'Content-Type' => 'application/json',
])->post('https://imeigsx.com/api/v1/check', [
'command' => 'gsx',
'identifier' => '356557847079356',
]);
if ($response->successful()) {
return $response->json();
}
return [
'success' => false,
'error' => $response->status()
];
11. Sandbox & Testing
balance. If you get a successful response, your key and endpoint are correct.
services and store the exact command_name values.
imeiservicelist and confirm service mapping in your panel.
12. Order Status Meaning
| Status | Meaning | How to handle |
|---|---|---|
| 1 | Pending / Processing | Poll again with getimeiorder after a short delay. |
| 3 | Rejected / Failed | Show REPLY to the user and do not auto-retry blindly. |
| 4 | Completed | Display data from REPLY or parse CODE. |
13. Response Field Glossary
14. Error Codes & Troubleshooting
| Code | Meaning | What to do |
|---|---|---|
| 400 | Bad Request | Required fields missing or invalid. |
| 401 | Unauthorized | API key missing or invalid. |
| 402 | Insufficient Balance | Top up your account. |
| 403 | Forbidden | Account blocked or restricted. |
| 404 | Service Not Found | Re-check with services. |
| 504 | Gateway Timeout | Retry once later. |
Common integration mistakes
- Sending the API key in the wrong place.
- Using
service_titleinstead ofcommand_name. - Sending malformed XML in DHRU
parameters. - Placing orders from frontend JavaScript.
- Using old paths with unnecessary
.phpsuffixes.
15. FAQ
Do I need REST or DHRU?
Use REST for any custom integration. Use DHRU only if your software already expects the DHRU supplier format.
Where do I get service IDs?
Call services in REST or imeiservicelist in DHRU.
Can I check by Serial Number?
Yes. In REST send the serial as identifier. In DHRU XML use <SN></SN>.
Can I poll order status later?
Use getimeiorder or getimeiorderbulk in DHRU, or store request_id in REST mode.
balance and services commands are safe for testing.