Compliance & regions
Compliance & regions
Who can trade, what your integration sees when a gate fires, where data lives, and what you may redistribute — documented plainly, because on a real-money platform these walls are features, not bugs.
Drazill is a Canadian, real-money exchange, so every real-money action passes a compliance
gate. Undocumented, those gates read as mysterious 403s; documented, they’re predictable.
This page is reviewed against the platform’s compliance control matrix
(docs/compliance-control-matrix.md) and states honest negatives plainly — it does not
improvise legal specifics.
Who can trade
Real-money trading is available to verified Canadian residents, subject to:
- Identity (KYC). The account must complete identity verification.
- Age. At or above the province’s minimum gambling age (18 or 19), enforced from the verified date of birth.
- Province. The account’s verified province must be in the real-money launch allow-list
(
allowed_provinces), cross-checked against IP region. The gate is enforced; the exact launch province list is an owner/legal decision and is not finalized here — we do not publish a province list we cannot yet confirm. - Sanctions & responsible gaming. No sanctions/watchlist hit; no active self-exclusion or breached responsible-gaming limit.
Money and compliance checks fail closed. If a required check cannot be evaluated (an infrastructure error), the action is denied, never auto-passed. A check that can’t run is treated as a failing check on money paths — by design.
The compliance gate order
Every real-money action (deposit, withdraw, trade) runs the checks in this fixed order:
KYC → sanctions → age → province → terms → responsible-gaming → geo
The first check to fail short-circuits with its error code. Source:
ComplianceGateService.enforce (root CLAUDE.md, docs/compliance-control-matrix.md).
What your integration sees when a gate fires
Each gate returns a specific error code so you can surface the right message (and not retry a hard block). Every code below is verified in CI to exist in the enforcing source, and the HTTP status is cross-checked against the exception classes:
These are the compliance/gate codes specifically; the full API error catalog is in the
API Reference. Every error body carries a request_id — include it in any
support request.
Data residency
All platform data resides in ca-central-1 (Canada). The docs site itself is public,
static, marketing-class content and collects no user data — no forms, no PII, no sign-in.
The residency invariant governs user data, which this documentation never carries.
Market-data licensing & redistribution
The historical-dataset export API is licensable and coverage-limited. These rules are lifted
verbatim from the enforcing source (app/schemas/data_export.py):
Redistribution. Export coverage is allow-listed per data source and category. First-party markets (no upstream provider) are exportable by default. Markets attributed to an upstream provider (e.g. ESPN, API-Sports, CoinGecko) are excluded until that provider’s redistribution terms are cleared and added to the allow-list, because provider terms may restrict redistribution of derived data.
Trade-tape anonymization. Trade-tape exports are aggregate and anonymized: each row is a single executed print exposing only the market, outcome, execution price, size, notional value, fees, a global sequence number, and the execution timestamp. No user, account, order, wallet, IP address, or trade identifier is included, so no row can be joined back to an individual.
API terms
PENDING LEGAL REVIEW. The developer API terms (docs/legal/api-terms.md, version
2026-07-17) are a good-faith engineering draft that has not been reviewed or approved
by legal counsel and is not a binding agreement — mirrored here with that status,
exactly as the source carries it.
Terms acceptance is currently not enforced for key creation (DEVELOPER_TERMS_REQUIRED is
false); when the owner enables it, creating a key will require a current acceptance of
API_TERMS_VERSION. See Authentication.
No SLA yet
Drazill does not publish a uptime or latency service-level agreement. Any performance figure you see elsewhere is a target, labeled as a target — not a guarantee. There is no uptime commitment on this documentation. When an SLA is offered, it will be stated as a binding commitment; until then, treat availability as best-effort.
Documentation language
These docs are English-only. Localization is not available on the current docs plan. The app itself is bilingual (English/French); whether Québec’s Bill 96 requires French-language developer documentation is an open legal question for the owner and counsel — we do not claim French docs exist.

