Skip to main content

Account by User+Asset

GET /v1/account/{user_id}/{asset}

Read a single account row by user + asset.

Dev-only. This user-scoped route only answers when the gateway runs with DEV_TOOLS_ENABLED=true (or PERP_DEV_TOOLS_ENABLED=true); otherwise it returns 403 user-scoped account routes are disabled; use exchange session routes. It takes no authentication. The session-scoped equivalent is GET /v1/account/me/{asset} with Authorization: Bearer <session_token> (same response shape; spot_free / spot_locked are real there).

Request

GET /v1/account/{user_id}/{asset}

user_id is a UUID. asset is case-insensitive; CUSD, USDA and USDC-X are aliases of the funding asset USDC, which is reported back as CUSD.

Response — 200

{
"user_id": "5cfb031b593644679533cd2df576dbb8",
"asset": "CUSD",
"available": "85.230000",
"locked": "14.770000",
"spot_free": "0",
"spot_locked": "0"
}

user_id is returned as 32 hex chars (no hyphens). spot_free / spot_locked are always "0" on this route. Ledger-side failures surface as 500.

Internal tooling endpoint; web UI uses the FAPI balance instead.