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

# Tradable Pairs

> Every directional pair the workspace's solvers and LPs quote right now, each entry naming the exact input and output assets plus a corridor slug. Coverage follows LP inventory and listings - refresh at least daily instead of pinning the list.

## OpenAPI

```yaml /specs/rfq-api.json get /pairs theme={null}
openapi: 3.1.0
info:
  title: TetraFi RFQ API
  version: '1'
  description: >-
    Firm, escrow-backed quotes from competing solvers and LPs. Every quote is a signed
    commitment priced from the counterparty's own inventory - executable exactly as
    returned, with no re-pricing and no last look - and every order settles through a
    delivery-or-refund escrow: the output is delivered or the input comes back, never
    limbo.
servers:
  - url: https://api.tetrafi.io/api/v1/rfq
    description: >-
      RFQ namespace base URL. The chain is no longer part of the URL - every asset in an
      intent names its network via chainId. The same host serves the sandbox: authenticate
      with a tfk_test_ key to quote against test corridors, tfk_live_ for production.
security:
  - apiKeyAuth: []
paths:
  /pairs:
    get:
      summary: Tradable Pairs
      operationId: getPairs
      description: >-
        Lists every directional pair at least one solver/LP in your workspace currently
        quotes, each entry naming the exact input and output asset plus its corridor slug.
        Coverage moves with LP inventory and new listings - refresh at least daily rather
        than pinning the list. The production roster spans ethereum (1), optimism (10),
        base (8453), and arc (5042); a tfk_test_ key additionally exposes sandbox networks
        such as arc-testnet (5042002) and solana-devnet (1399811151).
      servers:
        - url: https://api.tetrafi.io/api/v1
      parameters:
        - name: activeOnly
          in: query
          required: false
          schema:
            type: boolean
            title: Active Only
            description: >-
              Keep only pairs with at least one counterparty pricing right now (status
              active).
            default: true
          description: >-
            Keep only pairs with at least one counterparty pricing right now (status
            active).
        - name: chainId
          in: query
          required: false
          schema:
            anyOf:
              - type: integer
              - type: 'null'
            title: Chain Id
            description: >-
              Restrict to pairs whose input or output sits on this chain, e.g. 10 or
              8453.
          description: >-
            Restrict to pairs whose input or output sits on this chain, e.g. 10 or 8453.
        - name: corridor
          in: query
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            title: Corridor
            description: Restrict to one directional corridor slug, e.g. optimism-base.
          description: Restrict to one directional corridor slug, e.g. optimism-base.
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PairsResponse'
              example:
                pairs:
                  - input:
                      chainId: 10
                      address: '0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85'
                      symbol: USDC
                      decimals: 6
                    output:
                      chainId: 8453
                      address: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913'
                      symbol: USDC
                      decimals: 6
                    corridor: optimism-base
                  - input:
                      chainId: 8453
                      address: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913'
                      symbol: USDC
                      decimals: 6
                    output:
                      chainId: 10
                      address: '0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85'
                      symbol: USDC
                      decimals: 6
                    corridor: base-optimism
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
components:
  schemas:
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    PairsResponse:
      properties:
        pairs:
          items:
            $ref: '#/components/schemas/Pair'
          type: array
          title: Pairs
          description: >-
            Every directional pair at least one workspace-eligible solver/LP currently
            quotes.
        asOf:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: As Of
          description: >-
            When this roster snapshot was computed. Coverage moves with LP inventory and
            listings - refresh at least daily rather than pinning it.
        totalPairs:
          anyOf:
            - type: integer
            - type: 'null'
          title: Total Pairs
          description: Number of pair entries returned.
      type: object
      required:
        - pairs
      title: PairsResponse
    Pair:
      properties:
        input:
          $ref: '#/components/schemas/PairAsset'
          description: >-
            Asset the taker supplies - the exact chainId and contract address to reference
            in intent.inputs.
        output:
          $ref: '#/components/schemas/PairAsset'
          description: Asset delivered to the receiver - reference it in intent.outputs.
        corridor:
          type: string
          title: Corridor
          description: >-
            Directional route slug, e.g. optimism-base - the cross-chain analog of a
            trading-pair name. The reverse direction is listed as its own pair.
      type: object
      required:
        - input
        - output
        - corridor
      title: Pair
      description: >-
        One directional tradable pair. input and output name exact assets; use their
        chainId + address verbatim in quote intents.
    PairAsset:
      properties:
        chainId:
          type: integer
          title: Chainid
          description: Network the asset lives on, e.g. 10 for Optimism or 8453 for Base.
        address:
          type: string
          title: Address
          description: >-
            Token contract address - copy it verbatim into your intent; never substitute a
            wrapped or bridged variant.
        symbol:
          type: string
          title: Symbol
          description: Ticker symbol, for display only - never use it as an identifier.
        decimals:
          type: integer
          title: Decimals
          description: >-
            Base-unit scale: human amount times 10^decimals, so 1 USDC (6 decimals) is
            1000000.
        name:
          anyOf:
            - type: string
            - type: 'null'
          title: Name
          description: Full display name of the token.
      type: object
      required:
        - chainId
        - address
        - symbol
        - decimals
      title: PairAsset
      description: >-
        Exact asset on one side of a tradable pair. The chainId + address pair is the
        identity to reference in quote intents.
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
              - type: string
              - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
      type: object
      required:
        - loc
        - msg
        - type
      title: ValidationError
  securitySchemes:
    apiKeyAuth:
      type: apiKey
      in: header
      name: X-API-Key
      description: Service-account API key (tfk_test_/tfk_live_).
```


## OpenAPI

````yaml GET /pairs
openapi: 3.1.0
info:
  title: TetraFi RFQ API
  version: '1'
  description: >-
    Firm, escrow-backed quotes from competing solvers and LPs. Every quote is a
    signed commitment priced from the counterparty's own inventory - executable
    exactly as returned, with no re-pricing and no last look - and every order
    settles through a delivery-or-refund escrow: the output is delivered or the
    input comes back, never limbo.
servers:
  - url: https://api.tetrafi.io/api/v1/rfq
    description: >-
      RFQ namespace base URL. The chain is no longer part of the URL - every
      asset in an intent names its network via chainId. The same host serves the
      sandbox: authenticate with a tfk_test_ key to quote against test
      corridors, tfk_live_ for production.
security:
  - apiKeyAuth: []
paths:
  /pairs:
    get:
      summary: Tradable Pairs
      description: >-
        Lists every directional pair at least one solver/LP in your workspace
        currently quotes, each entry naming the exact input and output asset
        plus its corridor slug. Coverage moves with LP inventory and new
        listings - refresh at least daily rather than pinning the list. The
        production roster spans ethereum (1), optimism (10), base (8453), and
        arc (5042); a tfk_test_ key additionally exposes sandbox networks such
        as arc-testnet (5042002) and solana-devnet (1399811151).
      operationId: getPairs
      parameters:
        - name: activeOnly
          in: query
          required: false
          schema:
            type: boolean
            title: Active Only
            description: >-
              Keep only pairs with at least one counterparty pricing right now
              (status active).
            default: true
          description: >-
            Keep only pairs with at least one counterparty pricing right now
            (status active).
        - name: chainId
          in: query
          required: false
          schema:
            anyOf:
              - type: integer
              - type: 'null'
            title: Chain Id
            description: >-
              Restrict to pairs whose input or output sits on this chain, e.g.
              10 or 8453.
          description: >-
            Restrict to pairs whose input or output sits on this chain, e.g. 10
            or 8453.
        - name: corridor
          in: query
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            title: Corridor
            description: Restrict to one directional corridor slug, e.g. optimism-base.
          description: Restrict to one directional corridor slug, e.g. optimism-base.
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PairsResponse'
              example:
                pairs:
                  - input:
                      chainId: 10
                      address: '0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85'
                      symbol: USDC
                      decimals: 6
                    output:
                      chainId: 8453
                      address: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913'
                      symbol: USDC
                      decimals: 6
                    corridor: optimism-base
                  - input:
                      chainId: 8453
                      address: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913'
                      symbol: USDC
                      decimals: 6
                    output:
                      chainId: 10
                      address: '0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85'
                      symbol: USDC
                      decimals: 6
                    corridor: base-optimism
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      servers:
        - url: https://api.tetrafi.io/api/v1
components:
  schemas:
    PairsResponse:
      properties:
        pairs:
          items:
            $ref: '#/components/schemas/Pair'
          type: array
          title: Pairs
          description: >-
            Every directional pair at least one workspace-eligible solver/LP
            currently quotes.
        asOf:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: As Of
          description: >-
            When this roster snapshot was computed. Coverage moves with LP
            inventory and listings - refresh at least daily rather than pinning
            it.
        totalPairs:
          anyOf:
            - type: integer
            - type: 'null'
          title: Total Pairs
          description: Number of pair entries returned.
      type: object
      required:
        - pairs
      title: PairsResponse
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    Pair:
      properties:
        input:
          $ref: '#/components/schemas/PairAsset'
          description: >-
            Asset the taker supplies - the exact chainId and contract address to
            reference in intent.inputs.
        output:
          $ref: '#/components/schemas/PairAsset'
          description: Asset delivered to the receiver - reference it in intent.outputs.
        corridor:
          type: string
          title: Corridor
          description: >-
            Directional route slug, e.g. optimism-base - the cross-chain analog
            of a trading-pair name. The reverse direction is listed as its own
            pair.
      type: object
      required:
        - input
        - output
        - corridor
      title: Pair
      description: >-
        One directional tradable pair. input and output name exact assets; use
        their chainId + address verbatim in quote intents.
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
              - type: string
              - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
      type: object
      required:
        - loc
        - msg
        - type
      title: ValidationError
    PairAsset:
      properties:
        chainId:
          type: integer
          title: Chainid
          description: Network the asset lives on, e.g. 10 for Optimism or 8453 for Base.
        address:
          type: string
          title: Address
          description: >-
            Token contract address - copy it verbatim into your intent; never
            substitute a wrapped or bridged variant.
        symbol:
          type: string
          title: Symbol
          description: Ticker symbol, for display only - never use it as an identifier.
        decimals:
          type: integer
          title: Decimals
          description: >-
            Base-unit scale: human amount times 10^decimals, so 1 USDC (6
            decimals) is 1000000.
        name:
          anyOf:
            - type: string
            - type: 'null'
          title: Name
          description: Full display name of the token.
      type: object
      required:
        - chainId
        - address
        - symbol
        - decimals
      title: PairAsset
      description: >-
        Exact asset on one side of a tradable pair. The chainId + address pair
        is the identity to reference in quote intents.
  securitySchemes:
    apiKeyAuth:
      type: apiKey
      in: header
      name: X-API-Key
      description: Service-account API key (tfk_test_/tfk_live_).

````