Developers

One integration instead of six.

REST API, webhooks and a sandbox. Send one request — get a decision, score and decision log.

Get a sandbox key
Sandbox

Request

curl -X POST https://api.pilotchain.io/v1/screen \
  -H "Authorization: Bearer sk_test_…" \
  -d '{
    "scenario": "withdrawal",
    "wallet": { "address": "0x9f…c21", "network": "ETH" },
    "device_id": "dv_91f3",
    "ip": "185.23.44.10"
  }'

Response · 200 OK · 388 ms

{
  "decision": "BLOCK",
  "risk_score": 91,
  "threshold": 70,
  "rules": ["RULE_01", "RULE_09"],
  "request_id": "pc_91d07"
}

Quick start

From key to first decision — in one evening.

1

Get a key

Sandbox keys are issued in MerchantDesk. Separate keys for sandbox and production.

2

Send a request

One endpoint for every check. Pass the scenario and whatever fields you have: address, IP, device, email, card.

3

Handle the decision

Synchronously in the response or asynchronously via the decision.created webhook — signed and retried.

Request and response

One request — decision, score and decision log.

Pass the scenario and the data you have. PilotChain decides which providers to query.

  • 1 · Authorization — Bearer sk_test_… or sk_live_…
  • 2 · Every field is optional: address, IP, device, email, card
  • 3 · Response ≈ 400 ms, long checks — via webhook
terminal
curl -X POST https://api.pilotchain.io/v1/screen \
  -H "Authorization: Bearer sk_test_…" \
  -d '{
    "scenario": "withdrawal",
    "wallet": { "address": "0x9f…c21", "network": "ETH" },
    "device_id": "dv_91f3", "ip": "185.23.44.10"
  }'

// → 200 OK · 388 ms
{
  "decision": "BLOCK",
  "risk_score": 91, "threshold": 70,
  "rules": [
    { "id": "RULE_01", "signal": "sanctions_exposure", "points": 40 },
    { "id": "RULE_09", "signal": "new_device_withdrawal", "points": 18 }
  ],
  "request_id": "pc_91d07"
}
Get a sandbox key
Webhooks

Async checks without polling.

For long and recurring checks, PilotChain sends an event to your endpoint. Every delivery is signed; failed ones are retried.

  • decision.created — a new decision on a request
  • decision.updated — the decision changed after review
  • screening.recurring — an address was re-screened
webhook.json
POST https://api.merchant.io/hooks/pc
X-PilotChain-Signature: t=1727095212,v1=5f2c…

{
  "event": "decision.created",
  "request_id": "pc_82a9f",
  "decision": "REVIEW",
  "risk_score": 75,
  "policy": "crypto_deposit@v14",
  "created_at": "2026-09-23T10:34:12Z"
}

// ← 200 OK · delivered on the first try
// delivery history — in MerchantDesk
History in MerchantDesk

Resources

Everything for the integration — in one place.

Quick start

Your first request in 10 minutes: key, request, decision.

API reference

Endpoints, fields, error codes and limits.

Webhooks

Events, signatures and the retry policy.

Roadmap

SDK

Clients for popular languages.

30-minute working session

Get a sandbox key.

Leave a request — we'll send a key and the docs, and on a 30-minute call help you send your first request.

Get a sandbox key

Production keys are issued once the contract is signed.