Accounts
The Partner API exposes account endpoints for Receive crypto, Send (crypto), USD withdrawal, committing native assets, balances, and transfer history. Full request/response details are in the Partner API OpenAPI spec — Accounts.
API credentials associate blockchain entities with API authorization. On-chain operations (commit, send) use these credentials.
Committed vs uncommitted
Figure Markets uses the exchange settlement module on Provenance Blockchain to lock assets. Only assets that are committed to the exchange module can be traded on the platform.
- Committed — Assets locked in the exchange module. These appear in your trading balance and can be used for trading, margin, and other exchange operations.
- Uncommitted — Assets you hold on Provenance (or elsewhere) that are not yet locked in the exchange module. They cannot be traded until committed.
Withdrawal. The withdraw/send endpoints uncommit the assets so they can be sent. You call the endpoint, then sign the transaction; once signed, the assets are uncommitted and sent to your chosen destination.
Provenance-native assets (e.g. Hash). Hash is a Provenance-native asset (not a security-entitlement wrapped in MPC). You may hold it outside Figure Markets (e.g. you owned it before, or you previously uncommitted it from the exchange). The only way to trade it on the exchange is to first commit it (see Commit (on-chain)).
Receive crypto
Receive crypto (called “deposit address” in the API) lets you generate a crypto address so you can fund the trading account. Use one address per asset (denom). Supported assets can be found from the Public REST API — Get all assets (GET /api/v1/assets).
Address stability — Receive (deposit) addresses are not guaranteed to remain the same. Assume you should regenerate to get a new address every 7 days (or when you need a fresh address). Do not rely on a previously returned address staying valid indefinitely.
Generate an MPC deposit address for crypto: PUT /api/v1/accounts/deposit-address/crypto
Example body:
{
"denom": "BTC"
}
Response includes depositAddress, recipientAddress, and optional b64PngDepositAddressQrCode. Use the returned address to send funds. They appear in balances once confirmed.
Send and withdrawal
Send (crypto; the API calls it “withdraw”) — Initiate a withdraw: POST /api/v1/accounts/withdraw
Initiates sending crypto off the exchange. The endpoint uncommits the assets so they can be sent; you sign the transaction to complete the send (see Committed vs uncommitted). Required body fields are denom and amount. The amount field is in decimal (human-readable) form (e.g. "1000" = 1000 units of the asset). Optional uuid makes the request idempotent. Optional memo is used on networks that support it.
The only assets that can be sent to an external address via recipientAddress are security entitlements: wrapped non-native Provenance Blockchain assets (e.g. marker token btc.figure.se). When you send a security entitlement, you provide the mainnet destination address in recipientAddress and the native asset (e.g. BTC) is delivered there.
Example body:
{
"denom": "USDC",
"amount": "1000",
"uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f"
}
Withdrawal (USD / fiat) — Initiate a USD wire withdraw: POST /api/v1/accounts/withdraw/wire
Fiat is sent to the linked bank account. The amount field is in decimal (e.g. 5000 = 5000 USD). The wireAccountId in the request body must be the id of one of the wire accounts returned by Get wire accounts (the partner’s linked bank accounts).
Example body:
{
"amount": 5000,
"wireAccountId": "c1dfbeab-91e3-4c01-bb87-f631c954a0bc",
"uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f"
}
The wireAccountId value is an id from a previous GET /api/v1/accounts/wire response.
Commit (on-chain)
Commit a native Provenance asset so it is available for trading (see Committed vs uncommitted). Used by market makers to move on-chain assets into the exchange’s trading balance. For example, to trade Hash (Provenance-native), you must first commit it.
Initiate manual commitment: POST /api/v1/accounts/commit
The API returns the data needed to complete the on-chain commitment. The amount field is in decimal (e.g. 0.1 = 0.1 units of the denom). Credentials associate the request with the authorized blockchain entity.
Example body:
{
"denom": "hash",
"amount": 0.1
}
Balances
Get current or point-in-time portfolio balances (assets, loans, offers, crypto-backed loans, etc.).
Get portfolio balances: GET /api/v2/accounts/balances
Optional query atTime (ISO 8601) returns balances at a specific time. Response includes assets, loans, offers, cryptoBackedLoans, and totals. Partners cannot take out term crypto-backed loans via the Partner API, so cryptoBackedLoans will not be populated for partners even though it may appear in the response shape.
Transfer history
List historical transfers for the current wallet with optional filters. In the API this lives under the Accounts tag. For exchange to/from blockchain (API: NMS send/receive), see Transfers.
Get transfer history: GET /api/v2/accounts/history
Optional query params: actions (e.g. DEPOSIT, WITHDRAW, MARGIN, SEND, RECEIVE), assets, page, size. Response is paginated. V2 includes SEND, RECEIVE, SEND_COLLATERAL, RECEIVE_COLLATERAL. For the full action enum and response schema, see the Accounts spec.
Wire accounts
Get wire accounts: GET /api/v1/accounts/wire
Returns the wire (bank) accounts linked to the partner for USD deposits and withdrawals. To initiate a USD wire withdrawal, use the id of one of these accounts as wireAccountId in the Withdrawal (USD) request body. Optional query params: limit, offset.