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

# Get maker capital

> Get your maker vault's capital, reservations and free collateral.

Requires a key for a maker with `vault:read` and the maker permission `READ_CAPITAL`.



## OpenAPI

````yaml /hyperliquid/openapi.json get /v1/makers/{maker_id}/capital
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/makers/{maker_id}/capital:
    get:
      tags:
        - Makers
      summary: Get maker capital
      description: >-
        Get your maker vault's capital, reservations and free collateral.


        Requires a key for a maker with `vault:read` and the maker permission
        `READ_CAPITAL`.
      operationId: getMakerCapital
      parameters:
        - $ref: '#/components/parameters/MakerIdPathRequired'
        - name: Origin
          in: header
          required: false
          schema:
            type: string
            format: uri
          description: Required for browser sessions; API keys do not require an Origin.
          example: https://totalis.trade
      responses:
        '200':
          description: >-
            Your maker capital, reconciled against the vault contract. Check it
            before you quote: a confirm fails when your capital cannot cover the
            fill. Read it again on every `MAKER_CAPITAL_UPDATED`. 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/MakerCapital'
              example:
                context:
                  as_of: '2026-09-26T12:00:02Z'
                  status: CURRENT
                owner: '0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
                signer: '0xbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb'
                vault_gross: '5250000000'
                stake_escrow: '150000000'
                payable_owed: '40000000'
                gross_open: '300000000'
                discount: '0'
                requirement: '300000000'
                free_collateral: '4760000000'
                capital_net_of_senior_liabilities: '5060000000'
                pending_commitments: '25000000'
                free_after_pending: '4735000000'
                floor_bps: 0
                deployment_digest: >-
                  0x0f6e28930640eed03d5ef0ff488c4d5329aca6137cecc6fbb315153e9bb518e8
                actions:
                  - action: MAKER_WITHDRAW
                    route: MAKER_VAULT
                    available: null
                    blockers:
                      - WITHDRAWAL_POLICY_UNQUALIFIED
                  - action: MAKER_QUOTE
                    route: MAKER_VAULT
                    available: null
                    blockers:
                      - PRIVATE_QUOTE_CAPACITY_UNAVAILABLE
                reservations:
                  - reservation_id: >-
                      entry:0xb2f68f5bdd4dd018d8d81481f0f2884cdd772719dcaddec4e56eaa307081f013
                    operation_ids:
                      - >-
                        0x1ba12138e817b7ca9dc394c6342efb4d0500e9ebd5023e2b97cedd14bb279c8c
                    value: '25000000'
                    status: ACTIVE
        '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'
        '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.

            - `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:
            - vault:read
components:
  parameters:
    MakerIdPathRequired:
      name: maker_id
      in: path
      required: true
      description: >-
        On-chain maker ID, as a decimal string. An API key may only name the
        maker it is bound to; other makers return 404.
      schema:
        $ref: '#/components/schemas/NonZeroUInt64String'
      example: '7'
  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:
    MakerCapital:
      type: object
      additionalProperties: false
      required:
        - context
        - owner
        - signer
        - vault_gross
        - stake_escrow
        - payable_owed
        - gross_open
        - discount
        - requirement
        - free_collateral
        - capital_net_of_senior_liabilities
        - pending_commitments
        - free_after_pending
        - floor_bps
        - deployment_digest
        - actions
        - reservations
      properties:
        context:
          $ref: '#/components/schemas/ReadContext'
          description: >-
            Freshness of this read: the oldest source observation and one status
            for every amount in the response.
        owner:
          $ref: '#/components/schemas/LowercaseNonZeroAddress'
          description: >-
            Maker owner (its controller) from the same indexed vault row as the
            lanes.
        signer:
          $ref: '#/components/schemas/LowercaseNonZeroAddress'
          description: >-
            Maker signer (its quote signer) from the same indexed vault row as
            the lanes.
        vault_gross:
          $ref: '#/components/schemas/UnsignedMetric'
          description: >-
            Maker vault lane V from the vault contract, including escrow and
            payables.
        stake_escrow:
          $ref: '#/components/schemas/UnsignedMetric'
          description: Bettor net stakes escrowed in this maker's open tickets (E).
        payable_owed:
          $ref: '#/components/schemas/UnsignedMetric'
          description: Settled winnings owed to ticket holders and not yet claimed (P).
        gross_open:
          $ref: '#/components/schemas/UnsignedMetric'
          description: >-
            Original open maker exposure G: payout minus net stake summed over
            open tickets.
        discount:
          $ref: '#/components/schemas/UnsignedMetric'
          description: >-
            Maker discount lane D from the vault contract, which offsets
            gross_open in the requirement.
        requirement:
          $ref: '#/components/schemas/UnsignedMetric'
          description: >-
            Collateral requirement R = max(G - min(D, G), ceil(G * floor_bps /
            10000)) under the pinned release; null when floor_bps is null or an
            input is null.
        free_collateral:
          $ref: '#/components/schemas/UnsignedMetric'
          description: >-
            Collateral headroom F = max(V - E - P - R, 0). Not a guarantee of
            quote acceptance.
        capital_net_of_senior_liabilities:
          $ref: '#/components/schemas/Metric'
          description: >-
            Signed C = V - E - P. Excludes open-ticket valuation; not equity or
            NAV.
        pending_commitments:
          $ref: '#/components/schemas/UnsignedMetric'
          description: >-
            Admission reservations H the venue holds for this maker that are not
            yet reflected on-chain; the sum of reservations.
        free_after_pending:
          $ref: '#/components/schemas/UnsignedMetric'
          description: >-
            max(F - H, 0): free collateral after unreflected commitments. Not
            private bot capacity.
        floor_bps:
          type:
            - integer
            - 'null'
          minimum: 0
          maximum: 10000
          description: >-
            Requirement floor K in basis points from the pinned release; null
            when the on-chain comparison mismatches, which makes requirement
            UNAVAILABLE.
        deployment_digest:
          type: string
          pattern: ^0x[0-9a-f]{64}$
          description: >-
            SHA-256 of the exact pinned artifact that names this deployment's
            chain and vault: the release artifact on chain 999, the
            environment's deployment manifest on 998. A client compares it with
            its own pinned artifact to bind the read to its deployment.
        actions:
          type: array
          items:
            $ref: '#/components/schemas/ActionAvailability'
          description: >-
            Decisions for MAKER_WITHDRAW and MAKER_QUOTE on the MAKER_VAULT
            route. Both are currently UNAVAILABLE with a blocker until their
            action policy is qualified.
        reservations:
          type: array
          items:
            $ref: '#/components/schemas/Reservation'
          description: Venue reservations on MAKER_VAULT that make up pending_commitments.
      description: >-
        Maker capital lanes and derived collateral, in atomic USDC (6 decimals,
        "1000000" = 1 USDC). Amounts are null when unavailable; context.status
        is their freshness.
    Error:
      additionalProperties: false
      properties:
        error:
          $ref: '#/components/schemas/ErrorDetail'
          description: The one error this request failed with.
      required:
        - error
      type: object
    NonZeroUInt64String:
      allOf:
        - $ref: '#/components/schemas/UInt64String'
      description: Never `0`.
    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.
    LowercaseNonZeroAddress:
      type: string
      pattern: ^0x[0-9a-f]{40}$
      description: Never `0x0000000000000000000000000000000000000000`.
    UnsignedMetric:
      oneOf:
        - $ref: '#/components/schemas/Amount'
        - type: 'null'
      description: >-
        Non-negative amount in atomic USDC (6 decimals, "1000000" = 1 USDC);
        null when it could not be established, never zero in its place.
    Metric:
      oneOf:
        - $ref: '#/components/schemas/SignedAmount'
        - type: 'null'
      description: >-
        Signed amount in atomic USDC (6 decimals, "1000000" = 1 USDC); null when
        it could not be established, never zero in its place.
    ActionAvailability:
      type: object
      additionalProperties: false
      required:
        - action
        - route
        - available
        - blockers
      properties:
        action:
          type: string
          enum:
            - MAKER_WITHDRAW
            - MAKER_QUOTE
          description: 'Action this decision covers: MAKER_WITHDRAW or MAKER_QUOTE.'
        route:
          type: string
          minLength: 1
          maxLength: 256
          description: Funding route the decision covers, e.g. MAKER_VAULT.
        available:
          $ref: '#/components/schemas/UnsignedMetric'
          description: >-
            Amount available for this action and route in atomic USDC (6
            decimals, "1000000" = 1 USDC); null with blockers when unavailable.
        blockers:
          type: array
          items:
            type: string
            minLength: 1
            maxLength: 256
          description: >-
            Machine-readable codes blocking the action, e.g.
            WITHDRAWAL_POLICY_UNQUALIFIED or RECONCILIATION_MISMATCH; at least
            one when available is null.
    Reservation:
      type: object
      additionalProperties: false
      required:
        - reservation_id
        - operation_ids
        - value
        - status
      properties:
        reservation_id:
          type: string
          minLength: 1
          maxLength: 256
          description: Stable reservation identifier.
        operation_ids:
          type: array
          items:
            type: string
            minLength: 1
            maxLength: 256
          description: Operations holding this reservation.
        value:
          $ref: '#/components/schemas/Amount'
          description: Reserved amount in atomic USDC (6 decimals, "1000000" = 1 USDC).
        status:
          type: string
          enum:
            - ACTIVE
            - UNKNOWN
          description: >-
            ACTIVE: held and not yet reflected on-chain; UNKNOWN: outcome
            unknown, still counted as held.
      description: A venue admission reservation on the maker vault.
    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
    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
    Timestamp:
      type: string
      format: date-time
    Amount:
      type: string
      pattern: ^(0|[1-9][0-9]{0,77})$
    SignedAmount:
      type: string
      pattern: ^(0|-?[1-9][0-9]{0,77})$
    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
  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.