api.zewa.mom
ZEWA CHECKER · API v1

Проверка карт.
Максимально просто.

Card checking.
Radically simple.

Отправляешь батч по HTTP — получаешь вердикты по категориям. 50 потоков на каждый чек, стабильный движок, честный биллинг с автоматическим возвратом за технические ошибки.

Submit a batch over HTTP — get categorized verdicts back. 50 dedicated threads per check, a battle-tested engine, fair billing with automatic refunds for technical errors.

50 потоков / чек
50 threads / check
JSON
API Key auth
Авто-рефанд
Auto-refund
Без лимита карт
No batch cap
01

Быстрый старт

Quick start

Получи ключ у администратора (@Zewa_Support) и отправь первый батч:

Get a key from the admin (@Zewa_Support) and submit your first batch:

bash
curl -X POST https://api.zewa.mom/v1/checks \
  -H "X-API-Key: sk_live_..." \
  -H "Content-Type: application/json" \
  -d '{"cards": ["4187596639593908|03/27|314|Mia|Quinn|66 Red Oak Way|Boise|83702|ID"]}'

Затем опрашивай результат раз в 5–10 секунд:

Then poll for the result every 5–10 seconds:

bash
curl https://api.zewa.mom/v1/checks/1042 -H "X-API-Key: sk_live_..."
02

Аутентификация

Authentication

Ключ выдаёт саппорт: он создаёт ключ и привязывает его к твоему аккаунту в нашем Telegram-боте. Баланс один — твой профиль в боте: пополняешь его там (крипта/промокод), а API списывает прямо с него по твоей персональной ставке за принятую карту. Статус партнёра и ставка видны прямо в меню бота.

Каждый запрос — с заголовком X-API-Key. Полный ключ показывается один раз при создании — сохрани его. Если ключ скомпрометирован, админ перевыпустит: старый умирает мгновенно.

The key is issued by support: they create it and bind it to your account in our Telegram bot. One balance — your bot profile: you top it up in the bot (crypto/promo), and the API charges it directly at your personal rate per accepted card. Your partner status and rate are shown right in the bot menu.

Every request carries the X-API-Key header. The full key is shown once upon creation — store it safely. If compromised, the admin rotates it: the old key dies instantly.

03

Форматы карт

Card formats

Строки с разделителем |, минимум 9 полей:

Pipe-delimited lines, 9+ fields:

format
NUM|MM/YY|CVV|FIRST|LAST|STREET|CITY|ZIP|STATE[|US|PHONE|EMAIL]

4187596639593908|03/27|314|Mia|Quinn|66 Red Oak Way|Boise|83702|ID
  • Срок: MM/YY — также MM.YY, MMYY, год 4 цифрами. CVV и срок идут в любом порядке.
  • ZIP и штат — в любом порядке. Штат кодом (FL) или словом (Florida), регистр не важен.
  • Имя можно одним полем: FIRST LAST. Хвост (страна/телефон/email) опционален.
  • Дубликаты по номеру и несуществующие штаты отбрасываются на входе — видно в dropped.
  • Просроченные карты отклоняются локально → invalid_card, списание идёт.
  • Expiry: MM/YY — also MM.YY, MMYY, 4-digit year. CVV and expiry can swap positions.
  • ZIP and state — any order. State as code (FL) or full name (Florida).
  • Name can be a single field: FIRST LAST. Trailing fields (country/phone/email) are optional.
  • Duplicates by card number and non-existent states are dropped on input — see dropped.
  • Expired cards are rejected locally → invalid_card, still charged.
04

Эндпоинты

Endpoints

POST/v1/checksсоздать чек — любой размер батчаcreate a check — any batch size

Тело запроса и ответ 201:

Request body and 201 response:

json
// POST /v1/checks — request
{ "cards": ["NUM|MM/YY|CVV|FIRST|LAST|STREET|CITY|ZIP|STATE", "..."] }

// 201 — response
{
  "check_id": 1042,
  "accepted": 2,
  "dropped": { "duplicates": 0, "bad_state": 0, "bad_format": 0 },
  "charged_cents": 50,
  "price_cents": 25,
  "balance_cents": 9950
}
GET/v1/checks/{id}статус и результатstatus & results

Пока чек идёт — только прогресс. Когда status станет done — появляется results с картами по категориям (строка карты, категория = ключ):

While running — progress only. Once status becomes done, results appears with cards grouped by category:

json
// GET /v1/checks/1042 — 200
{
  "check_id": 1042,
  "status": "done",
  "total": 2, "done": 2,
  "stats": { "valid": 1, "invalid_card": 0, "billing_mismatch": 1, "timeout": 0, "error": 0 },
  "charged_cents": 50,
  "refunded_cents": 0,
  "created_at": "2026-09-10 12:00:00",
  "finished_at": "2026-09-10 12:02:41",
  "results": {
    "valid":            [{ "line": "4187596639593908|03/27|314|…|ID" }],
    "invalid_card":     [],
    "billing_mismatch": [{ "line": "5677011276076500|05/29|203|…|UT" }],
    "timeout":          [],
    "error":            []
  }
}
GET/v1/meпрофиль: цена, балансprofile: price, balance
json
// GET /v1/me — 200
{
  "partner_id": 3,
  "name": "ShopX",
  "price_cents": 25,
  "balance_cents": 9950,
  "enabled": true
}
05

Категории результата

Result categories

valid

Карта принята

Card accepted

invalid_card

Невалидная карта / неверный CVV или срок

Invalid card / wrong CVV or expiry

billing_mismatch

Биллинг-данные не совпали

Billing details did not match

timeout

Сайт не ответил вовремя

Site timed out

error

Тех-ошибка — деньги возвращаются

Technical error — automatically refunded

06

Биллинг

Billing

  • Цена за карту — индивидуальная для твоего ключа (GET /v1/me).
  • Списание при создании чека: цена × принятые карты.
  • Возврат за error-карты — автоматически по завершении чека.
  • Пополнение баланса — через администратора.
  • Per-card price is individual for your key (GET /v1/me).
  • Charged on check creation: price × accepted cards.
  • Refunds for error cards — automatic on completion.
  • Balance top-ups — via the admin.
07

Лимиты

Limits

  • Размер батча — без ограничений.
  • Одновременных активных чеков — сколько угодно.
  • Технический предохранитель: 600 запросов/мин (поллинг результата — 1200/мин).
  • Batch size — unlimited.
  • Concurrently running checks — unlimited.
  • Safety breaker: 600 requests/min (result polling — 1200/min).
08

Ошибки

Errors

json
{ "error": { "code": "insufficient_balance", "message": "need 2500 cents, have 9950" } }
КодCodeПричинаReason
unauthorizedНет/неверный ключMissing/invalid key
forbiddenКлюч отключёнKey disabled
empty_batchВсе строки отброшеныAll lines dropped
insufficient_balanceНе хватает балансаNot enough balance
maintenanceТехработы — попробуй позже (503, Retry-After)Under maintenance — retry later (503, Retry-After)
rate_limitedПревышен технический лимитSafety rate limit hit
not_foundЧужой/несуществующий чекUnknown/foreign check
09

Примеры кода

Code examples

python
import requests, time

API = "https://api.zewa.mom"
H = {"X-API-Key": "sk_live_..."}

r = requests.post(f"{API}/v1/checks", headers=H, json={
    "cards": ["4187596639593908|03/27|314|Mia|Quinn|66 Red Oak Way|Boise|83702|ID"]
}).json()

while True:
    s = requests.get(f"{API}/v1/checks/{r['check_id']}", headers=H).json()
    if s["status"] in ("done", "stopped"):
        break
    time.sleep(7)

for c in s["results"].get("valid", []):
    print("VALID:", c["line"])
go
body := strings.NewReader(`{"cards":["4187596639593908|03/27|314|..."]}`)
req, _ := http.NewRequest("POST", "https://api.zewa.mom/v1/checks", body)
req.Header.Set("X-API-Key", "sk_live_...")
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
javascript
const r = await fetch("https://api.zewa.mom/v1/checks", {
  method: "POST",
  headers: { "X-API-Key": "sk_live_...", "Content-Type": "application/json" },
  body: JSON.stringify({ cards })
}).then(r => r.json());
php
$ch = curl_init("https://api.zewa.mom/v1/checks");
curl_setopt_array($ch, [
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_POST => true,
  CURLOPT_HTTPHEADER => ["X-API-Key: sk_live_...", "Content-Type: application/json"],
  CURLOPT_POSTFIELDS => json_encode(["cards" => $cards]),
]);
$res = json_decode(curl_exec($ch), true);