REST API · v1 JSON & plain text Billed per result Errors never charged

C4CHECK API

One endpoint. One card per request. A normalized result — Live Dead Error — plus your balance and the exact charge, returned in a single response.

SYSTEM OPERATIONAL · RATE LIMIT 5 REQ/S PER IP
01

Authentication

Send your API key in the X-API-Key request header. Headers stay out of URLs and access logs, so this is the only method you should use.

X-API-Key: YOUR_API_KEY

For backward compatibility the key is also accepted as an api_key query parameter or POST field — not recommended.

Keep it secret. The key can spend your balance. Rotate it in one click from the dashboard if it ever leaks; the old key stops working immediately.
02

Base URL

https://c4check.com/api/v1/api.php

Single endpoint. Method: GET — the same URL also accepts POST form fields.

03

Gateways & pricing

API identifierGatewayInput formatLive chargeDead charge
fast-checker Fast Checker CC|MM|YYYY|CVV
4111111111111111|12|2027|123
$0.0200 $0.0200

Pass the API identifier as the gateway parameter. The numeric id and the exact gateway name are also accepted.

Prices shown are the gateway rate. Individual accounts may have custom per-check pricing — check your dashboard for your effective charges.

04

Making a request

ParameterValue
X-API-Keyheader · requiredYour API key
gatewayquery · requiredGateway API identifier, id, or exact name
ccquery · requiredPipe-separated card data in the gateway's input format
jsonquery · optionalSet to 1 for a JSON response (recommended)

Card formats

  • CC|MM|YYYY|CVV — standard gateways
  • CC|MM|YYYY|CVV|ZIP — AVS gateways
  • CC|MM|YYYY|ZIP — CCN gateways
  • CC|MM|YYYY — dumps-format gateways

The exact format for each active gateway is listed in the table above — wrong field counts return HTTP 422.

In browser address bars and some HTTP clients the pipe may appear percent-encoded as %7C — both forms are identical to the API.

05

Examples per gateway

Fast Checker fast-checker Live $0.0200 · Dead $0.0200

Input format: CC|MM|YYYY|CVV — example payload: 4111111111111111|12|2027|123

curl -H "X-API-Key: YOUR_API_KEY" "https://c4check.com/api/v1/api.php?gateway=fast-checker&cc=4111111111111111|12|2027|123&json=1"

Plain text response: https://c4check.com/api/v1/api.php?gateway=fast-checker&cc=4111111111111111|12|2027|123

JSON response: https://c4check.com/api/v1/api.php?gateway=fast-checker&cc=4111111111111111|12|2027|123&json=1

<?php $ch = curl_init("https://c4check.com/api/v1/api.php?" . http_build_query([ 'gateway' => 'fast-checker', 'cc' => '4111111111111111|12|2027|123', 'json' => 1, ])); curl_setopt_array($ch, [ CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => ['X-API-Key: YOUR_API_KEY'], CURLOPT_TIMEOUT => 30, ]); $result = json_decode(curl_exec($ch), true); print_r($result);
import requests r = requests.get( "https://c4check.com/api/v1/api.php", params={ "gateway": "fast-checker", "cc": "4111111111111111|12|2027|123", "json": 1, }, headers={"X-API-Key": "YOUR_API_KEY"}, timeout=30, ) print(r.json())
// Node.js 18+ (built-in fetch) const params = new URLSearchParams({ gateway: "fast-checker", cc: "4111111111111111|12|2027|123", json: "1", }); const res = await fetch("https://c4check.com/api/v1/api.php?" + params, { headers: { "X-API-Key": "YOUR_API_KEY" }, signal: AbortSignal.timeout(30000), }); console.log(await res.json());
// Java 11+ import java.net.URI; import java.net.URLEncoder; import java.net.http.*; import java.nio.charset.StandardCharsets; import java.time.Duration; var cc = URLEncoder.encode("4111111111111111|12|2027|123", StandardCharsets.UTF_8); var url = URI.create("https://c4check.com/api/v1/api.php?gateway=fast-checker&cc=" + cc + "&json=1"); var req = HttpRequest.newBuilder(url) .header("X-API-Key", "YOUR_API_KEY") .timeout(Duration.ofSeconds(30)) .GET().build(); var res = HttpClient.newHttpClient().send(req, HttpResponse.BodyHandlers.ofString()); System.out.println(res.body());
// C# (.NET 6+) using System; using System.Net.Http; var cc = Uri.EscapeDataString("4111111111111111|12|2027|123"); using var client = new HttpClient { Timeout = TimeSpan.FromSeconds(30) }; client.DefaultRequestHeaders.Add("X-API-Key", "YOUR_API_KEY"); var body = await client.GetStringAsync($"https://c4check.com/api/v1/api.php?gateway=fast-checker&cc={cc}&json=1"); Console.WriteLine(body);
06

Responses

Plain text (default)

Live

Live active and chargeable · Dead closed, blocked or invalid · Error no definitive answer — never charged.

JSON (&json=1)

{"result":"Live","id":1284,"gateway":"fast-checker","balance":"99.33","charge":"0.0300"}
FieldTypeMeaning
resultstringLive Dead Error
idintegerCheck record id — quote it in support requests and for reconciliation
gatewaystringThe gateway API identifier used
balancestringYour balance after the check
chargestringAmount charged, 4 decimals — 0 on errors
07

Errors

Errors use standard HTTP status codes and a JSON body: {"error":"..."}.

HTTPErrorMeaning
401API key requiredNo key supplied
401Invalid API keyKey not found — regenerate it if it leaked
401Account disabledThe account is not active
402Insufficient balanceRejected before any gateway call; nothing charged
404Invalid gateway or gateway not activeUnknown, disabled or deleted gateway
404Gateway URL not configuredThe gateway has no provider URL set
422No card data providedThe cc parameter is missing
422Invalid card formatWrong number of fields for this gateway
422Invalid CardFailed the Luhn checksum
422Zipcode is required for this gatewayThis gateway's format requires a ZIP field
429Rate limit exceededMore than 5 requests/second from one IP
500Check failed; no charge appliedUnexpected internal failure; reservation released
502Gateway returned empty responseProvider failure; nothing charged
Retry policy: errors (HTTP 500/502) and rate limits (429) are safe to retry with exponential backoff — no result was produced and nothing was charged. 4xx errors are request problems: fix the request before retrying.
08

Rate limits & billing

  • Rate limit: 5 requests per second per IP (burst of 10). Exceeding it returns HTTP 429.
  • Billing: charged per classified result only — Live and Dead at the gateway rates above; Error is free.
  • Self-metering: every response returns the balance and the exact charge, so spend is traceable without a second call.
  • Unknown retries: when a provider returns no definitive answer, the card is re-checked once automatically — on the fallback route if configured, otherwise the same provider (per-gateway toggle). Unknowns are never charged, so retries are free.
  • API vs web: API checks always bill normally; free-check promotions apply to the web checker only.

For bulk work, loop with modest concurrency (or follow the bulk verification guide). A Live/Dead result never needs a retry; Error results are the only ones to re-run.

© 2026 C4CHECK — API v1 Last updated Oct 13, 2026 · docs are generated live from the current configuration