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

# Get system health

> Returns a public, partner-safe summary of Houdini API and quote system availability. This endpoint does not require authentication or x402 payment.



## OpenAPI

````yaml https://api-partner.houdiniswap.com/v2/openapi.json get /status
openapi: 3.0.0
info:
  title: Houdini Partner API
  version: 2.1.2
  description: >-
    Quote and execute private, standard, and DEX swaps — one at a time or
    batched.
  license:
    name: ISC
  contact: {}
servers:
  - url: https://api-partner.houdiniswap.com/v2
security: []
tags:
  - name: Private and Standard Swaps
    description: >-
      CEX swaps in two modes, sharing the same endpoints — pick one with the
      `types` parameter.


      - `types=standard` — direct single-leg swap. Fastest, no privacy hop.

      - `types=private` — two legs through a privacy bridge, so deposit and
      payout are not linkable on-chain. Adds `anonymous`, `useXmr`,
      `rotatePayoutWallets` and the `inLeg*` / `outLeg*` filters.


      Flow: [Get tokens](/api-reference/private-and-standard-swaps/get-tokens)
      with `hasCex=true` → [Get
      quotes](/api-reference/private-and-standard-swaps/get-quotes) → [Create
      exchange](/api-reference/private-and-standard-swaps/create-exchange) →
      [track the
      order](/api-reference/private-and-standard-swaps/get-order-details).
      `markup` works in both modes.
  - name: Private Send
    description: >-
      Send a token to another wallet privately — same token in and out, with no
      on-chain link between the two addresses.


      - find eligible tokens with [Get
      tokens](/api-reference/private-send/get-tokens) and `hasSelfPrivate=true`

      - quote with Get private send quote, then create with Create private send
      order

      - you can also stay on the main endpoints with a private same-token
      `quoteId`


      See the [Private send](/docs/v2/private-send) guide.
  - name: Split
    description: >-
      Create and track a group of swaps sharing one `multiId`.


      - post the orders straight to Create split — there is no quote step and no
      `quoteId`

      - Get split quotes is optional, for showing rates first

      - each order gets its own deposit address; poll [Get batch
      status](/api-reference/split/get-batch-status) for every leg

      - CEX standard and private only — no DEX in a batch


      To fund the whole group in one transaction, see Bundler SOL or Bundler
      EVM. See the [Split flow](/developer-hub/swap-flows/split) for the full
      sequence.
  - name: Bundler SOL
    description: >-
      Fund a whole Split group with one Solana batch transfer.


      - one call — Get batch transaction returns the transaction to sign and
      broadcast

      - every order must send the same token

      - deposits per batch depend on `txVersion`: up to 20 SOL or 10 token
      deposits with `legacy` or `v0`, up to 60 SOL or 10 token deposits with
      `v1`

      - find batchable tokens with [Get tokens](/api-reference/split/get-tokens)
      and `hasBundler=true`

      - nothing to submit back afterwards — retry and recovery are EVM-only


      See the [Split flow](/developer-hub/swap-flows/split) for the full
      sequence.
  - name: Bundler EVM
    description: >-
      Fund a whole Split group with one ERC-4337 UserOperation, submitted
      through the bundler.


      - Ethereum, Base and BNB Smart Chain only; other EVM chains are rejected

      - up to 50 orders per group, funded in one transaction; every order must
      send the same source token

      - find batchable tokens with [Get tokens](/api-reference/split/get-tokens)
      and `hasBundler=true`

      - build the UserOp, then submit the signed result

      - if a bundle fails: retry within 30 minutes, or recover stuck assets


      See the [Split flow](/developer-hub/swap-flows/split) for the full
      sequence.
  - name: On-chain DEX or Bridge
    description: >-
      On-chain swaps signed and funded from the user's own wallet.


      Flow: [Get tokens](/api-reference/on-chain-dex-or-bridge/get-tokens) with
      `hasDex=true` → [Get
      quotes](/api-reference/on-chain-dex-or-bridge/get-quotes) with `types=dex`
      → [Get token approval
      data](/api-reference/on-chain-dex-or-bridge/get-token-approval-data) →
      send it and poll [Check token
      allowance](/api-reference/on-chain-dex-or-bridge/check-token-allowance) →
      [Get next chain
      signature](/api-reference/on-chain-dex-or-bridge/get-next-chain-signature)
      → [Create exchange](/api-reference/on-chain-dex-or-bridge/create-exchange)
      → [Confirm DEX
      transaction](/api-reference/on-chain-dex-or-bridge/confirm-dex-transaction)
      → [track the
      order](/api-reference/on-chain-dex-or-bridge/get-order-details).


      - `slippage` applies to DEX only

      - `markup` is not supported
  - name: Reference Data
    description: >-
      Optional lookups: supported chains, liquidity providers, and per-pair
      min/max swap amounts. Responses are cached and change rarely — safe to
      fetch once and reuse. Token ids come from `/tokens`, listed in each swap
      section above.
  - name: Partner Account
    description: >-
      Your orders, profile, earned commissions, withdrawals, volume analytics,
      and the rate-limit budget attached to your API key. Every endpoint is
      scoped to the partner that owns the key making the request.
  - name: System
    description: >-
      Service health. [Get system
      health](/api-reference/system/get-system-health) is unauthenticated and
      exempt from x402 payment — use it for uptime monitoring.
paths:
  /status:
    get:
      tags:
        - System
      summary: Get system health
      description: >-
        Returns a public, partner-safe summary of Houdini API and quote system
        availability. This endpoint does not require authentication or x402
        payment.
      operationId: GetHealth
      parameters: []
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PartnerHealthResponse'
              examples:
                Example 1:
                  value:
                    status: ok
                    api:
                      status: ok
                    quotes:
                      dex: ok
                      cex: ok
                    timestamp: '2026-03-23T16:00:00.000Z'
        '429':
          description: Rate Limit Exceeded
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security: []
components:
  schemas:
    PartnerHealthResponse:
      properties:
        status:
          $ref: '#/components/schemas/PartnerHealthStatus'
          description: >-
            Overall status. `down` when the API is down, or when both quote
            engines are down. `degraded` when the API is degraded, either quote
            engine is not `ok`, or the snapshot is more than 15 minutes old.
        api:
          properties:
            status:
              $ref: '#/components/schemas/PartnerHealthStatus'
          required:
            - status
          type: object
          description: Availability of the API itself.
        quotes:
          properties:
            cex:
              $ref: '#/components/schemas/PartnerHealthStatus'
            dex:
              $ref: '#/components/schemas/PartnerHealthStatus'
          required:
            - cex
            - dex
          type: object
          description: >-
            Availability of quoting, per route type. `ok` when at least 80% of
            that engine's providers are healthy, `down` when none are,
            `degraded` in between.
        timestamp:
          type: string
          format: date-time
          nullable: true
          description: >-
            When this snapshot was taken. Null when no health data is available,
            in which case everything reports `down`.
      required:
        - status
        - api
        - quotes
        - timestamp
      type: object
      additionalProperties: false
    ErrorResponse:
      properties:
        message:
          type: string
        code:
          type: string
          description: >-
            Machine-readable reason for the failure. Branch on this, not on
            `message` — messages are free to change.


            The value depends on the HTTP status. The common ones:


            - `400` — `BAD_REQUEST`

            - `401` — `INVALID_API_CREDENTIALS`, `PARTNER_ID_NOT_SUPPORTED`

            - `403` — `ACCESS_DENIED`, `FIXED_RATE_NOT_ALLOWED`

            - `404` — `NOT_FOUND`, `TOKEN_NOT_FOUND`, `TOKEN_DISABLED`

            - `409` — `ALREADY_SUBMITTED`, `STATIC_DEPOSIT_IN_USE`

            - `422` — `VALIDATION_ERROR`, `AMOUNT_TOO_LOW`, `INVALID_SWAP`,
            `FIXED_RATE_QUOTE_EXPIRED`, and most other request problems

            - `429` — `RATE_LIMIT_EXCEEDED`

            - `5xx` — `INTERNAL_SERVER_ERROR`, `PROVIDER_EXCHANGE_FAILED`,
            `SERVICE_UNAVAILABLE`


            New codes are added over time, so treat this as an open set: match
            the ones you handle and fall back to the HTTP status for the rest.
        requestId:
          type: string
          description: >-
            Unique id for this request. Quote it when contacting support — it is
            how we find the failure in our logs.
      required:
        - message
        - code
      type: object
      additionalProperties: false
    PartnerHealthStatus:
      type: string
      enum:
        - ok
        - degraded
        - down
      description: >-
        `ok` — operating normally. `degraded` — partially available, swaps may
        fail or be slow. `down` — not usable.

````

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