Skip to main content
POST
Accept quote

Authorizations

Authorization
string
header
required

Scoped API key from the Totalis app settings. Each key acts for one account, yours or a maker's, and holds only scopes that account can use. Each operation lists the scopes it requires.

Headers

Idempotency-Key
string<uuid>
required

Lowercase UUIDv7 that names this acceptance: it becomes the acceptance_id. Choose it before the first send and reuse it on every retry. The same key, quote and body returns the stored acceptance without restarting its deadline; the same key with another quote or body returns 409 IDEMPOTENCY_KEY_REUSED. Keys are unique per taker account, across all quotes. A quote can be accepted once: a new key on an RFQ that already has a live acceptance returns 409 STATE_CONFLICT. Lost the response? Read GET /v1/quotes/{quote_id}/acceptance instead of accepting again.

Pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$

Path Parameters

quote_id
string
required

The quote's quote_id, from QUOTE_CREATED, QUOTE_ACCEPTED or Create quote.

Pattern: ^0x[0-9a-f]{64}$

Body

application/json

The taker's accept of the quote in the path. The Idempotency-Key header becomes the acceptance_id.

taker_signature
string
required

Your EIP-712 signature over the quote. For an entry quote, sign its entry terms as TakerAccept. For a cash-out quote, the owner signs quote_id as SellBack or CashoutTransfer, the same digest the maker signs.

Pattern: ^0x(?:[0-9a-f]{2}){1,4096}$
funding
object

Entry quotes only; not allowed on a cash-out. Covers the part of the stake your vault balance is short, by kind: WALLET (a USDC authorization from your wallet), CORE (a HyperCore spot USDC payment) or COMBINED (both). Omit it when your vault balance covers the stake.

Response

The acceptance after the maker answered or the two-second confirm window closed, returned within three seconds. Its status is ACCEPTED, PENDING_FUNDING, DECLINED, TIMED_OUT or CANCELLED, never PENDING_CONFIRM. ACCEPTED means the trade is queued, not yet on chain: follow OPERATION_UPDATED on the account stream until it fills.

The accept response: the acceptance after the maker answered or the deadline passed.

acceptance_id
string<uuid>
required

The Idempotency-Key the taker sent with the accept, which names this acceptance. Never sent to the maker.

Pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
quote_id
string
required

The accepted quote. A quote has at most one acceptance.

Pattern: ^0x[0-9a-f]{64}$
rfq_id
string<uuid>
required

RFQ the quote answers.

Pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
status
enum<string>
required

PENDING_CONFIRM: waiting for the maker. PENDING_FUNDING: the maker confirmed an entry whose HyperCore payment is still pending. ACCEPTED: the maker confirmed and the trade is queued as operation_id. FILLED: the trade committed on chain. FAILED: it reverted or expired unexecuted. DECLINED: the maker declined. TIMED_OUT: the maker did not answer by deadline. CANCELLED: the quote or RFQ went away first, or the HyperCore payment failed.

Available options:
PENDING_CONFIRM,
PENDING_FUNDING,
ACCEPTED,
FILLED,
FAILED,
DECLINED,
TIMED_OUT,
CANCELLED
deadline
string<date-time>
required

When the maker's time to confirm ends, two seconds after the accept, as an RFC3339 UTC timestamp.

Maximum string length: 30
Pattern: ^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}([.][0-9]{1,9})?Z$
operation_id
string

The on-chain operation that executes the trade; present once status is ACCEPTED, FILLED or FAILED.

Pattern: ^0x[0-9a-f]{64}$