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

# List Transit routes

> Returns the set of routes (source chain, destination LayerZero EID, offer/want assets) available to the caller.



## OpenAPI

````yaml /v1.0.0/api-reference/openapi.yml get /v1/transit/routes
openapi: 3.0.0
info:
  title: Paxos Labs API
  description: >
    Paxos Labs API V2.


    ---


    # API overview


    This document describes shared behavior and conventions for the Paxos Labs
    API (REST and GraphQL).


    <details>

    <summary><strong>Health check</strong></summary>


    A **health** endpoint is available for orchestrators (GitHub Actions, etc).


    | Item         |
    Details                                                                                
    |

    | ------------ |
    ---------------------------------------------------------------------------------------
    |

    | **Path**     | `GET /health` (no version prefix; no API key or rate limit
    applied).                    |

    | **Response** | `200` with Terminus-style JSON when healthy; `503` when
    unhealthy (e.g. database down). |


    **Docker / healthcheck:** If your healthcheck uses `curl` (e.g. `curl -f
    http://localhost:3000/health`), ensure your image has curl installed. Base
    images like `node:bullseye-slim` or `node:alpine` do not—install it (e.g.
    `RUN apk add --no-cache curl` for Alpine).


    </details>


    <details>

    <summary><strong>GraphQL endpoint</strong></summary>


    A **GraphQL** API is available in addition to REST. Use it to query address
    book and vault data with a single request and flexible field selection.


    | Item                         |
    Details                                                              |

    | ---------------------------- |
    -------------------------------------------------------------------- |

    | **Altair (interactive IDE)** |
    [https://api.paxoslabs.com/altair](https://api.paxoslabs.com/altair) |

    | **GraphQL endpoint**         | Same base URL with path `/graphql` for
    POST.                         |

    | **Authentication**           | Same as REST: send `x-api-key`
    header.                               |


    Open the Altair link in a browser to explore the schema and run queries.


    </details>


    <details>

    <summary><strong>Filter query parameter syntax</strong></summary>


    List endpoints that support a `filter` query parameter use a single string
    with **keys**, **operators**, and **combinators**. This keeps the number of
    query params small (AIP-160 style) while allowing flexible filtering.


    <details>

    <summary><strong>Operators</strong></summary>


    | Operator | Meaning    | Example            |

    | -------- | ---------- | ------------------ |

    | `=`      | Equals     | `chainId=1`        |

    | `!=`     | Not equals | `status!=REFUNDED` |


    </details>


    <details>

    <summary><strong>Combinators</strong></summary>


    | Combinator | Meaning                                      |
    Example                         |

    | ---------- | -------------------------------------------- |
    ------------------------------- |

    | `AND`      | All conditions must match (case-insensitive) | `chainId=1 AND
    name="Treasury"` |

    | `OR`       | Any condition may match (case-insensitive)   | `chainId=1 OR
    chainId=137`      |


    </details>


    <details>

    <summary><strong>Value formatting</strong></summary>


    | Type     | Use case                                  |
    Example                   |

    | -------- | ----------------------------------------- |
    ------------------------- |

    | Unquoted | Numbers, booleans, single-token values    | `chainId=1`,
    `valid=true` |

    | Quoted   | Strings with spaces or special characters | `name="Treasury
    Wallet"`  |

    | Escape   | Literal quote inside a quoted string      |
    `\"`                      |


    Allowed **keys** and **value types** (number, hex address, string, etc.) are
    defined per endpoint in the API docs and validated by the server.


    </details>


    <details>

    <summary><strong>Possible combinations (examples)</strong></summary>


    | Category              |
    Example                                             |

    | --------------------- |
    --------------------------------------------------- |

    | Single condition      |
    `chainId=1`                                         |

    | Single condition      |
    `status!=REFUNDED`                                  |

    | AND                   | `chainId=1 AND
    name="Treasury"`                     |

    | AND                   | `vaultAddress=0x123... AND
    chainId=1`               |

    | OR                    | `chainId=1 OR
    chainId=137`                          |

    | OR                    | `status=PENDING OR
    status=COMPLETE`                 |

    | Mixed AND and OR      | `chainId=1 AND (status=PENDING OR
    status=COMPLETE)` |

    | Equals and not-equals | `chainId=1 AND
    status!=REFUNDED`                    |

    | Equals and not-equals |
    `name!=""`                                          |


    Mixed AND and OR: AND has higher precedence; use parentheses for grouping.
    Without grouping, evaluation is left-to-right per implementation.


    </details>


    <details>

    <summary><strong>Implementation note</strong></summary>


    | Item      |
    Details                                                                   |

    | --------- |
    ------------------------------------------------------------------------- |

    | Location  |
    `src/common/utils/filter.util.ts`                                         |

    | Supported | `=`, `!=`, `AND`,
    `OR`                                                    |

    | Errors    | Invalid keys or value types return `400` with the standard
    error envelope |


    </details>


    </details>
  version: '2.0'
  contact: {}
servers:
  - url: https://api.paxoslabs.com/
    description: Production
security: []
tags: []
paths:
  /v1/transit/routes:
    get:
      tags:
        - Transit
        - Transit
      summary: List Transit routes
      description: >-
        Returns the set of routes (source chain, destination LayerZero EID,
        offer/want assets) available to the caller.
      operationId: getTransitRoutes
      parameters:
        - name: filter
          required: false
          in: query
          description: >-
            AIP-160 filter expression. Supported keys: sourceChainId,
            destinationChainId, offerAsset, wantAsset.
          schema:
            example: sourceChainId=1 AND destinationChainId=4663
            type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetTransitRoutesResponseDto'
        '400':
          description: Invalid filter expression
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponseDto'
      security:
        - api-key: []
components:
  schemas:
    GetTransitRoutesResponseDto:
      type: object
      properties:
        routes:
          example:
            - sourceChainId: 11155111
              destinationChainId: 46630
              destinationChainEID: 40451
              offerAsset: '0x6587b742ef7536c196e5081ce294d8e85f215d95'
              wantAsset: '0x6debc1f4add5d7d5096bdcae65581ac7bcb1f141'
              minOrderSize: '322160000'
              tokenMetadataMap:
                '0x6587b742ef7536c196e5081ce294d8e85f215d95':
                  chain_id: '11155111'
                  address: '0x6587b742ef7536c196e5081ce294d8e85f215d95'
                  name: MOCK USDC
                  symbol: MOCK_USDC
                  decimals: '6'
                  token_standard: ERC20
                  first_seen_at: '2026-06-05T23:28:45Z'
                  metadata_refreshed_at: '2026-06-05T19:28:33Z'
                '0x6debc1f4add5d7d5096bdcae65581ac7bcb1f141':
                  chain_id: '46630'
                  address: '0x6debc1f4add5d7d5096bdcae65581ac7bcb1f141'
                  name: MOCK USDG
                  symbol: MOCK_USDG
                  decimals: '6'
                  token_standard: ERC20
                  first_seen_at: '2026-06-05T23:28:08Z'
                  metadata_refreshed_at: '2026-06-05T19:27:54Z'
          type: array
          items:
            $ref: '#/components/schemas/TransitRouteDto'
      required:
        - routes
    ErrorResponseDto:
      type: object
      properties:
        error:
          description: Error object containing details
          allOf:
            - $ref: '#/components/schemas/ErrorObjectDto'
      required:
        - error
    TransitRouteDto:
      type: object
      properties:
        sourceChainId:
          type: number
          description: EVM chain ID of the source chain (where submitOrder is sent).
          example: 11155111
        destinationChainId:
          type: number
          description: EVM chain ID of the destination chain.
          example: 46630
        destinationChainEID:
          type: number
          description: LayerZero EID of the destination chain.
          example: 40451
        offerAsset:
          type: string
          description: Offer asset address on the source chain.
          example: '0x6587b742ef7536c196e5081ce294d8e85f215d95'
        wantAsset:
          type: string
          description: Want asset address on the destination chain.
          example: '0x6debc1f4add5d7d5096bdcae65581ac7bcb1f141'
        minOrderSize:
          type: string
          description: >-
            Current minimum order size in base units of the offer asset (decimal
            string). Varies with network costs and with the fee rate that
            applies to your API key, so it is refreshed continuously and
            revalidated when you request a quote — read it per request rather
            than storing it.
          example: '322160000'
        tokenMetadataMap:
          type: object
          description: >-
            Address metadata map keyed by lowercase token/address. Missing
            metadata is represented as null.
          additionalProperties: true
          example:
            '0x6587b742ef7536c196e5081ce294d8e85f215d95':
              chain_id: '11155111'
              address: '0x6587b742ef7536c196e5081ce294d8e85f215d95'
              name: MOCK USDC
              symbol: MOCK_USDC
              decimals: '6'
              token_standard: ERC20
              first_seen_at: '2026-06-05T23:28:45Z'
              metadata_refreshed_at: '2026-06-05T19:28:33Z'
            '0x6debc1f4add5d7d5096bdcae65581ac7bcb1f141':
              chain_id: '46630'
              address: '0x6debc1f4add5d7d5096bdcae65581ac7bcb1f141'
              name: MOCK USDG
              symbol: MOCK_USDG
              decimals: '6'
              token_standard: ERC20
              first_seen_at: '2026-06-05T23:28:08Z'
              metadata_refreshed_at: '2026-06-05T19:27:54Z'
      required:
        - sourceChainId
        - destinationChainId
        - destinationChainEID
        - offerAsset
        - wantAsset
        - minOrderSize
        - tokenMetadataMap
    ErrorObjectDto:
      type: object
      properties:
        code:
          type: number
          description: HTTP status code
          example: 400
        message:
          type: string
          description: Human-readable error message
          example: Invalid filter syntax.
        status:
          type: string
          description: Error status enum value
          enum:
            - UNKNOWN
            - INVALID_ARGUMENT
            - NOT_FOUND
            - PERMISSION_DENIED
            - UNAUTHENTICATED
            - RESOURCE_EXHAUSTED
            - INTERNAL
            - METHOD_NOT_ALLOWED
          example: INVALID_ARGUMENT
        details:
          description: Additional error details
          type: array
          items:
            $ref: '#/components/schemas/ErrorDetailDto'
      required:
        - code
        - message
        - status
    ErrorDetailDto:
      type: object
      properties:
        '@type':
          type: string
          description: Type URL identifying the error detail schema
          example: type.paxoslabs.dev/errors/BadRequest
        fieldViolations:
          description: Field-level violations for validation errors
          type: array
          items:
            $ref: '#/components/schemas/FieldViolationDto'
      required:
        - '@type'
    FieldViolationDto:
      type: object
      properties:
        field:
          type: string
          description: The field that caused the violation
          example: filter
        description:
          type: string
          description: Description of the violation
          example: vaultAddress 0x0x is an invalid hex address.
      required:
        - field
        - description
  securitySchemes:
    api-key:
      type: apiKey
      in: header
      name: x-api-key
      description: 'API key in format: pxl_<public_id>_<secret>'

````

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