Reseller and developer API documentation

Zero-code integration for your Dhru Fusion panels or high-performance REST API endpoints for your custom PHP applications.

Dhru Fusion API setup steps

Values to enter under 'Suppliers / API Server' in your Dhru Fusion admin panel.

Critical Dhru Fusion setup tip

Dhru Fusion automatically appends /api/index.php to the URL in the background. In your Dhru Panel's API URL field, enter only your base domain URL without /api/index.php.

API URL (Dhru panel)
https://imeiveserver.com/
Dhru Fusion API URL field
Username
your_username
Your username on our site
API access key (64 characters)
your_64_character_api_key
Generate it on the Profile > API page

Supported Dhru Fusion v6.1 actions

  • accountinfoActive

    Account balance and details

    { SUCCESS: [{ AccoutInfo: { credit, currency } }] }

  • imeiservicelist / serverservicelist / remoteservicelistActive

    Active services and required fields

    { SUCCESS: [{ LIST: { Category: { SERVICES: { } } } }] }

  • placeimeiorder / placeserverorderActive

    Submit a new order

    { SUCCESS: [{ REFERENCEID: "full-order-uuid" }] }

  • getimeiorder / getserverorderActive

    Query order status and result

    { SUCCESS: [{ STATUS: 4, CODE: "RESULT" }] }

  • getdepositaddressPer account

    Personal USDT address and verification data

    { SUCCESS: [{ ADDRESS, CURRENCY, NETWORKS, GENERATION, SALT, FACTORY, IMPLEMENTATION, INITCODEHASH }] }

  • getdepositsPer account

    Incoming payments to the personal address and their status

    LIMIT defaults to 50. SINCE is Unix seconds or an ISO 8601 date with its zone; it returns payments changed at or after it, oldest change first, so use the last entry's UPDATED as your next SINCE. AMOUNT is what arrived; where the network cost is deducted (by default every network but BSC) the amount credited is lower by the network cost and the move fee. The unique key is ID (or TXID with LOGINDEX)

    LIMIT (1-50) · SINCE · TXID

    { SUCCESS: [{ DEPOSITS: { ID: { ID, TXID, LOGINDEX, NETWORK, CHAINID, AMOUNT, CURRENCY, STATUS, CONFIRMATIONS, DATE, UPDATED } } }] }

    STATUS: SEEN | CONFIRMING | CREDITED | HELD | BELOW_MIN | WRONG_NETWORK

Per-account actions return an error while the personal USDT address is not enabled for your account.

Address check

FACTORY, IMPLEMENTATION and INITCODEHASH must equal the values below, and ADDRESS must match this calculation. Keep these values and the first ADDRESS you receive in your own system; if any of them differs, do not send.

These are contract addresses; do not send payments to them. Send only to the ADDRESS that getdepositaddress returns.

ADDRESS == keccak256(0xff ++ FACTORY ++ SALT ++ INITCODEHASH)[12:]

GENERATION     1
FACTORY        0xE126D3e733a1A7a80e592527Cf90D2a1Cf7Aa9Fb
IMPLEMENTATION 0x6A86F3b37D235bEEde0a455935530593a2A56A51
INITCODEHASH   0xf3df90581a9c492a338e9e5a97e77a2c7e158fbedebc2be2f7ef21293a0b4629

Integration guide

1. Connect and load the catalog

Check API access and your server IP allowlist in your profile. Add the site URL, username and API key in DHRU. Verify accountinfo first, then imeiservicelist / serverservicelist / remoteservicelist.

2. Map all required fields

Import fieldname, fieldtype, required and fieldoptions from Requires.Custom. Use fieldname, not the label. CUSTOM can describe the main IMEI input; keep it separate from extra custom fields. Use getimeiservicedetails for details. If quick import omits fields, resync the service details.

3. Submit and follow the result

Submit the full service ID, a valid QNT and required fields. Store the complete REFERENCEID; the 8-character display ID is not an API lookup key. Poll getimeiorder. SUCCESS means accepted; check STATUS for delivery.

4. Avoid duplicate orders

Keep parameters.client_request_id stable for the same logical order. Do not submit a new request ID after a timeout; reconcile the existing order first. Honor 429 / Retry-After and back off polling.

Key security

Keep keys out of browser JavaScript and public repositories; use server-to-server HTTPS. Allowlist your integration server's public IP, not the browser IP. Redact keys, passwords and signed customer files from logs.

Handle errors correctly

HTTP 200 alone is not success: inspect ERROR / SUCCESS. Fill the named missing fields. Show the actual explanation for credit or service availability errors. Catalog prices can change; use the amount accepted for the order.

DHRU order statuses

0

Received / pending

1

Processing

3

Rejected / refunded

4

Completed

This is a template: replace fields with your service contract. Running it can create a paid order. Verify accountinfo first. Existing XML DHRU clients are also supported.

<?php
$fields = ['PRODUCTID' => 'example', 'IMEI1' => 'YOUR_IMEI'];
$parameters = [
  'ID' => 'FULL_SERVICE_ID',
  'QNT' => 1,
  'CUSTOMFIELD' => base64_encode(json_encode($fields)),
  'client_request_id' => 'YOUR_UNIQUE_REQUEST_ID'
];
$body = http_build_query([
  'username' => getenv('RESELLER_USERNAME'),
  'apiaccesskey' => getenv('RESELLER_API_KEY'),
  'action' => 'placeimeiorder', 'requestformat' => 'JSON',
  'parameters' => base64_encode(json_encode($parameters))
]);
$ch = curl_init('https://imeiveserver.com/api/index.php');
curl_setopt_array($ch, [CURLOPT_POST => true,
  CURLOPT_POSTFIELDS => $body, CURLOPT_RETURNTRANSFER => true,
  CURLOPT_CONNECTTIMEOUT => 10, CURLOPT_TIMEOUT => 60]);
$response = curl_exec($ch);
if ($response === false) throw new RuntimeException('Transport error; reconcile before retry');
$result = json_decode($response, true, 512, JSON_THROW_ON_ERROR);
curl_close($ch);
// Inspect ERROR / SUCCESS; persist the complete REFERENCEID.
?>