> ## Documentation Index
> Fetch the complete documentation index at: https://docs.totalis.trade/llms.txt
> Use this file to discover all available pages before exploring further.

# Create HyperCore exit

> Moves free vault cash to the account's own HyperCore spot balance by relaying its owner-signed Exit through the CoreExit router, which a wallet needs before a HyperCore order or withdrawal can spend it.

Requires a key for your account with `funding:withdraw`, `sponsorship:use`.

A wallet session for the account also works, with no scope limit, sent from its `Origin`.



## OpenAPI

````yaml /hyperliquid/openapi.json post /v1/core-exits
openapi: 3.1.1
info:
  title: Totalis Hyperliquid API
  description: >-
    REST API for Totalis singles and parlays on Hyperliquid HIP-4 outcome
    markets, for client integrations and external market makers.


    There are three ways in, each sent as `Authorization: Bearer <credential>`:


    - **Scoped API key** (`ttk_`), for servers, bots and market makers. The
    account owner creates it in the Totalis app, or a wallet-session user
    creates one with `POST /v1/me/api-keys` and a fresh wallet signature (see
    API keys). It acts for one account, yours or a maker's, with only the scopes
    it holds, and needs no `Origin`.

    - **Wallet session**, for users who bring their own wallet to a partner's
    web page. The page signs the wallet in with `POST
    /v1/auth/wallet-challenges` and `POST /v1/auth/wallet-sessions`; the session
    is bound to the page's registered `Origin` and must be sent from it. Pages
    may also label their traffic with their publishable browser key in
    `X-Totalis-Partner: tpb_...`.

    - **Partner server key** (`tpk_`), only for `POST
    /v1/partner/wallet-admissions`, which lets a new wallet open its account
    during the invite-only launch. Server to server, never in a browser, and
    never with an `Origin`.


    Public market reads need no credential. A credential only authenticates:
    every bet, cash-out and withdrawal also carries the wallet or maker
    signature the HyperEVM contract verifies. An external wallet sends `POST
    /v1/core-exits` to move its vault cash to HyperCore before a HyperCore
    order.


    For access, partner credentials (origins, browser and server keys), builder
    codes or staging, email
    [founders@totalis.trade](mailto:founders@totalis.trade).


    Amounts are base-10 strings in native USDC atomic units, large identifiers
    are decimal strings, and every command `POST` requires an `Idempotency-Key`
    header.


    Every error is `{error: {code, message, retry, request_id,
    field_violations}}`. `code` is stable; each operation lists the codes it
    returns per status. `retry` is `NEVER` (stop), `BACKOFF` (resend the same
    request with the same `Idempotency-Key` after `Retry-After` seconds) or
    `REFRESH` (re-read state, then send a new request with a new key).
    `field_violations` names invalid inputs by JSON pointer, such as
    `/legs/0/side`.
  version: 152.0.0-maker-withdrawal
servers:
  - url: https://hip4-api.totalis.trade
    description: Production public edge
security: []
tags:
  - name: Markets
    description: HIP-4 markets, their sides and price history. No API key needed.
  - name: RFQs & Quotes
    description: >-
      RFQs and the quotes that answer them: what a taker calls, then what a
      maker calls.
  - name: Positions
    description: Positions the account holds, or its maker backs.
  - name: Account
    description: >-
      The account a key acts for: identity, balances, activity, operations,
      withdrawals, deposits and HyperCore exits.
  - name: Makers
    description: 'The rest of a maker''s setup after Making: capital and collateral.'
  - name: Partners & wallet sign-in
    description: >-
      A partner admits its users' own wallets, which sign in from the partner's
      pages.
  - name: API keys
    description: >-
      Issue, rotate and revoke scoped keys from a wallet session. An API key
      cannot manage keys.
  - name: Deployment
    description: The contract deployment every signature is made against.
  - name: WebSocket
    description: The authenticated WebSocket for account and maker updates.
paths:
  /v1/core-exits:
    post:
      tags:
        - Account
      summary: Create HyperCore exit
      description: >-
        Moves free vault cash to the account's own HyperCore spot balance by
        relaying its owner-signed Exit through the CoreExit router, which a
        wallet needs before a HyperCore order or withdrawal can spend it.


        Requires a key for your account with `funding:withdraw`,
        `sponsorship:use`.


        A wallet session for the account also works, with no scope limit, sent
        from its `Origin`.
      operationId: createCoreExit
      parameters:
        - $ref: '#/components/parameters/IdempotencyKey'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CoreExitEnvelope'
            example:
              schema_version: 1
              request_id: 0199a1b2-c3d4-7e5f-8a6b-7c8d9e0f1a50
              sent_at: '2026-10-16T12:00:00Z'
              command:
                account: '0x1111111111111111111111111111111111111111'
                to: '0x3333333333333333333333333333333333333333'
                amount: '25000000'
                expiry: '1792152300'
                salt: '84190357266103877'
                signature: >-
                  0xababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
                purpose: ORDER
      responses:
        '202':
          description: >-
            Core exit durably accepted, not yet on chain: follow it with `GET
            /v1/core-exits/{exit_id}` until `CREDITED`. An exact replay of the
            same `Idempotency-Key` and body returns the stored exit before any
            dependency check.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CoreExit'
              example:
                exit_id: 0199a1b2-c3d4-7e5f-8a6b-7c8d9e0f1a2b
                status: QUEUED
                purpose: ORDER
                account: '0x1111111111111111111111111111111111111111'
                amount: '25000000'
                router_address: '0x3333333333333333333333333333333333333333'
                expiry: '1792152300'
                exit_digest: >-
                  0x7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e
                activation_fee_accepted: false
                operation:
                  operation_id: >-
                    0x4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d
                  status: QUEUED
                  transaction_hash: null
                sent: null
                credit: null
                created_at: '2026-10-16T12:00:00Z'
                updated_at: '2026-10-16T12:00:00Z'
        '400':
          description: >-
            The `Idempotency-Key` is a UUIDv7 and becomes the exit ID. Exit `to`
            must be `deployment.router_address` from `GET /v1/me/core-exits`,
            and expiry at most `maximum_life_seconds` ahead.


            - `INVALID_REQUEST` (retry `NEVER`): The body, a path parameter or a
            header is malformed or fails validation. `field_violations` names
            invalid body fields.

            - `INVALID_IDEMPOTENCY_KEY` (retry `NEVER`): The command needs
            exactly one lowercase UUIDv7 `Idempotency-Key` header; confirm takes
            none.

            - `ORIGIN_REQUIRED` (retry `NEVER`): A browser route needs exactly
            one `Origin` header.
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/Error'
        '401':
          description: >-
            - `UNAUTHENTICATED` (retry `NEVER`): The credential is missing,
            invalid, expired or revoked.
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/Error'
        '403':
          description: >-
            - `FORBIDDEN` (retry `NEVER`): The credential is valid but lacks the
            scope, permission or role this operation needs.
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/Error'
        '409':
          description: >-
            Admission needs a fresh HyperCore `userRole` of `user`, or of
            `missing` with `activation_fee_accepted` true, and at most one
            unresolved exit per account. `STATE_CONFLICT`: too little free vault
            cash.


            - `IDEMPOTENCY_KEY_REUSED` (retry `NEVER`): The idempotency key was
            already used with different input.

            - `CORE_ACCOUNT_NOT_READY` (retry `REFRESH`): The HyperCore account
            is not an initialized user.

            - `CORE_ACCOUNT_ACTIVATION_REQUIRED` (retry `NEVER`): The HyperCore
            account does not exist yet, and its first credit pays a 1 USDC
            activation fee. Resend with `activation_fee_accepted` once the user
            accepts it.

            - `CORE_MOVE_IN_FLIGHT` (retry `REFRESH`): A HyperCore transfer for
            this account is still in flight.

            - `STATE_CONFLICT` (retry `REFRESH`): The resource changed and no
            longer admits this request.
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/Error'
        '429':
          description: >-
            - `RATE_LIMITED` (retry `BACKOFF`): The request quota for this
            credential or route is exhausted.
          headers:
            Retry-After:
              $ref: '#/components/headers/RetryAfter'
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/Error'
        '503':
          description: >-
            - `AUTHORIZATION_UNAVAILABLE` (retry `BACKOFF`): Identity or
            credential authority storage is unavailable.

            - `DEPENDENCY_STALE` (retry `BACKOFF`): A projection or upstream the
            request depends on (chain projection, HyperCore state, database) is
            behind its freshness bound or unavailable.

            - `CORE_EXIT_UNAVAILABLE` (retry `BACKOFF`): Core exits cannot be
            admitted now.

            - `FINANCIAL_ACTIONS_DISABLED` (retry `BACKOFF`): Financial actions
            are disabled for this deployment.
          headers:
            Retry-After:
              $ref: '#/components/headers/RetryAfter'
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/Error'
      security:
        - apiKey:
            - funding:withdraw
            - sponsorship:use
        - walletSession: []
components:
  parameters:
    IdempotencyKey:
      name: Idempotency-Key
      in: header
      required: true
      schema:
        type: string
        format: uuid
        pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
      description: >-
        Lowercase UUIDv7 naming this command, unique per caller and route. A
        retry with the same key and body returns the original result; the same
        key with a different body returns `409 IDEMPOTENCY_KEY_REUSED`.
      example: 0198a6f6-82a5-7abc-9f2a-4f0fb437493e
  schemas:
    CoreExitEnvelope:
      type: object
      additionalProperties: false
      required:
        - schema_version
        - request_id
        - sent_at
        - command
      properties:
        schema_version:
          const: 1
          description: Envelope format version; always 1.
        request_id:
          $ref: '#/components/schemas/Uuid'
          description: >-
            Client-generated UUIDv7 for this request, echoed back in error
            responses.
        sent_at:
          $ref: '#/components/schemas/CommonTimestamp'
          description: RFC 3339 UTC time the client sent the request, ending in Z.
        command:
          description: >-
            The owner-signed EIP-712 vault Exit that moves free vault cash to
            the account's HyperCore spot balance through the CoreExit router;
            Totalis relays it and pays the gas.
          type: object
          additionalProperties: false
          required:
            - account
            - to
            - amount
            - expiry
            - salt
            - signature
            - purpose
          properties:
            account:
              $ref: '#/components/schemas/LowercaseNonZeroAddress'
              description: >-
                The account wallet, lowercase: the vault account the cash leaves
                and the HyperCore account it reaches.
            to:
              $ref: '#/components/schemas/LowercaseNonZeroAddress'
              description: Must equal deployment.router_address.
            amount:
              $ref: '#/components/schemas/CommonAmount'
              description: >-
                Atomic USDC (6 decimals) to move; at most the account's free
                vault cash. An account whose wallet is not a Totalis embedded
                wallet moves at least 1 USDC (1000000).
            expiry:
              $ref: '#/components/schemas/UInt64String'
              description: >-
                Exit expiry in Unix seconds, in the future and at most
                deployment.maximum_life_seconds ahead.
            salt:
              $ref: '#/components/schemas/Uint'
              description: >-
                Caller-chosen uint256 as a decimal string that makes the signed
                Exit unique.
            signature:
              $ref: '#/components/schemas/ContractSignature'
              description: >-
                Signature by the account wallet over the EIP-712
                Exit(account,to,amount,expiry,salt) digest; ECDSA or ERC-1271
                contract signature bytes.
            purpose:
              enum:
                - ORDER
                - WITHDRAW
                - SWEEP
              description: >-
                Why the cash moves: ORDER before a HyperCore order, WITHDRAW
                before a HyperCore withdrawal, SWEEP for a background move. A
                label only, except that SWEEP never accepts the activation fee.
            activation_fee_accepted:
              type: boolean
              description: >-
                Omitted means false. The user accepted that this exit creates
                their HyperCore account and that Hyperliquid takes a one-time 1
                USDC activation fee from it. Required when the account does not
                exist yet; ignored when it does. Never accepted for SWEEP, and
                the exit must then move at least 2 USDC (2000000).
    CoreExit:
      type: object
      additionalProperties: false
      required:
        - exit_id
        - status
        - purpose
        - account
        - amount
        - router_address
        - expiry
        - exit_digest
        - activation_fee_accepted
        - operation
        - sent
        - credit
        - created_at
        - updated_at
      properties:
        exit_id:
          $ref: '#/components/schemas/Uuid'
          description: 'The exit ID: the Idempotency-Key it was created with.'
        status:
          $ref: '#/components/schemas/CoreExitState'
          description: Where the exit is; see the state values.
        purpose:
          oneOf:
            - enum:
                - ORDER
                - WITHDRAW
                - SWEEP
            - type: 'null'
          description: The purpose the exit was sent with; null for an ABANDONED tombstone.
        account:
          oneOf:
            - $ref: '#/components/schemas/LowercaseNonZeroAddress'
            - type: 'null'
          description: The signed Exit's account wallet; null for an ABANDONED tombstone.
        amount:
          oneOf:
            - $ref: '#/components/schemas/CommonAmount'
            - type: 'null'
          description: >-
            Atomic USDC (6 decimals) the Exit moves; null for an ABANDONED
            tombstone.
        router_address:
          oneOf:
            - $ref: '#/components/schemas/LowercaseNonZeroAddress'
            - type: 'null'
          description: >-
            The CoreExit router the Exit names as to; null for an ABANDONED
            tombstone.
        expiry:
          oneOf:
            - $ref: '#/components/schemas/UInt64String'
            - type: 'null'
          description: >-
            The signed Exit's expiry in Unix seconds; null for an ABANDONED
            tombstone.
        exit_digest:
          oneOf:
            - $ref: '#/components/schemas/Bytes32'
            - type: 'null'
          description: >-
            EIP-712 digest of the signed Exit, which the vault marks consumed
            when it runs; null for an ABANDONED tombstone.
        activation_fee_accepted:
          type: boolean
          description: >-
            True only for an exit admitted to create a missing HyperCore
            account. Its Core credit is the full amount less a 1 USDC activation
            fee, or the full amount if the account was created first by someone
            else.
        operation:
          oneOf:
            - type: object
              additionalProperties: false
              required:
                - operation_id
                - status
                - transaction_hash
              properties:
                operation_id:
                  $ref: '#/components/schemas/Bytes32'
                  description: ID of the Totalis relay operation that submits the Exit.
                status:
                  $ref: '#/components/schemas/OperationState'
                  description: The relay operation's status.
                transaction_hash:
                  oneOf:
                    - $ref: '#/components/schemas/Bytes32'
                    - type: 'null'
                  description: >-
                    The relay's latest HyperEVM transaction, or null before one
                    is broadcast.
              title: Operation id
            - type: 'null'
          description: >-
            The Totalis relay of the signed Exit, or null when there is none, as
            for a tombstone.
        sent:
          oneOf:
            - type: object
              additionalProperties: false
              required:
                - transaction_hash
                - block_number
                - sent_log_index
                - deposit_log_index
              properties:
                transaction_hash:
                  $ref: '#/components/schemas/Bytes32'
                  description: HyperEVM transaction that ran the Exit.
                block_number:
                  $ref: '#/components/schemas/UInt64String'
                  description: HyperEVM block of that transaction, as a decimal string.
                sent_log_index:
                  type: integer
                  minimum: 0
                  description: Log index of the router's CoreExitSent event in the block.
                deposit_log_index:
                  oneOf:
                    - type: integer
                      minimum: 0
                    - type: 'null'
                  description: >-
                    Log index of the USDC transfer to the HyperCore system
                    address that credits the account; null for RECOVERED.
              title: Transaction hash
            - type: 'null'
          description: >-
            The qualified HyperEVM receipt. For RECOVERED, sent_log_index is the
            CoreExitRecovered log and deposit_log_index is null.
        credit:
          oneOf:
            - type: object
              additionalProperties: false
              required:
                - event_id
                - credited_at
              properties:
                event_id:
                  type: string
                  minLength: 1
                  maxLength: 256
                  description: >-
                    Identifier of the HyperCore ledger credit linked to this
                    exit.
                credited_at:
                  $ref: '#/components/schemas/CommonTimestamp'
                  description: When HyperCore credited the account.
              title: Event id
            - type: 'null'
          description: >-
            The HyperCore spot credit the exit produced, or null until it is
            linked (status CREDITED).
        created_at:
          $ref: '#/components/schemas/CommonTimestamp'
          description: When the exit was admitted.
        updated_at:
          $ref: '#/components/schemas/CommonTimestamp'
          description: When the exit last changed.
    Error:
      additionalProperties: false
      properties:
        error:
          $ref: '#/components/schemas/ErrorDetail'
          description: The one error this request failed with.
      required:
        - error
      type: object
    Uuid:
      type: string
      format: uuid
      pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
    CommonTimestamp:
      type: string
      format: date-time
      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$
      maxLength: 30
    LowercaseNonZeroAddress:
      type: string
      pattern: ^0x[0-9a-f]{40}$
      description: Never `0x0000000000000000000000000000000000000000`.
    CommonAmount:
      type: string
      pattern: ^(0|[1-9][0-9]*)$
      maxLength: 39
      format: uint128-decimal
    UInt64String:
      type: string
      pattern: >-
        ^(0|[1-9][0-9]{0,18}|1[0-7][0-9]{18}|18[0-3][0-9]{17}|184[0-3][0-9]{16}|1844[0-5][0-9]{15}|18446[0-6][0-9]{14}|184467[0-3][0-9]{13}|1844674[0-3][0-9]{12}|184467440[0-6][0-9]{10}|1844674407[0-2][0-9]{9}|18446744073[0-6][0-9]{8}|1844674407370[0-8][0-9]{6}|18446744073709[0-4][0-9]{5}|184467440737095[0-4][0-9]{4}|18446744073709550[0-9]{3}|18446744073709551[0-5][0-9]{2}|1844674407370955160[0-9]|1844674407370955161[0-5])$
      maxLength: 20
      format: uint64-decimal
    Uint:
      type: string
      pattern: ^(0|[1-9][0-9]*)$
      maxLength: 78
      format: uint256-decimal
    ContractSignature:
      type: string
      pattern: ^0x(?:[0-9a-f]{2}){1,4096}$
    CoreExitState:
      enum:
        - QUEUED
        - DISPATCHED
        - ATTEMPT_FAILED
        - SENT
        - CREDITED
        - RECOVERED
        - FAILED
        - ABANDONED
      description: >-
        ATTEMPT_FAILED is not terminal: the signed Exit can still execute until
        expiry, and a consumed digest is completed by a recovery relay. SENT is
        final on HyperEVM and waits for the Core credit without a timeout.
        RECOVERED means the account's signed router recover() returned the cash
        to an EVM recipient.
    Bytes32:
      type: string
      pattern: ^0x[0-9a-f]{64}$
    OperationState:
      enum:
        - QUEUED
        - IN_FLIGHT
        - RETRYABLE
        - UNKNOWN
        - COMMITTED
        - REVERTED
        - EXPIRED_UNEXECUTED
    ErrorDetail:
      additionalProperties: false
      properties:
        code:
          $ref: '#/components/schemas/ErrorCode'
          description: Stable registered code; branch on this, not on message or status.
        field_violations:
          description: >-
            Each invalid input by JSON pointer; empty when the error is not
            about a specific input.
          items:
            $ref: '#/components/schemas/FieldViolation'
          type: array
        message:
          description: Human-readable; may change without notice.
          minLength: 1
          type: string
        request_id:
          description: >-
            UUIDv7 of this request, also returned in the X-Request-ID header.
            Quote it when reporting a problem.
          format: uuid
          pattern: >-
            ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
          type: string
        retry:
          $ref: '#/components/schemas/Retry'
          description: What the caller should do next; fixed by the registry for each code.
      required:
        - code
        - message
        - retry
        - request_id
        - field_violations
      type: object
    ErrorCode:
      description: >-
        Stable HTTP error code. Each code has one HTTP status and one retry
        value.
      enum:
        - INVALID_REQUEST
        - INVALID_QUERY
        - INVALID_CURSOR
        - INVALID_IDEMPOTENCY_KEY
        - ORIGIN_REQUIRED
        - SUBPROTOCOL_REQUIRED
        - UNSUPPORTED_BROWSE_CONTRACT
        - UNAUTHENTICATED
        - FORBIDDEN
        - ORIGIN_NOT_ALLOWED
        - ACCESS_REQUIRED
        - NOT_FOUND
        - IDENTITY_NOT_FOUND
        - QUOTE_NOT_FOUND
        - INVITE_CODE_NOT_FOUND
        - IDEMPOTENCY_KEY_REUSED
        - STATE_CONFLICT
        - INVITE_CODE_EXHAUSTED
        - STALE_CURSOR
        - CURSOR_EXPIRED
        - CURSOR_RESET
        - RECURRING_DEFINITION_CONFLICT
        - EMBEDDED_WALLET_CONFLICT
        - SECRET_UNAVAILABLE
        - ROTATION_IN_PROGRESS
        - TELEMETRY_CONFLICT
        - RFQ_NOT_CANCELLABLE
        - RFQ_NOT_OPEN
        - RFQ_GENERATION_STALE
        - RFQ_GENERATION_IN_FLIGHT
        - QUOTE_EXPIRED
        - QUOTE_CANCELLED
        - QUOTE_REPLACED
        - QUOTE_SIGNER_CHANGED
        - QUOTE_CAPACITY_EXCEEDED
        - CORE_ACCOUNT_NOT_READY
        - CORE_ACCOUNT_ACTIVATION_REQUIRED
        - CORE_EXIT_ABANDONED
        - CORE_MOVE_IN_FLIGHT
        - USERNAME_TAKEN
        - USERNAME_ALREADY_SET
        - INVALID_SIGNATURE
        - WALLET_CONTRACT_UNSUPPORTED
        - WRONG_AUTHORITY
        - KEY_LIMIT_REACHED
        - USERNAME_NOT_ALLOWED
        - RATE_LIMITED
        - CONNECTION_LIMIT
        - RFQ_INTENT_LIMIT
        - QUOTE_EXPOSURE_LIMIT
        - DEPENDENCY_STALE
        - AUTHORIZATION_UNAVAILABLE
        - SOURCE_UNAVAILABLE
        - CONTRACT_UNAVAILABLE
        - MARKET_DATA_UNAVAILABLE
        - BROWSE_UNAVAILABLE
        - FINANCIAL_ACTIONS_DISABLED
        - CORE_EXIT_UNAVAILABLE
        - COLLATERAL_REDUCTION_UNAVAILABLE
        - SPONSORSHIP_UNAVAILABLE
        - CONTRACT_SIGNATURE_OVERLOADED
        - QUOTE_EXPOSURE_STALE
        - COMBO_AUTOMATIC_DISABLED
        - EMBEDDED_WALLET_UNAVAILABLE
        - CONNECTION_DRAIN
      type: string
    FieldViolation:
      additionalProperties: false
      properties:
        code:
          description: >-
            REQUIRED: the input is missing. INVALID: it is present but malformed
            or out of range. UNEXPECTED: the input is not accepted here.
          enum:
            - REQUIRED
            - INVALID
            - UNEXPECTED
          type: string
        field:
          description: >-
            JSON pointer into the body, or into the query parameters as one flat
            object for requests without a body, for example /legs/0/stake or
            /limit.
          pattern: ^(/([^~/]|~[01])*)+$
          type: string
      required:
        - field
        - code
      type: object
    Retry:
      description: >-
        NEVER: stop. BACKOFF: resend the same request with the same
        Idempotency-Key after Retry-After. REFRESH: re-read state, then send a
        new request with a new Idempotency-Key.
      enum:
        - NEVER
        - BACKOFF
        - REFRESH
      type: string
  headers:
    RetryAfter:
      description: Seconds to wait before resending the same request
      schema:
        type: integer
        minimum: 1
  securitySchemes:
    apiKey:
      type: http
      scheme: bearer
      bearerFormat: ttk_
      description: >-
        Scoped API key (`ttk_...`), created in the Totalis app or by a
        wallet-session user through the API keys routes with a fresh wallet
        signature; those routes never accept a key. 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. Send no `Origin`.
    walletSession:
      type: http
      scheme: bearer
      description: >-
        Wallet session: the `access_token` from `POST /v1/auth/wallet-sessions`,
        for a user who brings their own wallet to a partner's web page. It acts
        for that wallet's account with no scope limit, and is bound to the
        `Origin` it signed in from: send exactly one `Origin` header with that
        value, or the request is `ORIGIN_REQUIRED` or `UNAUTHENTICATED`. It
        lasts at most 30 days and ends after 7 idle days or at `DELETE
        /v1/auth/wallet-sessions/current`.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.