> ## 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.

# List activity

> List your account's activity.

Requires one of:

- a key for your account with `account:read`
- a key for a maker with `vault:read` and the maker permission `READ_ACTIVITY`



## OpenAPI

````yaml /hyperliquid/openapi.json get /v1/me/activity
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.


    Authenticate with a scoped API key created in the Totalis app, sent as
    `Authorization: Bearer <key>`. Public market reads need no key.
    Balance-affecting commands also carry the wallet or maker signature the
    HyperEVM contract verifies.


    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: 127.0.0-pure-reads
servers:
  - url: https://hip4-api.totalis.trade
    description: Production public edge
  - url: https://hip4-api-staging.totalis.trade
    description: Staging and chain-998 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 and
      withdrawals.
  - name: Makers
    description: 'The rest of a maker''s setup after Making: capital and collateral.'
  - name: Deployment
    description: The contract deployment every signature is made against.
  - name: WebSocket
    description: The authenticated WebSocket for account and maker updates.
paths:
  /v1/me/activity:
    get:
      tags:
        - Account
      summary: List activity
      description: >-
        List your account's activity.


        Requires one of:


        - a key for your account with `account:read`

        - a key for a maker with `vault:read` and the maker permission
        `READ_ACTIVITY`
      operationId: listAccountActivity
      parameters:
        - $ref: '#/components/parameters/Limit'
        - $ref: '#/components/parameters/Cursor'
        - $ref: '#/components/parameters/ActivityKindQueryOptional'
        - $ref: '#/components/parameters/ActivityStatusQueryOptional'
        - $ref: '#/components/parameters/FromQueryOptional'
        - $ref: '#/components/parameters/ThroughQueryOptional'
        - $ref: '#/components/parameters/PositionIdQueryOptional'
        - $ref: '#/components/parameters/ActivityVenueQueryOptional'
        - name: Origin
          in: header
          required: false
          schema:
            type: string
          description: Required for browser sessions; API keys do not require an Origin.
          example: https://totalis.trade
      responses:
        '200':
          description: >-
            Your activity, built from on-chain records and operations. A key
            reads its own account's: yours, or its maker's. One freshness status
            covers the read; amounts are atomic USDC strings or null. No shared
            caching.
          headers:
            Cache-Control:
              $ref: '#/components/headers/CacheControl'
            Vary:
              $ref: '#/components/headers/Vary'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ActivityList'
              example:
                context:
                  as_of: '2026-09-26T11:59:58Z'
                  status: CURRENT
                items:
                  - activity_id: >-
                      e8600eddcc05d910cdc69c8fa14baa7303b994b563e11fe1427c3ea51cf415f3
                    revision: '1'
                    sequence: '1791'
                    kind: INTERNAL_TRANSFER
                    status: COMMITTED
                    occurred_at: '2026-09-23T14:07:31Z'
                    recorded_at: '2026-09-23T14:07:33.482915Z'
                    operation_ids: []
                    position_ids: []
                    supersedes: []
                    transaction_hashes:
                      - >-
                        0xa57d42e84c9657d92132de83bea790cd286dca80157d4c0f529696ce1c050a2a
                    effects:
                      - asset:
                          asset_id: >-
                            eip155:999/erc20:0xb88339cb7199b77e23db6e890353e22632ba630f
                          symbol: USDC
                          decimals: 6
                        bucket: VAULT_USER
                        delta: '250000000'
                        classification: INTERNAL_TRANSFER
                      - asset:
                          asset_id: >-
                            eip155:999/erc20:0xb88339cb7199b77e23db6e890353e22632ba630f
                          symbol: USDC
                          decimals: 6
                        bucket: WALLET
                        delta: '-250000000'
                        classification: INTERNAL_TRANSFER
                    fill: null
                    counterparty: '0x1111111111111111111111111111111111111111'
                    description_code: WALLET_VAULT_TRANSFER
                next_cursor: null
                has_more: false
        '400':
          description: >-
            - `INVALID_QUERY` (retry `NEVER`): A query parameter is malformed,
            out of range or not accepted by this operation. `field_violations`
            names it.
          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'
        '404':
          description: >-
            - `NOT_FOUND` (retry `NEVER`): The resource does not exist or is not
            visible to this credential.
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/Error'
        '409':
          description: >-
            - `CURSOR_EXPIRED` (retry `REFRESH`): The account-read snapshot
            behind this cursor expired or its scope changed; restart from the
            first page.
          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: >-
            Activity is temporarily unavailable; resend after `Retry-After`.


            - `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.

            - `SOURCE_UNAVAILABLE` (retry `BACKOFF`): The account-read or stream
            source is unavailable.

            - `CONTRACT_UNAVAILABLE` (retry `BACKOFF`): This producer is
            disabled in this environment.
          headers:
            Retry-After:
              $ref: '#/components/headers/RetryAfter'
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/Error'
      security:
        - apiKey:
            - account:read
        - apiKey:
            - vault:read
components:
  parameters:
    Limit:
      name: limit
      in: query
      schema:
        $ref: '#/components/schemas/PageLimit'
      description: >-
        Maximum items per page, 1 to 200, default 50. A page may hold fewer,
        even none, while has_more is true.
      example: 50
    Cursor:
      name: cursor
      in: query
      description: >-
        Omit for the first page; then send the previous response's next_cursor
        unchanged.
      schema:
        $ref: '#/components/schemas/PageCursor'
      example: eyJ2IjoxLCJzIjoiMTIzNDUifQ
    ActivityKindQueryOptional:
      name: kind
      in: query
      required: false
      description: Return only activities of this kind.
      schema:
        $ref: '#/components/schemas/ActivityKind'
      example: DEPOSIT
    ActivityStatusQueryOptional:
      name: status
      in: query
      required: false
      description: >-
        Return only activities with this status. A status-filtered page is a
        display view, never a balance or P&L basis.
      schema:
        type: string
        enum:
          - PENDING
          - UNKNOWN
          - COMMITTED
          - FAILED
          - REVERTED
          - CORRECTED
      example: COMMITTED
    FromQueryOptional:
      name: from
      in: query
      required: false
      description: >-
        Inclusive RFC3339 lower bound on occurred_at (recorded_at for workflow
        entries without one). Chain activity whose occurrence time is unknown is
        always included.
      schema:
        type: string
        format: date-time
      example: '2026-09-01T00:00:00Z'
    ThroughQueryOptional:
      name: through
      in: query
      required: false
      description: >-
        Exclusive RFC3339 upper bound on occurred_at (recorded_at for workflow
        entries without one). Chain activity whose occurrence time is unknown is
        always included.
      schema:
        type: string
        format: date-time
      example: '2026-09-26T00:00:00Z'
    PositionIdQueryOptional:
      name: position_id
      in: query
      required: false
      description: >-
        Return only activities that reference this position ID (lowercase
        bytes32 hex).
      schema:
        type: string
        pattern: ^0x[0-9a-f]{64}$
      example: '0x5e0f6a2b8c4d1e3f7a9b0c2d4e6f8a1b3c5d7e9f0a2b4c6d8e0f1a3b5c7d9e1f'
    ActivityVenueQueryOptional:
      name: venue
      in: query
      required: false
      description: >-
        Return only activities with evidence from this source: HYPEREVM (EVM
        logs), HYPERCORE (Hyperliquid ledger) or VENUE (Totalis workflows).
      schema:
        type: string
        enum:
          - HYPEREVM
          - HYPERCORE
          - VENUE
      example: HYPEREVM
  headers:
    CacheControl:
      description: Always `no-store`; account data must not be cached.
      schema:
        const: no-store
    Vary:
      schema:
        type: string
      description: >-
        The response varies by the Authorization header, so shared caches must
        not reuse it across credentials.
    RetryAfter:
      description: Seconds to wait before resending the same request
      schema:
        type: integer
        minimum: 1
  schemas:
    ActivityList:
      type: object
      additionalProperties: false
      required:
        - context
        - items
        - next_cursor
        - has_more
      properties:
        context:
          $ref: '#/components/schemas/ReadContext'
          description: >-
            Freshness of this read: the oldest source observation and one status
            for every amount in the response.
        items:
          type: array
          items:
            $ref: '#/components/schemas/Activity'
          description: >-
            Activities on this page, ordered by sequence, then activity_id,
            descending.
        next_cursor:
          $ref: '#/components/schemas/NextCursor'
          description: >-
            Opaque cursor for the next page, bound to this response's snapshot;
            null on the last page. Send it back unchanged as cursor.
        has_more:
          type: boolean
          description: >-
            True when another page exists; true exactly when next_cursor is
            non-null.
    Error:
      additionalProperties: false
      properties:
        error:
          $ref: '#/components/schemas/ErrorDetail'
          description: The one error this request failed with.
      required:
        - error
      type: object
    PageLimit:
      type: integer
      minimum: 1
      maximum: 200
      default: 50
      description: >-
        Maximum items in one page. A page may hold fewer, even none, while
        has_more is true.
    PageCursor:
      type: string
      minLength: 1
      maxLength: 2048
      description: >-
        Opaque list cursor. Send a previous response's next_cursor back
        unchanged; never build or parse one.
    ActivityKind:
      type: string
      enum:
        - DEPOSIT
        - WITHDRAWAL
        - INTERNAL_TRANSFER
        - ACCEPT
        - CASHOUT
        - POSITION_TRANSFER
        - SETTLEMENT
        - CLAIM
        - FILL
        - ORDER
        - CREDIT
        - CONVERSION
        - FUNDING
        - FEE
        - CORRECTION
        - REFUND
    ReadContext:
      type: object
      additionalProperties: false
      required:
        - as_of
        - status
      properties:
        as_of:
          $ref: '#/components/schemas/Timestamp'
          description: RFC3339 observation time of the oldest source this read used.
        status:
          type: string
          enum:
            - CURRENT
            - STALE
            - UNAVAILABLE
          description: >-
            Freshness of the whole read. CURRENT: every source is fresh and
            reconciled. STALE: a source lags or has not reconciled, such as a
            catching-up projection, a pending reorg rescan or a period not fully
            covered; amounts may be displayed with their age but never authorize
            an action. UNAVAILABLE: a required source could not be read, so the
            amounts it backs are null.
      description: >-
        Freshness of the read. Pages of one list share the snapshot bound into
        their cursor.
    Activity:
      type: object
      additionalProperties: false
      required:
        - activity_id
        - revision
        - sequence
        - kind
        - status
        - occurred_at
        - recorded_at
        - operation_ids
        - position_ids
        - supersedes
        - transaction_hashes
        - effects
        - fill
        - counterparty
        - description_code
      properties:
        activity_id:
          type: string
          minLength: 1
          maxLength: 256
          description: >-
            Stable activity identifier (64 lowercase hex characters), unchanged
            across revisions and replays.
        revision:
          type: string
          pattern: ^(0|[1-9][0-9]{0,77})$
          description: >-
            Revision of this activity view, as a decimal string; increases when
            the activity is revised.
        sequence:
          type: string
          pattern: ^(0|[1-9][0-9]{0,77})$
          description: >-
            Commit-visible publication sequence, as a decimal string. Lists
            order by sequence, then activity_id, descending.
        kind:
          $ref: '#/components/schemas/ActivityKind'
          description: >-
            Business type of the activity, e.g. DEPOSIT, ACCEPT, SETTLEMENT,
            CLAIM, or CORRECTION for a reorg reversal.
        status:
          type: string
          enum:
            - PENDING
            - UNKNOWN
            - COMMITTED
            - FAILED
            - REVERTED
            - CORRECTED
          description: >-
            PENDING: in progress; UNKNOWN: outcome not yet known; COMMITTED:
            final at its source; FAILED or REVERTED: took no effect and moves no
            committed cash; CORRECTED: a correction entry reversing superseded
            activity.
        occurred_at:
          oneOf:
            - type: string
              format: date-time
            - type: 'null'
          description: >-
            RFC3339 evidence time; for workflow entries, the operation's
            creation time, which later revisions keep. Null when the occurrence
            time is uncertain, such as an order with no retained placement time.
        recorded_at:
          type: string
          format: date-time
          description: RFC3339 time the activity was recorded (ingest order).
        operation_ids:
          type: array
          items:
            type: string
            minLength: 1
            maxLength: 256
          description: Totalis operation IDs linked to the activity; empty when none.
        position_ids:
          type: array
          items:
            type: string
            pattern: ^0x[0-9a-f]{64}$
          description: Position IDs (bytes32 hex) the activity concerns; empty when none.
        supersedes:
          type: array
          items:
            type: string
            minLength: 1
            maxLength: 256
          uniqueItems: true
          description: >-
            Activity IDs this correction reverses; empty unless kind is
            CORRECTION.
        transaction_hashes:
          type: array
          items:
            $ref: '#/components/schemas/Digest'
          uniqueItems: true
          description: >-
            HyperEVM transactions that back the activity, in evidence order;
            empty for HyperCore and venue-only records.
        effects:
          type: array
          items:
            $ref: '#/components/schemas/Effect'
          description: >-
            Balance effects for the scoped subject, each in its own asset; empty
            only for ORDER and POSITION_TRANSFER, which move no cash.
        fill:
          oneOf:
            - $ref: '#/components/schemas/Fill'
            - type: 'null'
          description: >-
            Trade details for FILL, CONVERSION and CREDIT; null for every other
            kind and for entries recorded before trade details were retained. A
            CREDIT is an outcome settlement: it sells all size shares of side at
            price, what one share of that side paid at settlement, so the gross
            payout is size times price before the fee effect.
        counterparty:
          oneOf:
            - type: string
              pattern: ^0x[0-9a-f]{40}$
            - type: 'null'
          description: >-
            Address of the other party when known, such as a deposit's payer;
            null otherwise.
        description_code:
          type: string
          minLength: 1
          maxLength: 256
          description: >-
            Machine-readable display code, e.g. DEPOSIT, WALLET_VAULT_TRANSFER,
            MAKER_WITHDRAW_REQUESTED or REORG_REVERSAL; defaults to the kind.
    NextCursor:
      type:
        - string
        - 'null'
      minLength: 1
      maxLength: 2048
      description: Opaque cursor for the next page, or null when has_more is false.
    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
    Timestamp:
      type: string
      format: date-time
    Digest:
      type: string
      pattern: ^0x[0-9a-f]{64}$
    Effect:
      type: object
      additionalProperties: false
      required:
        - asset
        - bucket
        - delta
        - classification
      properties:
        asset:
          $ref: '#/components/schemas/Asset'
          description: Asset the delta is denominated in.
        bucket:
          type: string
          enum:
            - WALLET
            - CORE_SPOT
            - CORE_MARGIN
            - VAULT_USER
            - MAKER_VAULT
            - STAKE_ESCROW
            - PAYABLE
            - REQUIREMENT
            - RESERVATION
            - IN_TRANSIT
            - REALIZED_PNL
            - FEE
          description: >-
            Balance lane the delta applies to: WALLET, CORE_SPOT, CORE_MARGIN,
            VAULT_USER (the account's vault balance), MAKER_VAULT, STAKE_ESCROW,
            PAYABLE, REQUIREMENT, RESERVATION, IN_TRANSIT, REALIZED_PNL or FEE.
        delta:
          $ref: '#/components/schemas/SignedAmount'
          description: >-
            Signed change to the bucket in atomic units of asset, e.g. "1000000"
            = 1 USDC on HyperEVM (6 decimals) and "100000000" = 1 USDC on
            HyperCore (8 decimals). Lane deltas are not summable income.
        classification:
          type: string
          enum:
            - EXTERNAL_CAPITAL
            - INTERNAL_TRANSFER
            - TRADE
            - FEE
            - HOLD
            - CORRECTION
          description: >-
            Economic meaning: EXTERNAL_CAPITAL (deposit or withdrawal across the
            subject boundary), INTERNAL_TRANSFER (move between the subject's own
            lanes), TRADE, FEE, HOLD (reservation) or CORRECTION (reorg
            reversal).
    Fill:
      type: object
      additionalProperties: false
      required:
        - outcome_id
        - side
        - direction
        - size
        - price
        - oid
        - tid
      properties:
        outcome_id:
          $ref: '#/components/schemas/UInt32String'
          description: HIP-4 outcome ID traded, as a decimal string.
        side:
          $ref: '#/components/schemas/Side'
          description: Outcome side traded, YES or NO.
        direction:
          type: string
          enum:
            - BUY
            - SELL
          description: >-
            BUY or SELL of side, as Hyperliquid reported it; always SELL for a
            settlement credit.
        size:
          type: string
          pattern: ^[1-9][0-9]*(\.[0-9]*[1-9])?$|^0\.[0-9]*[1-9]$
          description: Shares filled, as an exact decimal string with no trailing zeros.
        price:
          type: string
          pattern: ^(0|[1-9][0-9]*)(\.[0-9]*[1-9])?$
          description: >-
            Price per share in USDC, as an exact decimal string with no trailing
            zeros; 0 is possible for a conversion leg or a losing settlement.
        oid:
          $ref: '#/components/schemas/UInt64String'
          description: Hyperliquid order ID, as a decimal string.
        tid:
          $ref: '#/components/schemas/NonZeroUInt64String'
          description: Hyperliquid trade ID, as a decimal string.
      description: >-
        The traded leg of a HyperCore fill, conversion or settlement credit.
        Cash and fees stay in effects.
    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_EXIT_ABANDONED
        - CORE_FUNDING_CONFLICT
        - CORE_VAULT_RESERVATION
        - CORE_MOVE_IN_FLIGHT
        - INVALID_SIGNATURE
        - WRONG_AUTHORITY
        - KEY_LIMIT_REACHED
        - HYPERCORE_WALLET_UNQUALIFIED
        - HYPERCORE_ACCOUNT_NOT_MAIN
        - HYPERCORE_INSUFFICIENT_BALANCE
        - 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_FUNDING_UNAVAILABLE
        - CORE_EXIT_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
    Asset:
      type: object
      additionalProperties: false
      required:
        - asset_id
        - symbol
        - decimals
      properties:
        asset_id:
          type: string
          pattern: >-
            ^(eip155:[1-9][0-9]{0,18}/erc20:0x[0-9a-f]{40}|hypercore:(mainnet|testnet)/token:0x[0-9a-f]{32})$
          description: >-
            Stable asset identifier. HyperEVM tokens use CAIP-19
            `eip155:<chain_id>/erc20:<lowercase address>`; HyperCore spot tokens
            use `hypercore:<mainnet|testnet>/token:<spotMeta tokenId>`.
        symbol:
          type: string
          minLength: 1
          maxLength: 32
          description: >-
            Display symbol, e.g. USDC or HYPE. Not an identity (HyperEVM USDC
            and HyperCore USDC share it), but USDC is one dollar per whole unit
            on either chain.
        decimals:
          type: integer
          minimum: 0
          maximum: 36
          description: >-
            Scale of the asset's atomic unit: 6 for HyperEVM USDC, 8 for
            HyperCore USDC and HYPE.
      description: >-
        Asset an effect moves. Deltas of different assets are different units
        and are never summed or compared.
    SignedAmount:
      type: string
      pattern: ^(0|-?[1-9][0-9]{0,77})$
    UInt32String:
      type: string
      pattern: >-
        ^(0|[1-9][0-9]{0,8}|[1-3][0-9]{9}|4[01][0-9]{8}|42[0-8][0-9]{7}|429[0-3][0-9]{6}|4294[0-8][0-9]{5}|42949[0-5][0-9]{4}|429496[0-6][0-9]{3}|4294967[0-1][0-9]{2}|42949672[0-8][0-9]|429496729[0-5])$
      maxLength: 10
    Side:
      type: string
      enum:
        - 'YES'
        - 'NO'
    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
    NonZeroUInt64String:
      allOf:
        - $ref: '#/components/schemas/UInt64String'
      description: Never `0`.
  securitySchemes:
    apiKey:
      type: http
      scheme: bearer
      description: >-
        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.

````

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