Request
Bearer token. Format: Bearer <client_token>
Your stable internal user identifier. Used for KYC tracking and transaction mapping.
User’s email address. Used to match or create the KYC profile.
Crypto asset. Currently supported: USDT.
Blockchain network. Supported: TRC20 (default), ERC20.
Fiat currency. Supported: EUR, USD.
Pre-fills the amount field in the widget. If omitted, the user sets it manually. Do not send together with crypto_amount.
Alternative to fiat_amount. Pre-fills the crypto amount. Do not send together with fiat_amount.
buy (default) or sell. Off-ramp (sell) must be enabled for your integration.
URL to redirect to after the transaction is completed or cancelled.
Response
Unique transaction identifier. Save this — it is used to track status and is stable across retries.
Proof widget identifier for your integration.
Proof wallet address for the transaction. Pass this to the widget as-is.
Cryptographic signature v2:.... Computed by Proof. Pass directly to the widget.
Single-use session token. Expires after first use or 1 hour.
Always sdk_customer_token.
Crypto currency (echoed from request).
Fiat currency (echoed from request).
Fiat amount (echoed from request, if provided).
buy or sell (echoed from request).
URL of the Proof widget embed script.
Examples
curl -X POST https://DOMAIN/widget/session \
-H "Authorization: Bearer <client_token>" \
-H "Content-Type: application/json" \
-d '{
"partner_user_id": "user-123",
"user_email": "user@example.com",
"currency": "USDT",
"fiat_currency": "EUR",
"fiat_amount": "100",
"type": "buy"
}'
{
"merchant_transaction_id": "550e8400-e29b-41d4-a716-446655440000",
"widget_id": "fb359d09-fff6-4b1f-906c-b9062b135065",
"address": "TRx1a2b3c4d5e6f...",
"signature": "v2:a1b2c3d4e5f6...",
"init_token": "eyJhbGciOi...",
"init_token_type": "sdk_customer_token",
"currency": "USDT",
"fiat_currency": "EUR",
"fiat_amount": "100",
"type": "buy",
"widget_url": "https://widget.proof.community/widget.2.0.js"
}