Skip to main content
POST
Accept the winning bid on your early cashout auction and exit on-chain. The bid is the price, and the market maker does not confirm it. You echo back the price you accepted, and the exit fills only at or above it. Totalis obtains signatures server-side via Privy at execution. You receive min_price_micro or better either way. Who won decides what happens to the position: The commit is idempotent per (request, user). A committed result is cached for 5 minutes and replayed verbatim with 200 OK. A retry with a different min_price_micro still gets the first result, and the new floor is not re-evaluated. Retry with the value you first sent.
Indeterminate commits never double-spend. If the on-chain outcome is unknown (timeout or transient RPC failure), the request stays committing and returns 503 with details.indeterminate: true. Totalis resolves it against on-chain state, so do not treat that 503 as a failure. Reopen the stream and wait for the terminal status. See the 503 cases below.

Authentication

Send your API key in the X-API-Key header. The key needs the trading:write scope.
A Privy JWT (Authorization: Bearer <jwt>) is also accepted. See Authentication.

Path parameters

string
required
The cashout request ID (UUID).

Request body

integer
required
The price you accepted on screen, in microUSDC. Echo back the price_micro from the best_quote frame you were shown. Without it the commit is a 400, because nothing ever fills at a price the user did not see.The fill uses the best live bid at commit time, floored at this value. A better bid fills at the better price. If the book has moved below it, the commit fails with 409 price_below_accepted (carrying best_price_micro) and the auction stays open to re-tap.
The body is strict. An unknown field is a 400.

Response

Returns 201 Created on a fresh commit, or 200 OK when replaying a cached idempotent result.
object

Errors

A 409 means nothing landed. Most reasons are retryable against a live book. already_transferred is terminal: stop, and re-read the position instead of reopening an auction.