API Documentation

Integrate iFreeChecker into your apps, websites, or DHRU panels. All responses are JSON.

Contents

1. Authentication

Every request requires an API key. Get yours from My Account after registering.

Pass the key as a query parameter apikey or as an HTTP header X-Api-Key.

Tip: You can create multiple API keys with custom labels (Production, Testing, etc.) from your account dashboard.

2. Base URL & Format

https://ifreechecker.com/check

3. Endpoints

All endpoints share the same base URL. The endpoint parameter selects the service. Common parameters apply to all:

ParameterTypeRequiredDescription
endpointstringrequiredService name (see below)
idstringrequiredSerial number or IMEI (8–20 alphanumeric, case-insensitive)
apikeystringrequiredYour iFreeChecker API key
GET /check?endpoint=full&id={ID}&apikey={KEY}
Complete report — device details, warranty, FMI, activation policy, cases, repairs, replacement, blacklist, and Sold To. Everything included.
GET /check?endpoint=basic_info&id={ID}&apikey={KEY}
Lightweight check — device details, warranty/coverage, FMI status, SIM-Lock, and Activation Status only. No cases, repairs, replacement, or blacklist.
GET /check?endpoint=case_history&id={ID}&apikey={KEY}
Device details, warranty, FMI, and case history. No Sold To, repairs, replacement, or blacklist.
GET /check?endpoint=repair_history&id={ID}&apikey={KEY}
Device details, warranty, FMI, cases, repairs, and replacement history. No activation policy, no Sold To, no blacklist.
GET /check?endpoint=device_blacklist&id={ID}&apikey={KEY}
Device details, warranty, and blacklist status (cellular devices only). No FMI, cases, repairs, or Sold To.
GET /check?endpoint=soldby_case&id={ID}&apikey={KEY}
Device details with Sold By & Country + case history. No activation policy, repairs, replacement, or blacklist.
GET /check?endpoint=soldby_case_repair&id={ID}&apikey={KEY}
Device details with Sold By & Country + cases and repairs. No activation policy, replacement, or blacklist.
GET /check?endpoint=gsx_policy&id={ID}&apikey={KEY}
Device details with Sold By & Country + full GSX activation policy & SIM info (Initial, Applied, Next Tether policies). No cases, repairs, replacement, or blacklist.
GET /check?endpoint=repair_replacement&id={ID}&apikey={KEY}
Device details + repair history & replacement history. No Sold To, no activation policy, no cases, no blacklist.

4. Pricing

Credits are deducted per successful check only. Failed checks (invalid serial, API errors) are not charged.

Full Check
$0.55
Everything — warranty, FMI, cases, repairs, replacement, blacklist, Sold To
Basic Info
$0.10
Device details, warranty, FMI, SIM-Lock, Activation Status
Case History
$0.25
Details + Case History
Case + Repair + Replacement
$0.40
Details + Cases + Repairs + Replacement
Blacklist
$0.15
Details + Blacklist Status
Sold By + Case
$0.30
Details + Sold By + Country + Cases
Sold By + Case + Repair
$0.45
Details + Sold By + Country + Cases + Repairs
GSX Sold By + Policy
$0.20
Details + Sold By + Full Activation Policy
Repair + Replacement
$0.40
Details + Repair History + Replacement History

5. Response Format

Every response contains these top-level fields:

FieldTypeDescription
okbooleantrue on success
servicestringEndpoint used (e.g. full, case_history)
summaryobjectParsed device data (serial, model, warranty, FMI, etc.)
detailsobjectRaw GSX device details
eligibilityobject|nullFind My / repair eligibility (null if not included)
casesobject|nullCase history (null if not included)
repairsobject|nullRepair history (null if not included)
blacklistobject|nullBlacklist status (null if not included or non-cellular)
isCellularbooleanWhether the device has IMEI
_metaobjectRequest metadata (endpoint, time, timestamp)

Summary Object — Key Fields

FieldDescription
serialSerial number
imeiPrimary IMEI (empty for Wi-Fi devices)
modelProduct description (e.g. "iPhone 17 Pro Max")
configFull config (e.g. "IPHONE 17 PRO MAX,CHINA,256GB,SLV")
fmi"ON", "OFF", or "unknown"
warrantyWarranty description
warrantyCodeAP (AppleCare+), LP (Limited), OO (Out of Warranty)
daysRemainingDays of coverage left
purchaseDateISO 8601 date
purchaseCountryCountry of purchase
laborCoveredBoolean
partCoveredBoolean
soldToDistributor / channel name (full, soldby_*, gsx_policy only)
productLineProduct line code (full, soldby_*, gsx_policy only)

6. Error Codes

HTTPCodeMeaning
400Bad RequestMissing or invalid parameters
402Payment RequiredInsufficient balance — top up your account
403ForbiddenInvalid API key or account suspended
405Not AllowedOnly GET method is accepted
429Too Many RequestsRate limit exceeded (max 10/min)
502Bad GatewayUpstream GSX API error

Error responses always include "ok": false and an "error" message:

// Example error response
{
    "ok": false,
    "error": "Insufficient balance ($2.30). Please top up.",
    "code": 402,
    "balance": 2.30,
    "cost": 0.55
}

7. Rate Limits

8. Code Examples

cURL
PHP
Node.js
Python
# Full GSX Check
curl "https://ifreechecker.com/check?endpoint=full&id=FCMZR23CN70W&apikey=ifc_YOUR_KEY"

# Basic Info
curl "https://ifreechecker.com/check?endpoint=basic_info&id=FCMZR23CN70W&apikey=ifc_YOUR_KEY"

# Case History
curl "https://ifreechecker.com/check?endpoint=case_history&id=FCMZR23CN70W&apikey=ifc_YOUR_KEY"

# Repair + Case + Replacement
curl "https://ifreechecker.com/check?endpoint=repair_history&id=FCMZR23CN70W&apikey=ifc_YOUR_KEY"

# Blacklist
curl "https://ifreechecker.com/check?endpoint=device_blacklist&id=350663647016758&apikey=ifc_YOUR_KEY"

# Sold By + Case
curl "https://ifreechecker.com/check?endpoint=soldby_case&id=FCMZR23CN70W&apikey=ifc_YOUR_KEY"

# GSX Sold By + Policy
curl "https://ifreechecker.com/check?endpoint=gsx_policy&id=FCMZR23CN70W&apikey=ifc_YOUR_KEY"

# Using header instead of query param
curl -H "X-Api-Key: ifc_YOUR_KEY" \
     "https://ifreechecker.com/check?endpoint=full&id=353911106779789"
<?php

$apiKey   = 'ifc_YOUR_KEY';
$serial   = 'FCMZR23CN70W';
$endpoint = 'full'; // full | basic_info | case_history | repair_history | device_blacklist | soldby_case | soldby_case_repair | gsx_policy | repair_replacement

$url = 'https://ifreechecker.com/check?' . http_build_query([
    'endpoint' => $endpoint,
    'id'       => $serial,
    'apikey'   => $apiKey,
]);

$ch = curl_init($url);
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_TIMEOUT        => 60,
    CURLOPT_SSL_VERIFYPEER => true,
]);

$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

$data = json_decode($response, true);

if ($data['ok']) {
    $s = $data['summary'];
    echo "Model: "    . $s['model']    . "\n";
    echo "FMI: "      . $s['fmi']      . "\n";
    echo "Warranty: " . $s['warranty'] . "\n";
} else {
    echo "Error: " . $data['error'] . "\n";
}
const API_KEY  = 'ifc_YOUR_KEY';
const serial   = 'FCMZR23CN70W';
const endpoint = 'full'; // full | basic_info | case_history | repair_history | device_blacklist | soldby_case | soldby_case_repair | gsx_policy | repair_replacement

const params = new URLSearchParams({
    endpoint,
    id: serial,
    apikey: API_KEY,
});

const url = `https://ifreechecker.com/check?${params}`;

const res  = await fetch(url);
const data = await res.json();

if (data.ok) {
    const s = data.summary;
    console.log(`Model: ${s.model}`);
    console.log(`FMI: ${s.fmi}`);
    console.log(`Warranty: ${s.warranty}`);
    console.log(`Days left: ${s.daysRemaining}`);
} else {
    console.error('Error:', data.error);
}
import requests

API_KEY  = "ifc_YOUR_KEY"
serial   = "FCMZR23CN70W"
endpoint = "full"  # full | basic_info | case_history | repair_history | device_blacklist | soldby_case | soldby_case_repair | gsx_policy | repair_replacement

resp = requests.get("https://ifreechecker.com/check", params={
    "endpoint": endpoint,
    "id":       serial,
    "apikey":   API_KEY,
})

data = resp.json()

if data["ok"]:
    s = data["summary"]
    print(f"Model: {s['model']}")
    print(f"FMI: {s['fmi']}")
    print(f"Warranty: {s['warranty']}")
else:
    print(f"Error: {data['error']}")

9. DHRU Fusion / DHRU Panel Integration

Your credentials for DHRU

When you create an account, you get access to API keys. That key is the only credential you need for DHRU:

Summary: One credential = your API key from Account → API Keys. Use it as apiaccesskey in DHRU. Ensure your account has sufficient balance (top up from Account if needed).

9.1 DHRU Fusion API (recommended)

iFreeChecker exposes a DHRU Fusion–compatible API at /dhru. DHRU can synchronize services, place orders, and fetch results (HTML report) using the same actions as other DHRU suppliers.

SettingValue
API URLhttps://ifreechecker.com/dhru
API Access KeyYour iFreeChecker API key (from Account → API Keys)
UsernameOptional; leave blank or use any value. Auth is by key only.

Actions supported:

ActionDescription
accountinfoReturns your balance, user ID, currency (USD). Use for “test connection” or balance check in DHRU.
imeiservicelistReturns all 9 iFreeChecker services with IDs and pricing. Use “Setup my IMEI services same as this API services” in DHRU to sync automatically.
placeimeiorderPlace an order: pass IMEI/Serial + Service ID. Balance is charged and the check runs immediately. Returns ORDERID.
getimeiorderFetch result by Order ID or by Serial/IMEI (returns latest order for that device). Returns STATUS 4 when complete and CODE = formatted HTML report.

Service IDs (for placeimeiorder and synced list):

IDServiceIncludesCost
1Full GSX CheckDetails, FMI, activation policy, cases, repairs, replacement, blacklist, Sold To$0.55
2Case HistoryDevice details, warranty, FMI, case history$0.25
3Case + Repair + ReplacementDevice details, warranty, FMI, cases, repairs, replacement$0.40
4BlacklistDevice details, warranty, blacklist status$0.15
5Sold By + CaseDevice details, Sold By, Country, case history$0.30
6Sold By + Case + RepairDevice details, Sold By, Country, cases, repairs$0.45
7GSX Sold By + PolicyDevice details, Sold By, Country, full activation policy & SIM info$0.20
8Repair + ReplacementDevice details, repair history, replacement history$0.40
9Basic InfoDevice details, warranty, FMI, SIM-Lock, Activation Status$0.10

Parameters can be sent as GET or POST. For placeimeiorder, parameters can be XML (<PARAMETERS><IMEI>...</IMEI><SERVICEID>1</SERVICEID></PARAMETERS>) or base64-encoded JSON. For getimeiorder, pass either the numeric Order ID or the original IMEI/Serial to fetch the latest result for that device.

The CODE field in a completed getimeiorder response is a styled HTML report tailored to the requested service — suitable for embedding directly in DHRU result pages.

Important: Use https://ifreechecker.com/dhru (without www) as the API URL in DHRU to avoid 307 redirects that cause “Invalid json response” errors.

9.2 URL-based integration (alternative)

If you prefer a simple URL-per-request setup instead of the DHRU Fusion API:

Set the API URL to:

https://ifreechecker.com/check?endpoint={{service}}&id={{imei}}&apikey=YOUR_API_KEY

Create a service in DHRU for each endpoint you want to offer:

Service Code (endpoint=)Cost
full$0.55
basic_info$0.10
case_history$0.25
repair_history$0.40
device_blacklist$0.15
soldby_case$0.30
soldby_case_repair$0.45
gsx_policy$0.20
repair_replacement$0.40

Response: JSON with ok: true on success; ok: false + error on failure. Credits deducted on success only.