Single-object responses
The core Daya API does not use one envelope for every endpoint. Parse each operation according to its schema. These successful operations return exactly one object underdata:
For example,
POST /v1/banks/resolve returns:
body.data.account_name, not body.account_name.
Flat objects
Other core single-object responses are flat. This includes customer create/get/update and verification, funding-account create/get/disable/settlement updates, quotes, transfers, deposits, virtual accounts and their deposits, bridges, liveness checks/sessions, and legacy onramps/offramps/payouts. In particular:POST /v1/funding-accountsandGET /v1/funding-accounts/{id}return the funding account directly. Readbody.idandbody.settlement_destination.GET /v1/merchant/withdrawals/{id}returns the withdrawal directly, even thoughPOST /v1/merchant/withdrawalswraps its submission result indata.- The legacy
POST /v1/withdrawalsalias returns a flat withdrawal object. New integrations should use the documented merchant withdrawal route.
data based only on HTTP method or resource name. Pro, Coins, and Stocks have separate API contracts; this list covers the core API, not those products.
Lists and errors
A list’sdata field is an array, not a single-object envelope. For example, GET /v1/banks returns {"data": [...]}. Customer balances also use an array under data, even when only one currency is returned. Paginated lists include the pagination fields defined by their operation.
Errors use {"error": {...}}. Check the HTTP status before parsing a success body. A successful DELETE /v1/recipients/{id} returns 204 No Content with no JSON body.
Use the generated public schema for field definitions and each operation’s status codes.