API Documentation

Integration guide for the checker API via CLI, scripts, or your application.

Manage API Key

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.

Regenerating the key immediately invalidates the old key. Make sure all of your CLI tools have been updated.

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 body
  • api_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.

POST /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"}'

Response

JSON 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.
POST /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.

POST /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.

Premium tool — subscription first 5 credits · per LIVE result 5 credits · per DIE result 0 credits · per RETRY or UNKNOWN result

Request headers

  • X-API-Key: YOUR_API_KEY (or an active session with X-CSRF-Token)
  • Content-Type: application/json
  • proxies — 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.

JSON Request
{
  "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"]}'

Response

JSON 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 result
  • proxies_tried — every proxy attempted, in order
  • message / info — reason reported by the provider
  • credit_used — Credits charged for this request.
  • remaining_credit — Credits left after the check.

Response · Error responses

HTTP code Meaning
422errorMissing or invalid email address.
422errorNo proxy supplied, or the proxy list contains no usable entry.
402errorNot enough credits (at least 5 are required to start a check). Omitted for active subscribers.
429errorRate 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.

POST /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.

Premium tool — subscription first 3 credits · per LIVE result (carrier found) 1 credits · per DIE result (no carrier data) 0 credits · per RETRY or UNKNOWN result

Request body

  • input — 1231231234 or +1 1231231234
  • country — us (United States) or ca (Canada); defaults to us
  • 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 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"]}'

Response

JSON 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 order
  • credit_used — Credits charged for this request.
  • remaining_credit — Credits left after the check.

Response · Error responses

HTTP code Meaning
422errorInput is empty or not a valid 10-digit number (1231231234 or +1 1231231234).
422errorCountry is not us or ca.
422errorNo usable proxy was supplied (the proxies list is required).
402errorNot enough credits (at least 1 is required to start a lookup). Omitted for active subscribers.
429errorRate 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.

POST /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.

Free tool — no credits are ever charged.

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"]}'

Response

JSON 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 order
  • credit_used — Credits charged for this request.
  • remaining_credit — Credits left after the check.

Response · Error responses

HTTP code Meaning
422errorInput is empty or not a 6 to 8 digit BIN.
422errorNo usable proxy was supplied (the proxies list is required).
429errorAPI rate limit reached (10 BINs per second per user).
POST /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.

10 credits · per APPROVED result 5 credits · per CVV result 3 credits · per CCN result 1 credits · per DIE result 0 credits · per RETRY result

Request body

  • input — 4400225648037878|01|2034|490 or 4400225648037878:01:34:490
  • gateway — 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"]}'

Response

JSON 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

JSON Response
{
  "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.
APPROVEDapproved, success, approv, thank you, cvc_check, one-time, succeeded, authenticate successful, authenticate attempt successful, authenticate unavailable, authenticate unable to authenticate.
CVVtransaction_not_allowed, authentication_required, your card zip code is incorrect, card_error_authentication_required, three_d_secure_redirect, invalid_billing_address, address_verification_failure.
CCNincorrect_cvc, invalid_cvc, insufficient_funds, invalid_security_code, cvv_failure.
DIEfailed, 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
422errorInput is empty or not in number|month|year|cvv format, the card is expired, or the CVV length is wrong.
422errorNo usable proxy was supplied (the proxies list is required).
402errorNot enough credits (at least 1 is required to start a check). Omitted for active subscribers.
429errorAPI 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.

POST /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.

Premium tool — subscription first 5 credits · per LIVE result (login succeeded) 3 credits · per DIE result (login rejected) 0 credits · per RETRY or UNKNOWN result

Request body

  • input — [email protected]|password or [email protected]:password
  • 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 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"]}'

Response

JSON 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 order
  • credit_used — Credits charged for this request.
  • remaining_credit — Credits left after the check.

Response · Error responses

HTTP code Meaning
422errorInput is empty or not in the email|pass / email:pass format.
422errorNo usable proxy was supplied (the proxies list is required).
402errorNot enough credits (at least 3 are required to start a check). Omitted for active subscribers.
429errorRate 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.

POST /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.

Premium tool — subscription first 5 credits · per LIVE result (account exists) 3 credits · per DIE result (no account) 0 credits · per RETRY or UNKNOWN result

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"]}'

Response

JSON 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 order
  • credit_used — Credits charged for this request.
  • remaining_credit — Credits left after the check.

Response · Error responses

HTTP code Meaning
422errorInput is empty or not a valid email address.
422errorNo usable proxy was supplied (the proxies list is required).
402errorNot enough credits (at least 2 are required to start a check). Omitted for active subscribers.
429errorRate 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.

POST /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"}'

Response

JSON 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.

POST /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"}'

Response

JSON 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.

POST /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"}'

Response

JSON 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.

POST /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 with X-CSRF-Token)
  • Content-Type: application/json

Request body

Supported formats: host:port, host:port:user:pass, user:pass@host:port, socks5://host:port.

JSON Request
{
  "input": "198.51.100.1:8080"
}

Response

JSON 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.