Developer hub
Program intake → verify → fund → route instructions. API schema: /api/openapi.json (interactive UI in non-production: /api/docs).
Developer API
Base URL
https://api.trustfield.ca
Core object
TF reference — every program gets TF-######; instructions use INS-########
Events
program.created · portal.verify.completed · fund.initiated · instruction.submitted · instruction.filled
Auth
Production: X-Admin-Token (operator) · X-Partner-Token (partner scope)
Quickstart (3 calls)
Step 1: Open program POST /api/register
curl -s -X POST "$BASE/api/register" -H "Content-Type: application/json" -d '{"full_name":"Program Operator","email":"ops@example.com","corridor":"CA-CAD","consent_accepted":true,"registration_type":"program"}'Step 2: Verify + fund (sandbox) POST /api/register/TF-######/portal-step
curl -s -X POST "$BASE/api/register/TF-000042/portal-step" -H "Content-Type: application/json" -d '{"step":"verify"}' curl -s -X POST "$BASE/api/register/TF-000042/portal-step" -H "Content-Type: application/json" -d '{"step":"fund"}'Step 3: Submit instruction POST /api/instructions
curl -s -X POST "$BASE/api/instructions" -H "Content-Type: application/json" \ -H "Idempotency-Key: demo-0001" \ -d '{"reference":"TF-000042","provider":"ndax","action":"submit_order","payload":{"side":"buy","asset":"BTC","amount":"0.01"}}' | jq .
API — intake response
Structured TF references and JSON status for integrations. API schema (/api/openapi.json) · /developers
{
"id": 42,
"reference": "TF-000042",
"full_name": "Program Operator Ltd",
"email": "integration@example.com",
"corridor": "CA-CAD",
"status": "pending",
"registration_type": "program",
"message": "Program intake received. Reference TF-000042 is pending."
}curl -s -X POST "$BASE/api/register" -H "Content-Type: application/json" -d '{"full_name":"Program Operator","email":"ops@example.com","corridor":"CA-CAD","consent_accepted":true,"registration_type":"program"}'Core endpoints
GET /api/register/{ref} — Program status
curl -s "$BASE/api/register/TF-000042" | jq .lifecycle,.instruction_count,.recent_events
GET /api/programs/{ref} — Program alias
curl -s "$BASE/api/programs/TF-000042" | jq .
GET /api/programs/{ref}/instructions — List instructions
curl -s "$BASE/api/programs/TF-000042/instructions" | jq .
GET /api/programs/{ref}/events — Event stream
curl -s "$BASE/api/programs/TF-000042/events?limit=20" | jq .
GET /api/register/{ref}/audit.json — Audit export
curl -s "$BASE/api/register/TF-000042/audit.json" -H "X-Admin-Token: $ADMIN_TOKEN" | jq .
Webhooks (partner → TrustField)
- POST /api/webhooks/trulioo — TruliooHeader: X-Trulioo-Signature
- POST /api/webhooks/vopay — VoPayHeader: X-Vopay-Signature
Integration health
GET /api/integrations/health — adapter configuration (no secrets).
{
"adapters": [
{
"provider": "aquanow",
"configured": false,
"message": "demo mode — sandbox simulation available"
},
{
"provider": "banxa",
"configured": false,
"message": "demo mode — sandbox simulation available"
},
{
"provider": "bitbuy",
"configured": false,
"message": "demo mode — sandbox simulation available"
},
{
"provider": "bullbitcoin",
"configured": false,
"message": "demo mode — sandbox simulation available"
},
{
"provider": "coinbase_cdp",
"configured": false,
"message": "demo mode — sandbox simulation available"
},
{
"provider": "coinsquare",
"configured": false,
"message": "demo mode — sandbox simulation available"
},
{
"provider": "kraken_embed",
"configured": false,
"message": "demo mode — sandbox simulation available"
},
{
"provider": "ndax",
"configured": false,
"message": "set NDAX_API_KEY and NDAX_API_SECRET"
},
{
"provider": "paytrie",
"configured": false,
"message": "demo mode — sandbox simulation available"
},
{
"provider": "trulioo",
"configured": false,
"message": "set TRULIOO_API_KEY"
},
{
"provider": "virgocx",
"configured": false,
"message": "demo mode — sandbox simulation available"
},
{
"provider": "vopay",
"configured": false,
"message": "set VOPAY_API_KEY and VOPAY_API_SECRET"
}
]
}Market access catalog
GET /api/venues — 10+ integration patterns (public labels only).
{
"count": 10,
"demo_mode": true,
"venues": [
{
"public_label": "Market access A",
"tier": "P0",
"configured": false,
"sandbox_ready": false,
"live_sandbox": false,
"message": "set NDAX_API_KEY and NDAX_API_SECRET",
"mode": "demo"
},
{
"public_label": "Market access B",
"tier": "P1",
"configured": false,
"sandbox_ready": true,
"live_sandbox": false,
"message": "demo mode — sandbox simulation available",
"mode": "demo"
},
{
"public_label": "Market access C",
"tier": "P1",
"configured": false,
"sandbox_ready": true,
"live_sandbox": false,
"message": "demo mode — sandbox simulation available",
"mode": "demo"
},
{
"public_label": "Market access D",
"tier": "P1",
"configured": false,
"sandbox_ready": true,
"live_sandbox": false,
"message": "demo mode — sandbox simulation available",
"mode": "demo"
},
{
"public_label": "Market access E",
"tier": "P1",
"configured": false,
"sandbox_ready": true,
"live_sandbox": false,
"message": "demo mode — sandbox simulation available",
"mode": "demo"
},
{
"public_label": "Market access F",
"tier": "P1",
"configured": false,
"sandbox_ready": true,
"live_sandbox": false,
"message": "demo mode — sandbox simulation available",
"mode": "demo"
},
{
"public_label": "Market access G",
"tier": "P1",
"configured": false,
"sandbox_ready": true,
"live_sandbox": false,
"message": "demo mode — sandbox simulation available",
"mode": "demo"
},
{
"public_label": "Market access H",
"tier": "P1",
"configured": false,
"sandbox_ready": true,
"live_sandbox": false,
"message": "demo mode — sandbox simulation available",
"mode": "demo"
},
{
"public_label": "Market access I",
"tier": "P1",
"configured": false,
"sandbox_ready": true,
"live_sandbox": false,
"message": "demo mode — sandbox simulation available",
"mode": "demo"
},
{
"public_label": "Market access J",
"tier": "P1",
"configured": false,
"sandbox_ready": true,
"live_sandbox": false,
"message": "demo mode — sandbox simulation available",
"mode": "demo"
}
]
}Optional modules
- GET /api/corridors — Corridors
- GET /api/execution-partners — Execution partners
- GET /api/checklist/{ref} — Checklist
- GET /api/readiness — Readiness