Quotes — Reference
Auth: X-API-Key.
Flow B (canonical — TEST + LIVE)
POST /v1/transactions/quote
curl -X POST "$BASE_URL/v1/transactions/quote" \
-H "X-API-Key: $THIQWAVE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"corridor_id": "AE-IN",
"source_asset": "AED",
"source_amount_minor": "150000",
"destination_asset": "INR",
"destination_kind": "BANK",
"participant_id": "'"$PARTICIPANT_ID"'"
}'
| Field | Type | Required | Notes |
|---|---|---|---|
corridor_id | string | yes | max 64 |
source_asset | string | yes | asset code, max 16 |
source_amount_minor | string | yes | integer minor units |
destination_asset | string | yes | asset code, max 16 |
destination_kind | enum | yes | WALLET | BANK | STABLECOIN |
participant_id | uuid | no | sending participant |
Response 201 returns the quote with id, status: CREATED, expires_at. Errors: 400 VAL_0001.
POST /v1/transactions/quote/:id/accept
curl -X POST "$BASE_URL/v1/transactions/quote/$QUOTE_ID/accept" \
-H "X-API-Key: $THIQWAVE_API_KEY"
Errors: 400 QTE_0001 (expired), 409 QTE_0002 (already accepted), 404.
Flow A (sandbox-only — LIVE disabled)
LIVE keys reject Flow A
ADR-001 D-004. LIVE keys calling GET /v1/quotes or POST /v1/quotes/:id/accept receive 403. Use Flow B for production.
GET /v1/quotes — create (GET with body)
curl -G "$BASE_URL/v1/quotes" \
-H "X-API-Key: $THIQWAVE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"from_counterparty_id": "'"$PARTICIPANT_ID"'",
"to": { "type": "WALLET", "currency": "USDT", "address": "0x4444…4444" },
"source_amount": "10000.00",
"source_currency": "AED"
}'
(Flow A uses decimal display strings source_amount/source_currency — distinct from Flow B's source_amount_minor. TEST only.)
POST /v1/quotes/:id/accept — accept (TEST only)
Errors: 403 with LIVE key, 409 QTE_0002, 400 QTE_0001.