API Documentation
Integration guide for the checker API via CLI, scripts, or your application.
Authentication
The X-API-Key header is required on every request.
All API endpoints are authenticated with the API key of your account. Create or regenerate the key on the API Key page, then send it in the X-API-Key header. The key is secret — never store it in a public repository or share it with others.
Send the key in one of these ways
X-API-Key: dxx_YOUR_API_KEY— X-API-Key request header{"api_key": "dxx_YOUR_API_KEY"}— api_key field in a JSON bodyapi_key=dxx_YOUR_API_KEY— api_key field in a form body
The api_key body field is required only when the header is absent. Sending both is allowed; the header wins.
/api/account/status
Free tool
Account Status API
Returns the credits and subscription state of the account that owns the API key, so an integration can decide which budget a premium call will use before sending it. No credits are charged.
The body only needs the API key. It can also be sent as a form field or through the X-API-Key header.
Integration samples
Replace dxx_YOUR_API_KEY with the key from the API Key page. Every sample sends the key in the JSON body.
curl -X POST https://darkxcode.pw/api/account/status \
-H "Content-Type: application/json" \
-d '{"api_key":"dxx_YOUR_API_KEY"}'
<?php
$payload = [
'api_key' => 'dxx_YOUR_API_KEY',
];
$ch = curl_init('https://darkxcode.pw/api/account/status');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => json_encode($payload),
CURLOPT_HTTPHEADER => ['Content-Type: application/json'],
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
]);
$response = curl_exec($ch);
$error = curl_error($ch);
curl_close($ch);
if ($error !== '') {
exit('Request failed: ' . $error);
}
$data = json_decode((string) $response, true);
print_r($data['status']);
import json
import urllib.request
url = "https://darkxcode.pw/api/account/status"
payload = {
'api_key': 'dxx_YOUR_API_KEY',
}
request = urllib.request.Request(
url,
data=json.dumps(payload).encode("utf-8"),
headers={"Content-Type": "application/json"},
method="POST",
)
with urllib.request.urlopen(request, timeout=30) as response:
data = json.load(response)
print(data["status"])
const response = await fetch("https://darkxcode.pw/api/account/status", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({"api_key":"dxx_YOUR_API_KEY"}),
});
const data = await response.json();
console.log(data.status);
Response
{
"status": "success",
"user": {
"username": "user1",
"email": "[email protected]"
},
"credits": 50,
"subscription": {
"active": false,
"expires_at": null,
"days_left": 0
},
"billing": {
"source": "credits",
"premium_tools": ["checker", "validator-bounce", "backlink-checker", "carrier-lookup", "cc-checker", "office365", "paypal-validator"],
"checker_cost": 5,
"bounce_cost": 5,
"bounce_free_on": ["RETRY", "UNKNOWN"],
"backlink_cost": {"LIVE": 3, "DIE": 1, "RETRY": 0, "ERROR": 0},
"carrier_cost": {"LIVE": 3, "DIE": 1, "RETRY": 0, "UNKNOWN": 0},
"office365_cost": {"LIVE": 5, "DIE": 3, "RETRY": 0, "UNKNOWN": 0},
"paypal_cost": {"LIVE": 5, "DIE": 2, "RETRY": 0, "UNKNOWN": 0},
"cc_checker_cost": {"APPROVED": 5, "CVV": 5, "CCN": 3, "DIE": 1, "RETRY": 0},
"free_tools": ["dns-checker", "ip-checker", "port-scanner", "header-checker", "proxy-checker", "bin-checker"]
}
}
credits— Credit balance of the account.subscription— Subscription block: active, expires_at and days_left.billing.source— Billing source used by the next premium call: subscription or credits.billing— Premium and free tool lists with the credit costs.
/api/checker/check
Coming soon
Premium tool
Checker API
Run a single check. Credit cost follows the result status: LIVE, DIE, RETRY, or UNKNOWN.
This endpoint is not live yet
The Checker API is still being prepared. The request contract below is already final, so you can shape your integration now, but calls will be refused until the endpoint is enabled.
Request body
| Field | Type | Required | Description |
|---|---|---|---|
| input | string | Yes | Data to check, up to 255 characters. |
Announcements are posted on this page and on the dashboard once the endpoint opens.
/api/tools/validator-bounce
Validator Bounce API
Check whether an email address exists and can receive mail. Every request must be routed through your own proxy, and the bounce provider's message is returned in the response data.
Request headers
X-API-Key: YOUR_API_KEY(or an active session withX-CSRF-Token)Content-Type: application/jsonproxies— required — one proxy string per entry (host:port, user:pass@host:port or socks5://host:port)
Request body
The body accepts an email in input and a list of proxies. Proxies are tried in order: when one cannot reach the provider, the next is used automatically (up to 5 per request). Private and loopback addresses are rejected.
{
"input": "[email protected]",
"proxies": [
"1.2.3.4:8080",
"socks5://user:[email protected]:1080"
]
}
Integration samples
Integration samples
Replace dxx_YOUR_API_KEY with the key from the API Key page. Every sample sends the key in the JSON body.
curl -X POST https://darkxcode.pw/api/tools/validator-bounce \
-H "Content-Type: application/json" \
-d '{"api_key":"dxx_YOUR_API_KEY","input":"[email protected]","proxies":["1.2.3.4:8080"]}'
<?php
$payload = [
'api_key' => 'dxx_YOUR_API_KEY',
'input' => '[email protected]',
'proxies' => [
'1.2.3.4:8080',
],
];
$ch = curl_init('https://darkxcode.pw/api/tools/validator-bounce');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => json_encode($payload),
CURLOPT_HTTPHEADER => ['Content-Type: application/json'],
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
]);
$response = curl_exec($ch);
$error = curl_error($ch);
curl_close($ch);
if ($error !== '') {
exit('Request failed: ' . $error);
}
$data = json_decode((string) $response, true);
print_r($data['status']);
import json
import urllib.request
url = "https://darkxcode.pw/api/tools/validator-bounce"
payload = {
'api_key': 'dxx_YOUR_API_KEY',
'input': '[email protected]',
'proxies': ['1.2.3.4:8080'],
}
request = urllib.request.Request(
url,
data=json.dumps(payload).encode("utf-8"),
headers={"Content-Type": "application/json"},
method="POST",
)
with urllib.request.urlopen(request, timeout=30) as response:
data = json.load(response)
print(data["status"])
const response = await fetch("https://darkxcode.pw/api/tools/validator-bounce", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({"api_key":"dxx_YOUR_API_KEY","input":"[email protected]","proxies":["1.2.3.4:8080"]}),
});
const data = await response.json();
console.log(data.status);
Response
{
"type": "validator-bounce",
"tool": "validator-bounce",
"status": "LIVE",
"response": "LIVE DELIVERABLE / GMAIL / score 95 / Mailbox exists (free)",
"message": "Mailbox exists",
"info": "Mailbox exists",
"billing_message": "Status LIVE. 5 credits used.",
"proxy": "5.6.7.8:1080",
"proxies_tried": ["1.2.3.4:8080", "5.6.7.8:1080"],
"credit_used": 5,
"remaining_credit": 95,
"columns": {
"email": "[email protected]",
"username": "test",
"domain": "EXAMPLE.COM",
"mx": "gmail-smtp-in.l.google.com",
"provider": "GMAIL",
"score": "95",
"result": "DELIVERABLE",
"message": "Mailbox exists"
},
"items": [
{
"input": "[email protected]",
"status": "LIVE",
"response": "LIVE DELIVERABLE / GMAIL / score 95 / Mailbox exists (free)",
"message": "Mailbox exists",
"fields": {
"email": "[email protected]",
"provider": "GMAIL",
"score": "95",
"result": "DELIVERABLE",
"message": "Mailbox exists"
}
}
]
}
Response · Response fields
status— Check result status.proxy— proxy that produced the resultproxies_tried— every proxy attempted, in ordermessage/info— reason reported by the providercredit_used— Credits charged for this request.remaining_credit— Credits left after the check.
Response · Error responses
| HTTP | code | Meaning |
|---|---|---|
| 422 | error | Missing or invalid email address. |
| 422 | error | No proxy supplied, or the proxy list contains no usable entry. |
| 402 | error | Not enough credits (at least 5 are required to start a check). Omitted for active subscribers. |
| 429 | error | Rate limit reached (20 requests per minute per user). |
Active subscriptions are always used before credits, so subscribers are never charged. The cost chips above list the credits charged per result. The message field carries the reason reported by the provider data, and proxies_tried lists every proxy attempted for the request.
/api/tools/backlink-checker
Premium tool
JSON / Form
Backlink Checker API
Check whether a page contains a backlink: an anchor whose text or URL matches the keyword and points at the target domain. Proxies are optional and rotated automatically.
Request body
input—URL|keyword|domain_targetproxies— optional — one proxy string per line (host:port, user:pass@host:port or socks5://host:port)api_key— api_key field in a JSON body (X-API-Key request header)
The input field holds one entry in the URL|keyword|domain_target format, for example example.com/path/|keyword|target.com. The URL scheme is optional. Keyword matching is case-insensitive against the anchor text and href; the target domain is compared against the link host. Any proxy in the proxies list is tried in order, up to 5 per request, and private or loopback addresses are rejected. Leave proxies out to fetch from the server.
Integration samples
Replace dxx_YOUR_API_KEY with the key from the API Key page. Every sample sends the key in the JSON body.
curl -X POST https://darkxcode.pw/api/tools/backlink-checker \
-H "Content-Type: application/json" \
-d '{"api_key":"dxx_YOUR_API_KEY","input":"example.com/path/|keyword|target.com","proxies":["1.2.3.4:8080"]}'
<?php
$payload = [
'api_key' => 'dxx_YOUR_API_KEY',
'input' => 'example.com/path/|keyword|target.com',
'proxies' => [
'1.2.3.4:8080',
],
];
$ch = curl_init('https://darkxcode.pw/api/tools/backlink-checker');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => json_encode($payload),
CURLOPT_HTTPHEADER => ['Content-Type: application/json'],
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
]);
$response = curl_exec($ch);
$error = curl_error($ch);
curl_close($ch);
if ($error !== '') {
exit('Request failed: ' . $error);
}
$data = json_decode((string) $response, true);
print_r($data['status']);
import json
import urllib.request
url = "https://darkxcode.pw/api/tools/backlink-checker"
payload = {
'api_key': 'dxx_YOUR_API_KEY',
'input': 'example.com/path/|keyword|target.com',
'proxies': ['1.2.3.4:8080'],
}
request = urllib.request.Request(
url,
data=json.dumps(payload).encode("utf-8"),
headers={"Content-Type": "application/json"},
method="POST",
)
with urllib.request.urlopen(request, timeout=30) as response:
data = json.load(response)
print(data["status"])
const response = await fetch("https://darkxcode.pw/api/tools/backlink-checker", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({"api_key":"dxx_YOUR_API_KEY","input":"example.com/path/|keyword|target.com","proxies":["1.2.3.4:8080"]}),
});
const data = await response.json();
console.log(data.status);
Response
{
"type": "backlink-checker",
"tool": "backlink-checker",
"status": "LIVE",
"response": "Keyword found in 2 link(s) pointing to target.com.",
"message": "Keyword found in links",
"info": "Keyword found in links",
"billing_message": "Status LIVE. 3 credits used.",
"proxy": "1.2.3.4:8080",
"proxies_tried": ["1.2.3.4:8080"],
"credit_used": 3,
"remaining_credit": 97,
"data": {
"code": 200,
"status": "success",
"valid": true,
"info": {
"URL_target": "https://example.com/path/",
"keywords": "keyword",
"domain_target": "target.com",
"total_found": 2,
"msg": "Keyword found in links",
"detail_links": [
{
"keyword": "keyword anchor",
"link": "https://target.com/page",
"anchor_text": "keyword anchor"
}
]
}
},
"columns": {
"url": "https://example.com/path/",
"keyword": "keyword",
"target_domain": "target.com",
"total_found": "2",
"message": "Keyword found in links"
},
"items": [
{
"input": "keyword|target.com",
"status": "LIVE",
"response": "Keyword found in 2 link(s) pointing to target.com.",
"message": "Keyword found in links",
"fields": {
"url": "https://example.com/path/",
"keyword": "keyword",
"target_domain": "target.com",
"total_found": "2",
"message": "Keyword found in links"
}
}
]
}
Response · Response fields
status— Check result status.data.info.total_found— number of matching links found.data.info.detail_links— matching links with keyword, link and anchor_text (data.info.detail_links).message/info— message from the info block, echoed in message / info.proxy— proxy that produced the result (null when none was used).proxies_tried— every proxy attempted, in ordercredit_used— Credits charged for this request.remaining_credit— Credits left after the check.
Response · Error responses
| HTTP | code | Meaning |
|---|---|---|
| 422 | error | Input is empty or not in the URL|keyword|domain_target format, or the URL is invalid. |
| 422 | error | The proxies list was provided but contains no usable entry. |
| 402 | error | Not enough credits (at least 1 is required to start a check). Omitted for active subscribers. |
| 429 | error | Rate limit reached (20 requests per hour per user). |
Active subscriptions are always used before credits, so subscribers are never charged. The cost chips above list the credits charged per result. The message field carries the msg value from the response info block, and data.info.detail_links lists every matching anchor.
/api/tools/carrier-lookup
Premium tool
JSON / Form
Carrier Lookup API
Resolve the carrier and line type of a US or Canadian phone number. A proxy is required and the proxy list is rotated automatically until a result is returned.
Request body
input—1231231234or+1 1231231234country—us(United States) orca(Canada); defaults to usproxies— required — one proxy string per line (host:port, user:pass@host:port or socks5://host:port)api_key— api_key field in a JSON body (X-API-Key request header)
The input field holds one phone number per request, with or without the +1 country code; every non-digit character (spaces, dashes, parentheses) is ignored. Only 10-digit United States and Canadian numbers are supported. Each proxy in the list is tried in order, up to 5 per request, and private or loopback addresses are rejected.
Integration samples
Replace dxx_YOUR_API_KEY with the key from the API Key page. Every sample sends the key in the JSON body.
curl -X POST https://darkxcode.pw/api/tools/carrier-lookup \
-H "Content-Type: application/json" \
-d '{"api_key":"dxx_YOUR_API_KEY","input":"+1 1231231234","country":"us","proxies":["1.2.3.4:8080"]}'
<?php
$payload = [
'api_key' => 'dxx_YOUR_API_KEY',
'input' => '+1 1231231234',
'country' => 'us',
'proxies' => [
'1.2.3.4:8080',
],
];
$ch = curl_init('https://darkxcode.pw/api/tools/carrier-lookup');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => json_encode($payload),
CURLOPT_HTTPHEADER => ['Content-Type: application/json'],
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
]);
$response = curl_exec($ch);
$error = curl_error($ch);
curl_close($ch);
if ($error !== '') {
exit('Request failed: ' . $error);
}
$data = json_decode((string) $response, true);
print_r($data['status']);
import json
import urllib.request
url = "https://darkxcode.pw/api/tools/carrier-lookup"
payload = {
'api_key': 'dxx_YOUR_API_KEY',
'input': '+1 1231231234',
'country': 'us',
'proxies': ['1.2.3.4:8080'],
}
request = urllib.request.Request(
url,
data=json.dumps(payload).encode("utf-8"),
headers={"Content-Type": "application/json"},
method="POST",
)
with urllib.request.urlopen(request, timeout=30) as response:
data = json.load(response)
print(data["status"])
const response = await fetch("https://darkxcode.pw/api/tools/carrier-lookup", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({"api_key":"dxx_YOUR_API_KEY","input":"+1 1231231234","country":"us","proxies":["1.2.3.4:8080"]}),
});
const data = await response.json();
console.log(data.status);
Response
{
"type": "carrier-lookup",
"tool": "carrier-lookup",
"status": "LIVE",
"response": "Carrier found: Verizon Wireless (Wireless)",
"message": "Carrier found: Verizon Wireless (Wireless)",
"info": "Carrier found: Verizon Wireless (Wireless)",
"billing_message": "Status LIVE. 3 credits used.",
"proxy": "1.2.3.4:8080",
"proxies_tried": ["1.2.3.4:8080"],
"credit_used": 3,
"remaining_credit": 97,
"data": {
"code": 200,
"status": "success",
"valid": true,
"msg": "Carrier found: Verizon Wireless (Wireless)",
"info": {
"phone": "1231231234",
"country": "United States",
"country_code": "US",
"code_country": "+1",
"code_phone": "123",
"state": "Texas",
"phone_number": "+1 123-123-1234",
"carrier": "Verizon Wireless",
"line_type": "Wireless",
"wireless": "Y",
"sms_gateway": "@vtext.com",
"mms_gateway": "@vzwpix.com"
}
},
"columns": {
"phone": "+1 123-123-1234",
"country": "United States",
"area_code": "123",
"state": "Texas",
"carrier": "Verizon Wireless",
"line_type": "Wireless",
"gateway": "@vtext.com",
"message": "Carrier found: Verizon Wireless (Wireless)"
},
"items": [
{
"input": "+1 1231231234",
"status": "LIVE",
"response": "Carrier found: Verizon Wireless (Wireless)",
"message": "Carrier found: Verizon Wireless (Wireless)",
"fields": {
"phone": "+1 123-123-1234",
"country": "United States",
"area_code": "123",
"state": "Texas",
"carrier": "Verizon Wireless",
"line_type": "Wireless",
"gateway": "@vtext.com",
"message": "Carrier found: Verizon Wireless (Wireless)"
}
}
]
}
Response · Response fields
status— Check result status.data.info.carrier— carrier name reported by the source.data.info.line_type— line type (for example Wireless or Landline).data.info.state/province— state for US numbers, province/city for Canadian numbers, from the area code.data.info.sms_gateway/mms_gateway— SMS/MMS e-mail gateways for known carriers, otherwise Unknown Gateway.message/info— message from the info block, echoed in message / info.proxy— proxy that produced the result (null when none was used).proxies_tried— every proxy attempted, in ordercredit_used— Credits charged for this request.remaining_credit— Credits left after the check.
Response · Error responses
| HTTP | code | Meaning |
|---|---|---|
| 422 | error | Input is empty or not a valid 10-digit number (1231231234 or +1 1231231234). |
| 422 | error | Country is not us or ca. |
| 422 | error | No usable proxy was supplied (the proxies list is required). |
| 402 | error | Not enough credits (at least 1 is required to start a lookup). Omitted for active subscribers. |
| 429 | error | Rate limit reached (20 requests per hour per user). |
Active subscriptions are always used before credits, so subscribers are never charged. The cost chips above list the credits charged per result. The message field carries the msg value from the response info block.
/api/tools/bin-checker
Free tool
JSON / Form
BIN Checker API
Look up the scheme, type, brand, prepaid flag, issuing bank and country of a card BIN through lookup.binlist.net. A proxy is required and the proxy list is rotated automatically until binlist answers.
Request body
input—45717360(6 to 8 digits)proxies— required — one proxy string per line (host:port, user:pass@host:port or socks5://host:port)api_key— api_key field in a JSON body (X-API-Key request header)
The input field holds one BIN per request: 6 to 8 digits. A proxy is mandatory because binlist rate limits per IP. Each proxy in the list is tried in order, up to 5 per request, and the next proxy is used immediately on a dead proxy or an HTTP 429 from binlist; private or loopback addresses are rejected.
Integration samples
Replace dxx_YOUR_API_KEY with the key from the API Key page. Every sample sends the key in the JSON body.
curl -X POST https://darkxcode.pw/api/tools/bin-checker \
-H "Content-Type: application/json" \
-d '{"api_key":"dxx_YOUR_API_KEY","input":"45717360","proxies":["1.2.3.4:8080"]}'
<?php
$payload = [
'api_key' => 'dxx_YOUR_API_KEY',
'input' => '45717360',
'proxies' => [
'1.2.3.4:8080',
],
];
$ch = curl_init('https://darkxcode.pw/api/tools/bin-checker');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => json_encode($payload),
CURLOPT_HTTPHEADER => ['Content-Type: application/json'],
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
]);
$response = curl_exec($ch);
$error = curl_error($ch);
curl_close($ch);
if ($error !== '') {
exit('Request failed: ' . $error);
}
$data = json_decode((string) $response, true);
print_r($data['status']);
import json
import urllib.request
url = "https://darkxcode.pw/api/tools/bin-checker"
payload = {
'api_key': 'dxx_YOUR_API_KEY',
'input': '45717360',
'proxies': ['1.2.3.4:8080'],
}
request = urllib.request.Request(
url,
data=json.dumps(payload).encode("utf-8"),
headers={"Content-Type": "application/json"},
method="POST",
)
with urllib.request.urlopen(request, timeout=30) as response:
data = json.load(response)
print(data["status"])
const response = await fetch("https://darkxcode.pw/api/tools/bin-checker", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({"api_key":"dxx_YOUR_API_KEY","input":"45717360","proxies":["1.2.3.4:8080"]}),
});
const data = await response.json();
console.log(data.status);
Response
{
"type": "bin-checker",
"tool": "bin-checker",
"status": "LIVE",
"response": "BIN found: visa / JPMORGAN CHASE BANK, N.A. / 🇺🇸 United States",
"message": "BIN information available.",
"info": "BIN information available.",
"billing_message": "Status LIVE. Free tool — no credits charged.",
"proxy": "1.2.3.4:8080",
"proxies_tried": ["1.2.3.4:8080"],
"credit_used": 0,
"remaining_credit": 100,
"data": {
"code": 200,
"status": "success",
"valid": true,
"msg": "BIN information available.",
"info": {
"bin": "45717360",
"scheme": "visa",
"type": "debit",
"brand": "Visa",
"prepaid": false,
"number_length": 16,
"luhn": true,
"bank": "JPMORGAN CHASE BANK, N.A.",
"bank_url": "www.jpmorganchase.com",
"bank_phone": "1-800-935-9935",
"bank_city": "New York",
"country": "🇺🇸 United States",
"country_alpha2": "US",
"country_emoji": "🇺🇸",
"country_name": "United States",
"currency": "USD"
}
},
"columns": {
"bin": "45717360",
"scheme": "visa",
"type": "debit",
"brand": "Visa",
"prepaid": "No",
"bank": "JPMORGAN CHASE BANK, N.A.",
"country": "🇺🇸 United States",
"message": "BIN information available."
},
"items": [
{
"input": "45717360",
"status": "LIVE",
"response": "BIN found: visa / JPMORGAN CHASE BANK, N.A. / 🇺🇸 United States",
"message": "BIN information available.",
"fields": {
"bin": "45717360",
"scheme": "visa",
"type": "debit",
"brand": "Visa",
"prepaid": "No",
"bank": "JPMORGAN CHASE BANK, N.A.",
"country": "🇺🇸 United States",
"message": "BIN information available."
}
}
],
"credits": {
"used": 0,
"remaining": 100
}
}
Response · Response fields
status— Check result status.data.info.scheme— card scheme reported by binlist (for example visa or mastercard).data.info.type— card type (for example debit or credit).data.info.brand— card brand, when binlist reports one.data.info.prepaid— Yes or No when binlist reports the prepaid flag, otherwise -.data.info.bank— issuing bank name, or - when binlist has none.data.info.country— emoji flag and country name of the issuing country.message/info— verdict message from the info block, echoed in message / info.proxy— proxy that produced the result (null when none was used).proxies_tried— every proxy attempted, in ordercredit_used— Credits charged for this request.remaining_credit— Credits left after the check.
Response · Error responses
| HTTP | code | Meaning |
|---|---|---|
| 422 | error | Input is empty or not a 6 to 8 digit BIN. |
| 422 | error | No usable proxy was supplied (the proxies list is required). |
| 429 | error | API rate limit reached (10 BINs per second per user). |
/api/tools/cc-checker
Premium tool
JSON / Form
CC Checker API
Check a card list and categorize the gateway response as APPROVED, CVV, CCN, or DIE. Pick the gateway (PayPal, Stripe, Braintree, Square or VBV) to choose the message pool; results are random with 15 declines for every 2 approvals. The CVV is optional for the VBV gateway: number|month|year is accepted there. A proxy is required and the proxy list is rotated automatically until binlist answers.
Request body
input—4400225648037878|01|2034|490or4400225648037878:01:34:490gateway— gateway to simulate; one of paypal, stripe, braintree, square or vbv (default stripe)proxies— required — one proxy string per line, protocol://user:password@ip:port or protocol://ip:port (http, https, socks4 or socks5)api_key— api_key field in a JSON body (X-API-Key request header)
The input field holds one card list per request: number|month|year|cvv or number:month:year:cvv. With the VBV gateway the CVV may be left out (number|month|year), because VBV only runs the 3-D Secure step. The card number may be 13 to 19 digits, the year two or four digits, and the CVV three or four digits (American Express needs four). The gateway field selects the legacy message pool; A proxy is mandatory because binlist rate limits per IP; each proxy is tried in order, up to 5 per request, and private or loopback addresses are rejected.
Integration samples
Replace dxx_YOUR_API_KEY with the key from the API Key page. Every sample sends the key in the JSON body.
curl -X POST https://darkxcode.pw/api/tools/cc-checker \
-H "Content-Type: application/json" \
-d '{"api_key":"dxx_YOUR_API_KEY","input":"4400225648037878|01|2034|490","gateway":"stripe","proxies":["socks5://user:[email protected]:1080"]}'
<?php
$payload = [
'api_key' => 'dxx_YOUR_API_KEY',
'input' => '4400225648037878|01|2034|490',
'gateway' => 'stripe',
'proxies' => [
'socks5://user:[email protected]:1080',
],
];
$ch = curl_init('https://darkxcode.pw/api/tools/cc-checker');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => json_encode($payload),
CURLOPT_HTTPHEADER => ['Content-Type: application/json'],
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
]);
$response = curl_exec($ch);
$error = curl_error($ch);
curl_close($ch);
if ($error !== '') {
exit('Request failed: ' . $error);
}
$data = json_decode((string) $response, true);
print_r($data['status']);
import json
import urllib.request
url = "https://darkxcode.pw/api/tools/cc-checker"
payload = {
'api_key': 'dxx_YOUR_API_KEY',
'input': '4400225648037878|01|2034|490',
'gateway': 'stripe',
'proxies': ['socks5://user:[email protected]:1080'],
}
request = urllib.request.Request(
url,
data=json.dumps(payload).encode("utf-8"),
headers={"Content-Type": "application/json"},
method="POST",
)
with urllib.request.urlopen(request, timeout=30) as response:
data = json.load(response)
print(data["status"])
const response = await fetch("https://darkxcode.pw/api/tools/cc-checker", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({"api_key":"dxx_YOUR_API_KEY","input":"4400225648037878|01|2034|490","gateway":"stripe","proxies":["socks5://user:[email protected]:1080"]}),
});
const data = await response.json();
console.log(data.status);
Response
{
"type": "cc-checker",
"tool": "cc-checker",
"gateway": "stripe",
"status": "APPROVED",
"response": "approved",
"message": "approved",
"info": "approved",
"billing_message": "Status APPROVED. 5 credits used.",
"proxy": "1.2.3.4:8080",
"proxies_tried": ["1.2.3.4:8080"],
"credit_used": 5,
"remaining_credit": 95,
"data": {
"code": 200,
"status": "success",
"valid": true,
"msg": "approved",
"info": {
"cc": "4400225648037878",
"list": "4400225648037878|01|2034|490",
"bin": "440022",
"scheme": "visa",
"type": "credit",
"brand": "Visa",
"prepaid": false,
"bank": "EXAMPLE BANK",
"country": "🇺🇸 United States",
"gateway": "stripe",
"category": "APPROVED",
"message": "approved"
}
},
"columns": {
"cc": "4400225648037878|01|2034|490",
"scheme": "visa",
"type": "credit",
"brand": "Visa",
"prepaid": "No",
"bank": "EXAMPLE BANK",
"country": "🇺🇸 United States",
"message": "approved"
},
"items": [
{
"input": "4400225648037878|01|2034|490",
"status": "APPROVED",
"response": "approved",
"message": "approved",
"fields": {
"cc": "4400225648037878|01|2034|490",
"scheme": "visa",
"type": "credit",
"brand": "Visa",
"prepaid": "No",
"bank": "EXAMPLE BANK",
"country": "🇺🇸 United States",
"message": "approved"
}
}
],
"credits": { "used": 5, "remaining": 95 }
}
Response · DIE
{
"type": "cc-checker",
"tool": "cc-checker",
"gateway": "stripe",
"status": "DIE",
"response": "Your card was declined.",
"message": "Your card was declined.",
"credit_used": 1,
"remaining_credit": 99,
"data": {
"status": "failed",
"valid": false,
"msg": "Your card was declined."
},
"columns": {
"cc": "4400225648037878|01|2034|490",
"status": "DIE",
"message": "Your card was declined."
}
}
Response · Response fields
status— Check result status.gateway— gateway that produced this result.data.info.list— card list echoed back in number|month|year|cvv form, or number|month|year when a VBV check was sent without a CVV.data.info.scheme— card scheme reported by binlist (for example visa or mastercard).data.info.type— card type (for example debit or credit).data.info.brand— card brand, when binlist reports one.data.info.prepaid— Yes or No when binlist reports the prepaid flag, otherwise -.data.info.bank— issuing bank name, or - when binlist has none.data.info.country— emoji flag and country name of the issuing country.data.info.category— APPROVED, CVV, CCN, or DIE. It is also returned as status.data.info.message— gateway message that produced the category.credit_used— Credits charged for this request.remaining_credit— Credits left after the check.
Response message categories
| Check result status. | gateway message that produced the category. |
|---|---|
| APPROVED | approved, success, approv, thank you, cvc_check, one-time, succeeded, authenticate successful, authenticate attempt successful, authenticate unavailable, authenticate unable to authenticate. |
| CVV | transaction_not_allowed, authentication_required, your card zip code is incorrect, card_error_authentication_required, three_d_secure_redirect, invalid_billing_address, address_verification_failure. |
| CCN | incorrect_cvc, invalid_cvc, insufficient_funds, invalid_security_code, cvv_failure. |
| DIE | failed, or any other decline message from the selected gateway (for example "Your card was declined." or "Card Declined"); the message is always returned in the message field. |
Response · Error responses
| HTTP | code | Meaning |
|---|---|---|
| 422 | error | Input is empty or not in number|month|year|cvv format, the card is expired, or the CVV length is wrong. |
| 422 | error | No usable proxy was supplied (the proxies list is required). |
| 402 | error | Not enough credits (at least 1 is required to start a check). Omitted for active subscribers. |
| 429 | error | API rate limit reached (50 cards per second per user). |
Active subscriptions are always used before credits, so subscribers are never charged. The cost chips above list the credits charged per result. The web interface is paced at 10 cards per second and the API allows 50 cards per second per user.
/api/tools/office365
Premium tool
JSON / Form
Office365 Checker API
Sign in to a Microsoft 365 mailbox to check whether the credentials are valid. A proxy is required and the proxy list is rotated automatically until the login server answers.
Request body
input—[email protected]|passwordor[email protected]:passwordproxies— required — one proxy string per line (host:port, user:pass@host:port or socks5://host:port)api_key— api_key field in a JSON body (X-API-Key request header)
The input field holds one account per request in the form email|pass or email:pass; the first separator is used, so a password may contain the other one. Each proxy in the list is tried in order, up to 5 per request, and private or loopback addresses are rejected. A rejected login (wrong password, locked or disabled account) is a normal DIE answer and is billed; RETRY and UNKNOWN mean the login server could not be reached and are free.
Integration samples
Replace dxx_YOUR_API_KEY with the key from the API Key page. Every sample sends the key in the JSON body.
curl -X POST https://darkxcode.pw/api/tools/office365 \
-H "Content-Type: application/json" \
-d '{"api_key":"dxx_YOUR_API_KEY","input":"[email protected]|password","proxies":["1.2.3.4:8080"]}'
<?php
$payload = [
'api_key' => 'dxx_YOUR_API_KEY',
'input' => '[email protected]|password',
'proxies' => [
'1.2.3.4:8080',
],
];
$ch = curl_init('https://darkxcode.pw/api/tools/office365');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => json_encode($payload),
CURLOPT_HTTPHEADER => ['Content-Type: application/json'],
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
]);
$response = curl_exec($ch);
$error = curl_error($ch);
curl_close($ch);
if ($error !== '') {
exit('Request failed: ' . $error);
}
$data = json_decode((string) $response, true);
print_r($data['status']);
import json
import urllib.request
url = "https://darkxcode.pw/api/tools/office365"
payload = {
'api_key': 'dxx_YOUR_API_KEY',
'input': '[email protected]|password',
'proxies': ['1.2.3.4:8080'],
}
request = urllib.request.Request(
url,
data=json.dumps(payload).encode("utf-8"),
headers={"Content-Type": "application/json"},
method="POST",
)
with urllib.request.urlopen(request, timeout=30) as response:
data = json.load(response)
print(data["status"])
const response = await fetch("https://darkxcode.pw/api/tools/office365", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({"api_key":"dxx_YOUR_API_KEY","input":"[email protected]|password","proxies":["1.2.3.4:8080"]}),
});
const data = await response.json();
console.log(data.status);
Response
{
"type": "office365",
"tool": "office365",
"status": "LIVE",
"response": "SUCCESS LOGIN",
"message": "SUCCESS LOGIN",
"info": "SUCCESS LOGIN",
"billing_message": "Status LIVE. 5 credits used.",
"proxy": "1.2.3.4:8080",
"proxies_tried": [
"1.2.3.4:8080"
],
"credit_used": 5,
"remaining_credit": 95,
"data": {
"code": 200,
"status": "success",
"valid": true,
"msg": "SUCCESS LOGIN",
"info": {
"email": "[email protected]",
"password": "password",
"server_code": "200",
"error": "",
"msg": "SUCCESS LOGIN"
}
},
"columns": {
"email": "[email protected]",
"password": "password",
"status": "LIVE",
"message": "SUCCESS LOGIN",
"detail": "-"
},
"items": [
{
"input": "[email protected]:password",
"status": "LIVE",
"response": "SUCCESS LOGIN",
"message": "SUCCESS LOGIN",
"fields": {
"email": "[email protected]",
"password": "password",
"status": "LIVE",
"message": "SUCCESS LOGIN",
"detail": "-"
}
}
],
"credits": {
"used": 5,
"remaining": 95
}
}
Response · Response fields
status— Check result status.data.info.email— the mailbox address that was checked.data.info.password— the password supplied in the input, echoed back so results can be copied together with the credentials.data.info.server_code— HTTP status returned by the token endpoint.data.info.error— raw error_description returned by Microsoft (empty on LIVE).message/info— verdict message from the info block, echoed in message / info.proxy— proxy that produced the result (null when none was used).proxies_tried— every proxy attempted, in ordercredit_used— Credits charged for this request.remaining_credit— Credits left after the check.
Response · Error responses
| HTTP | code | Meaning |
|---|---|---|
| 422 | error | Input is empty or not in the email|pass / email:pass format. |
| 422 | error | No usable proxy was supplied (the proxies list is required). |
| 402 | error | Not enough credits (at least 3 are required to start a check). Omitted for active subscribers. |
| 429 | error | Rate limit reached (20 requests per hour per user). |
Active subscriptions are always used before credits, so subscribers are never charged. The cost chips above list the credits charged per result. The message field carries the msg value from the response info block.
/api/tools/paypal-validator
Premium tool
JSON / Form
PayPal Validator API
Check whether an email address has a registered account. A proxy is required and the proxy list is rotated automatically until the login server answers.
Request body
input—[email protected]proxies— required — one proxy string per line (host:port, user:pass@host:port or socks5://host:port)api_key— api_key field in a JSON body (X-API-Key request header)
The input field holds one email address per request ([email protected]). Each proxy in the list is tried in order, up to 5 per request, and private or loopback addresses are rejected. The country lookup runs through the same proxy; when it cannot answer the country column stays empty. RETRY and UNKNOWN mean the login server could not be reached and are free.
Integration samples
Replace dxx_YOUR_API_KEY with the key from the API Key page. Every sample sends the key in the JSON body.
curl -X POST https://darkxcode.pw/api/tools/paypal-validator \
-H "Content-Type: application/json" \
-d '{"api_key":"dxx_YOUR_API_KEY","input":"[email protected]","proxies":["1.2.3.4:8080"]}'
<?php
$payload = [
'api_key' => 'dxx_YOUR_API_KEY',
'input' => '[email protected]',
'proxies' => [
'1.2.3.4:8080',
],
];
$ch = curl_init('https://darkxcode.pw/api/tools/paypal-validator');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => json_encode($payload),
CURLOPT_HTTPHEADER => ['Content-Type: application/json'],
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
]);
$response = curl_exec($ch);
$error = curl_error($ch);
curl_close($ch);
if ($error !== '') {
exit('Request failed: ' . $error);
}
$data = json_decode((string) $response, true);
print_r($data['status']);
import json
import urllib.request
url = "https://darkxcode.pw/api/tools/paypal-validator"
payload = {
'api_key': 'dxx_YOUR_API_KEY',
'input': '[email protected]',
'proxies': ['1.2.3.4:8080'],
}
request = urllib.request.Request(
url,
data=json.dumps(payload).encode("utf-8"),
headers={"Content-Type": "application/json"},
method="POST",
)
with urllib.request.urlopen(request, timeout=30) as response:
data = json.load(response)
print(data["status"])
const response = await fetch("https://darkxcode.pw/api/tools/paypal-validator", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({"api_key":"dxx_YOUR_API_KEY","input":"[email protected]","proxies":["1.2.3.4:8080"]}),
});
const data = await response.json();
console.log(data.status);
Response
{
"type": "paypal-validator",
"tool": "paypal-validator",
"status": "LIVE",
"response": "EMAIL VALID",
"message": "EMAIL VALID",
"info": "EMAIL VALID",
"billing_message": "Status LIVE. 5 credits used.",
"proxy": "1.2.3.4:8080",
"proxies_tried": [
"1.2.3.4:8080"
],
"credit_used": 5,
"remaining_credit": 95,
"data": {
"code": 200,
"status": "success",
"valid": true,
"msg": "EMAIL VALID",
"info": {
"email": "[email protected]",
"exists": true,
"country": "Indonesia",
"country_code": "ID"
}
},
"columns": {
"email": "[email protected]",
"country": "(ID) INDONESIA",
"status": "LIVE",
"message": "EMAIL VALID"
},
"items": [
{
"input": "[email protected]",
"status": "LIVE",
"response": "EMAIL VALID",
"message": "EMAIL VALID",
"fields": {
"email": "[email protected]",
"country": "(ID) INDONESIA",
"status": "LIVE",
"message": "EMAIL VALID"
}
}
],
"credits": {
"used": 5,
"remaining": 95
}
}
Response · Response fields
status— Check result status.data.info.email— the mailbox address that was checked.data.info.exists— true when the address is registered, false otherwise.data.info.country— country name resolved from the email domain (empty when the geo lookup fails).data.info.country_code— two-letter country code that prefixes the country column, e.g. (ID) INDONESIA.proxy— proxy that produced the result (null when none was used).proxies_tried— every proxy attempted, in ordercredit_used— Credits charged for this request.remaining_credit— Credits left after the check.
Response · Error responses
| HTTP | code | Meaning |
|---|---|---|
| 422 | error | Input is empty or not a valid email address. |
| 422 | error | No usable proxy was supplied (the proxies list is required). |
| 402 | error | Not enough credits (at least 2 are required to start a check). Omitted for active subscribers. |
| 429 | error | Rate limit reached (10 requests per second per user). |
Active subscriptions are always used before credits, so subscribers are never charged. The cost chips above list the credits charged per result.
/api/tools/dns-checker
Free tool
JSON / Form
DNS API
Resolve the A records of a domain. Up to five addresses are returned, comma separated. Free tool: no credits are charged.
Request body
input— Domain name, with or without scheme, e.g. example.com.api_key— api_key field in a JSON body
Integration samples
Replace dxx_YOUR_API_KEY with the key from the API Key page. Every sample sends the key in the JSON body.
curl -X POST https://darkxcode.pw/api/tools/dns-checker \
-H "Content-Type: application/json" \
-d '{"api_key":"dxx_YOUR_API_KEY","input":"example.com"}'
<?php
$payload = [
'api_key' => 'dxx_YOUR_API_KEY',
'input' => 'example.com',
];
$ch = curl_init('https://darkxcode.pw/api/tools/dns-checker');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => json_encode($payload),
CURLOPT_HTTPHEADER => ['Content-Type: application/json'],
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
]);
$response = curl_exec($ch);
$error = curl_error($ch);
curl_close($ch);
if ($error !== '') {
exit('Request failed: ' . $error);
}
$data = json_decode((string) $response, true);
print_r($data['status']);
import json
import urllib.request
url = "https://darkxcode.pw/api/tools/dns-checker"
payload = {
'api_key': 'dxx_YOUR_API_KEY',
'input': 'example.com',
}
request = urllib.request.Request(
url,
data=json.dumps(payload).encode("utf-8"),
headers={"Content-Type": "application/json"},
method="POST",
)
with urllib.request.urlopen(request, timeout=30) as response:
data = json.load(response)
print(data["status"])
const response = await fetch("https://darkxcode.pw/api/tools/dns-checker", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({"api_key":"dxx_YOUR_API_KEY","input":"example.com"}),
});
const data = await response.json();
console.log(data.status);
Response
{
"domain": "example.com",
"type": "dns-checker",
"value": "172.66.147.243, 104.20.23.154",
"ttl": "-",
"tool": "dns-checker",
"status": "LIVE",
"response": "example.com -> 172.66.147.243, 104.20.23.154",
"message": "Status LIVE. No credits charged.",
"credit_used": 0,
"remaining_credit": 50,
"columns": {
"domain": "example.com",
"type": "A",
"value": "172.66.147.243, 104.20.23.154",
"ttl": "-"
},
"items": [
{
"input": "",
"status": "LIVE",
"response": "example.com -> 172.66.147.243, 104.20.23.154",
"fields": {
"domain": "example.com",
"type": "A",
"value": "172.66.147.243, 104.20.23.154",
"ttl": "-"
}
}
]
}
Tool-specific fields
domain— Resolved domain.type— Record type queried (A).value— Address list, comma separated, or "-" when none was found.ttl— Reserved, currently always "-".
The items array carries one entry per processed item, with the same fields under fields.
/api/tools/ip-checker
Free tool
JSON / Form
IP Checker API
Validate an IPv4 or IPv6 address and return its reverse DNS name. Free tool: no credits are charged.
Request body
input— IPv4 or IPv6 address, e.g. 8.8.8.8.api_key— api_key field in a JSON body
Integration samples
Replace dxx_YOUR_API_KEY with the key from the API Key page. Every sample sends the key in the JSON body.
curl -X POST https://darkxcode.pw/api/tools/ip-checker \
-H "Content-Type: application/json" \
-d '{"api_key":"dxx_YOUR_API_KEY","input":"8.8.8.8"}'
<?php
$payload = [
'api_key' => 'dxx_YOUR_API_KEY',
'input' => '8.8.8.8',
];
$ch = curl_init('https://darkxcode.pw/api/tools/ip-checker');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => json_encode($payload),
CURLOPT_HTTPHEADER => ['Content-Type: application/json'],
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
]);
$response = curl_exec($ch);
$error = curl_error($ch);
curl_close($ch);
if ($error !== '') {
exit('Request failed: ' . $error);
}
$data = json_decode((string) $response, true);
print_r($data['status']);
import json
import urllib.request
url = "https://darkxcode.pw/api/tools/ip-checker"
payload = {
'api_key': 'dxx_YOUR_API_KEY',
'input': '8.8.8.8',
}
request = urllib.request.Request(
url,
data=json.dumps(payload).encode("utf-8"),
headers={"Content-Type": "application/json"},
method="POST",
)
with urllib.request.urlopen(request, timeout=30) as response:
data = json.load(response)
print(data["status"])
const response = await fetch("https://darkxcode.pw/api/tools/ip-checker", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({"api_key":"dxx_YOUR_API_KEY","input":"8.8.8.8"}),
});
const data = await response.json();
console.log(data.status);
Response
{
"ip": "8.8.8.8",
"country": "-",
"isp": "dns.google",
"type": "ip-checker",
"tool": "ip-checker",
"status": "LIVE",
"response": "IPv4 / dns.google (public)",
"message": "Status LIVE. No credits charged.",
"credit_used": 0,
"remaining_credit": 50,
"columns": {
"ip": "8.8.8.8",
"country": "-",
"isp": "dns.google"
},
"items": [
{
"input": "",
"status": "LIVE",
"response": "IPv4 / dns.google (public)",
"fields": {
"ip": "8.8.8.8",
"country": "-",
"isp": "dns.google"
}
}
]
}
Tool-specific fields
ip— Address that was checked.country— Reserved, currently always "-".isp— Reverse DNS name, or "-" when unavailable.
The items array carries one entry per processed item, with the same fields under fields.
/api/tools/port-scanner
Free tool
JSON / Form
Port Scanner API
Test TCP connectivity for one or more host/port pairs. One pair per line in input, up to 10 per request. Free tool: no credits are charged.
Request body
input— One "host port" pair per line, e.g. example.com 443. Ports with a known name return the service label.api_key— api_key field in a JSON body
Integration samples
Replace dxx_YOUR_API_KEY with the key from the API Key page. Every sample sends the key in the JSON body.
curl -X POST https://darkxcode.pw/api/tools/port-scanner \
-H "Content-Type: application/json" \
-d '{"api_key":"dxx_YOUR_API_KEY","input":"example.com 443\nexample.com 80"}'
<?php
$payload = [
'api_key' => 'dxx_YOUR_API_KEY',
'input' => "example.com 443\nexample.com 80",
];
$ch = curl_init('https://darkxcode.pw/api/tools/port-scanner');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => json_encode($payload),
CURLOPT_HTTPHEADER => ['Content-Type: application/json'],
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
]);
$response = curl_exec($ch);
$error = curl_error($ch);
curl_close($ch);
if ($error !== '') {
exit('Request failed: ' . $error);
}
$data = json_decode((string) $response, true);
print_r($data['status']);
import json
import urllib.request
url = "https://darkxcode.pw/api/tools/port-scanner"
payload = {
'api_key': 'dxx_YOUR_API_KEY',
'input': "example.com 443\nexample.com 80",
}
request = urllib.request.Request(
url,
data=json.dumps(payload).encode("utf-8"),
headers={"Content-Type": "application/json"},
method="POST",
)
with urllib.request.urlopen(request, timeout=30) as response:
data = json.load(response)
print(data["status"])
const response = await fetch("https://darkxcode.pw/api/tools/port-scanner", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({"api_key":"dxx_YOUR_API_KEY","input":"example.com 443\nexample.com 80"}),
});
const data = await response.json();
console.log(data.status);
Response
{
"host": "example.com",
"port": "443",
"service": "HTTPS",
"columns": {
"host": "example.com",
"port": "443",
"service": "HTTPS"
},
"type": "port-scanner",
"tool": "port-scanner",
"status": "LIVE",
"response": "Port 443 is open (TCP).",
"message": "Status LIVE. No credits charged.",
"credit_used": 0,
"remaining_credit": 50,
"items": [
{
"input": "example.com:443",
"status": "LIVE",
"response": "Port 443 is open (TCP).",
"fields": {
"host": "example.com",
"port": "443",
"service": "HTTPS"
}
},
{
"input": "example.com:80",
"status": "LIVE",
"response": "Port 80 is open (TCP).",
"fields": {
"host": "example.com",
"port": "80",
"service": "HTTP"
}
}
]
}
Tool-specific fields
host— Host that was scanned.port— Port number.service— Service label for the port, or UNKNOWN.
The items array carries one entry per processed item, with the same fields under fields.
/api/tools/header-checker
Free tool
JSON / Form
Header Checker API
Fetch a URL and report the HTTP status code, the Server header, the content type and the response size. Free tool: no credits are charged.
Request body
input— Absolute URL including http:// or https://, e.g. https://example.com.api_key— api_key field in a JSON body
Integration samples
Replace dxx_YOUR_API_KEY with the key from the API Key page. Every sample sends the key in the JSON body.
curl -X POST https://darkxcode.pw/api/tools/header-checker \
-H "Content-Type: application/json" \
-d '{"api_key":"dxx_YOUR_API_KEY","input":"https://example.com"}'
<?php
$payload = [
'api_key' => 'dxx_YOUR_API_KEY',
'input' => 'https://example.com',
];
$ch = curl_init('https://darkxcode.pw/api/tools/header-checker');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => json_encode($payload),
CURLOPT_HTTPHEADER => ['Content-Type: application/json'],
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
]);
$response = curl_exec($ch);
$error = curl_error($ch);
curl_close($ch);
if ($error !== '') {
exit('Request failed: ' . $error);
}
$data = json_decode((string) $response, true);
print_r($data['status']);
import json
import urllib.request
url = "https://darkxcode.pw/api/tools/header-checker"
payload = {
'api_key': 'dxx_YOUR_API_KEY',
'input': 'https://example.com',
}
request = urllib.request.Request(
url,
data=json.dumps(payload).encode("utf-8"),
headers={"Content-Type": "application/json"},
method="POST",
)
with urllib.request.urlopen(request, timeout=30) as response:
data = json.load(response)
print(data["status"])
const response = await fetch("https://darkxcode.pw/api/tools/header-checker", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({"api_key":"dxx_YOUR_API_KEY","input":"https://example.com"}),
});
const data = await response.json();
console.log(data.status);
Response
{
"url": "https://example.com",
"status": "LIVE",
"server": "cloudflare",
"detail": "HTTP 200 / text/html; charset=utf-8 / 577 bytes",
"columns": {
"url": "https://example.com",
"status": "200",
"server": "cloudflare",
"detail": "HTTP 200 / text/html; charset=utf-8 / 577 bytes"
},
"type": "header-checker",
"tool": "header-checker",
"response": "HTTP 200 / text/html; charset=utf-8 / 577 bytes",
"message": "Status LIVE. No credits charged.",
"credit_used": 0,
"remaining_credit": 50,
"items": [
{
"input": "",
"status": "LIVE",
"response": "HTTP 200 / text/html; charset=utf-8 / 577 bytes",
"fields": {
"url": "https://example.com",
"status": "200",
"server": "cloudflare",
"detail": "HTTP 200 / text/html; charset=utf-8 / 577 bytes"
}
}
]
}
Tool-specific fields
url— URL that was requested.columns.status— HTTP status code returned by the server.server— Server header, or "-" when absent.detail— Status, content type and response size in one line.
HTTP status code returned by the server. The items array carries one entry per processed item, with the same fields under fields.
/api/tools/proxy-checker
Proxy Checker API
Probe a single proxy for connectivity, protocol (HTTP, HTTPS, SOCKS4, SOCKS5), and round-trip response latency. Private, loopback, and reserved addresses are blocked automatically. No credits are charged.
Request headers
X-API-Key: YOUR_API_KEY(or an active session withX-CSRF-Token)Content-Type: application/json
Request body
Supported formats: host:port, host:port:user:pass, user:pass@host:port, socks5://host:port.
{
"input": "198.51.100.1:8080"
}
Response
{
"proxy": "198.51.100.1:8080",
"protocol": "HTTP",
"latency": "84ms",
"type": "proxy-checker",
"tool": "proxy-checker",
"status": "LIVE",
"response": "Proxy is live (HTTP, status 200, 84ms).",
"message": "Status LIVE. No credits charged.",
"credit_used": 0,
"remaining_credit": 100,
"columns": {
"proxy": "198.51.100.1:8080",
"protocol": "HTTP",
"latency": "84ms"
},
"items": [
{
"input": "",
"status": "LIVE",
"response": "Proxy is live (HTTP, status 200, 84ms).",
"fields": {
"proxy": "198.51.100.1:8080",
"protocol": "HTTP",
"latency": "84ms"
}
}
]
}
Response codes
All errors are returned as JSON {"status":"error","message":"..."}.
| Code | Status | Description |
|---|---|---|
| 200 | OK | Request processed successfully and returns the check result. |
| 400 | Bad Request | The request could not be processed, for example because credits are insufficient. |
| 401 | Unauthorized | The X-API-Key header is missing, malformed, or the key is unknown. |
| 403 | Forbidden | The account that owns the key is blocked. |
| 429 | Too Many Requests | The limit of 100 requests per minute per key has been exceeded. Try again after a minute. |
| 500 | Internal Server Error | A server error occurred. Please try again shortly. |