Skip to main content

Documentation Index

Fetch the complete documentation index at: https://ventra.mintlify.app/llms.txt

Use this file to discover all available pages before exploring further.

Anunnaki holds the master self-exclusion list and propagates it to operators in real time. The list is enforced via webhook push (sub-second), live REST check (signup / login / pre-deposit), and a daily 03:00 UTC bulk snapshot — three independent layers so an exclusion is never missed.

Supported durations

TypeAPI valueReversible?
24-hour cool-offduration_24hAuto-expires
7-day short breakduration_7dAuto-expires
30-day cool-offduration_30dAuto-expires
6-month time-outduration_6mAuto-expires
1-year long exclusionduration_1yAuto-expires
Permanentduration_permanentIrrevocable (KGC)

Endpoints

MethodPathDescription
POST/v1/exclusionsRegister a new exclusion. Idempotent on (user, duration).
GET/v1/exclusions/checkCross-tenant lookup by email or phone.
GET/v1/exclusions/snapshotPaginated full snapshot (for nightly reconciliation).

POST /v1/exclusions

curl https://sandbox.api.anunnakielite.com/v1/exclusions \
  -H "Authorization: Bearer cur_sk_test_EXAMPLEKEY123456789012345678901234" \
  -H "Content-Type: application/json" \
  -d '{
    "user_id": "rt_usr_8a2f1c",
    "email": "jane.doe@example.com",
    "phone": "+44 7700 900123",
    "duration": "duration_6m",
    "reason": "self_initiated",
    "initiated_at": "2026-05-24T14:32:00Z"
  }'
{
  "exclusion_id": "ex_4f9a02",
  "user_id": "rt_usr_8a2f1c",
  "duration": "duration_6m",
  "effective_from": "2026-05-24T14:32:00Z",
  "expires_at": "2026-11-24T14:32:00Z",
  "is_permanent": false,
  "kgc_propagated": true
}
Permanent exclusions cannot be undone via API. Block all gameplay immediately on 201.

GET /v1/exclusions/check

Lookup by email or phone. Returns the most-restrictive active exclusion if any (permanent > latest expiry); is_excluded:false otherwise.
curl "https://sandbox.api.anunnakielite.com/v1/exclusions/check?email=jane.doe@example.com" \
  -H "Authorization: Bearer cur_sk_test_EXAMPLEKEY123456789012345678901234"
{
  "is_excluded": true,
  "exclusion_id": "ex_4f9a02",
  "duration": "duration_permanent",
  "expires_at": null,
  "is_permanent": true,
  "source": "kgc_comprehensive"
}

GET /v1/exclusions/snapshot

Paginated tenant-scoped active rows. ?cursor=<base64url>&limit=<1..1000>. Use for nightly reconciliation against missed webhooks.

Webhooks

EventFires when
exclusion.createdA user is excluded — locally or via another KGC-licensed operator.
exclusion.expiredA timed exclusion auto-expires.
exclusion.permanentA permanent (irrevocable) exclusion is registered.
exclusion.kgc_syncedA user is excluded via the KGC Comprehensive Form.
{
  "event": "exclusion.created",
  "event_id": "evt_8f9a02",
  "timestamp": "2026-05-24T14:32:01Z",
  "data": {
    "exclusion_id": "ex_4f9a02",
    "user_email": "jane.doe@example.com",
    "user_phone": "+44 7700 900123",
    "duration": "duration_6m",
    "is_permanent": false,
    "expires_at": "2026-11-24T14:32:00Z",
    "source": "rain_trade"
  }
}

Error codes

StatusCode
400Invalid payload
401Missing / invalid bearer
404User not found
409Already excluded
429Rate limit (100/min)