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

> ## Agent Instructions
> If you are an AI assistant operating Infinite for a user, read the skill first: https://docs.infinite.dev/agent-skill.md (setup per host, tool reference, rules for moving money, journeys).
> When operating Infinite for a user, use the MCP server. Sign in at https://bot.api.infinite.dev/mcp (production, acts as the user) or send `Authorization: Bearer <key>` to https://bot.api.infinite.dev/mcp/sse. Prefer its tools over raw HTTP; use REST only for steps no tool covers, and check `get_endpoint_schema` before guessing a request shape.
> Net-new Infinite Connect (org_connect) is operator-assisted: do not grant end users shared org_connect Auth Kit membership or the shared platform org API key — those credentials are org-wide on /v1. BYO org keys onboard under that customer's org id. Operator sessions should show org_connect in get_organization_info.
> The key decides the tools. Every organization key (`sk_sandbox_…` / `sk_live_…`) gets docs, onboarding, `get_account_balance`, and request logs for your own organization. BYO organizations add payees an agent will pay with `create_payee` (payable once ACTIVE). Platform Connect sessions instead get bound-customer payment lookups (`get_quote`, `get_transfer`, `list_transfers`, `list_account_balances`), payee drafts (`create_payee_draft` / `get_payee_draft`; screening only, never payable), and transfer drafts that wait for Infinite approval (`create_transfer_draft` / `get_transfer_draft`; never POST /v1/transfers). Where offered, platform `create_transfer` files a real transfer that Infinite holds in review before funding; it cannot be submitted from DRAFT.
> An agent key (`sk_sandbox_agent_…` / `sk_live_agent_…`) moves money within that agent's limits: `create_transfer` → `submit_transfer` → `wait_for_transfer`.
> On sandbox organization-key sessions, `sandbox_approve_customer` (makes the capabilities you pass READY, and related ones may turn READY too; `request_capabilities` is not needed), `sandbox_fund_account`, and `sandbox_complete_transfer` stand in for verification, funding, and settlement, so a whole flow runs from MCP. BYO keys can pass `customerId` on each call without binding; platform sessions must bind a customer first (`create_business_customer` auto-binds, or send `X-Infinite-On-Behalf-Of`).
> When searching documentation without a key, use the docs MCP at https://docs.infinite.dev/mcp.
> Start in sandbox (https://sandbox.api.infinite.dev). Do not use production unless the user explicitly asks.
> Confirm amount, currency, and payee with the user before any payment is submitted. Pass the invoice number as `reference` on `create_transfer`; the summary says what the payee will see.
> REST amounts are integer minor units (`"4000"` = 40.00 USD). MCP payment tools take exact decimal strings (`"40.00"`). Never mix them.
> Agent denials return `403 { denial: { code, message, window, limit, used, remaining, attemptedAmount, currency }, hint }` with decimal amounts; per-transfer denials omit `used` and `remaining`. Report them to the user; do not work around them.

# Validate if a fixed route can be created

> Checks if a fixed route configuration is valid before creating it. Returns validation result with any errors.



## OpenAPI

````yaml post /v1/fixed-routes/validate
openapi: 3.0.0
info:
  title: Infinite API
  description: API for Infinite
  version: '1.0'
  contact: {}
servers:
  - url: https://sandbox.api.infinite.dev
    description: Sandbox
  - url: https://api.infinite.dev
    description: Production
security: []
tags:
  - name: Accounts
    description: Virtual and external account management
  - name: Customers
    description: Customer identity management
  - name: Documents
    description: Document upload and management
  - name: Fixed Routes
    description: Fixed route management
  - name: External Bank Accounts
    description: External bank account management
  - name: External Wallets
    description: External wallet management
  - name: Infinite Wallets
    description: Infinite Wallet management
  - name: Organizations
    description: Organization management
  - name: Quotes
    description: Quote creation and management
  - name: Transfers
    description: Money movement and transaction tracking
  - name: Verification
    description: Identity verification workflows
  - name: Terms of Service
    description: Terms of Service acceptance
  - name: Health
    description: System health and monitoring
  - name: Sandbox
    description: Sandbox utilities
paths:
  /v1/fixed-routes/validate:
    post:
      tags:
        - fixed-routes
      summary: Validate if a fixed route can be created
      description: >-
        Checks if a fixed route configuration is valid before creating it.
        Returns validation result with any errors.
      operationId: FixedRoutesController_validateRoute_v1
      parameters:
        - name: X-API-Key
          in: header
          description: API key
          required: false
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ValidateFixedRouteDto'
      responses:
        '200':
          description: Validation result
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidateFixedRouteResponseDto'
        '401':
          description: Unauthorized - Invalid or missing authentication credentials
      security:
        - bearer: []
      x-codeSamples:
        - lang: bash
          label: CLI
          source: >-
            # Requires: npm i -g @infinite_dev/cli && export
            INFINITE_API_KEY=sk_sandbox_...

            # Escape hatch for any endpoint: infinite api <METHOD> <path>

            infinite api POST /v1/fixed-routes/validate \
              --body '<request-json>'
        - lang: text
          label: MCP
          source: >-
            Validate if a fixed route can be created.


            # Infinite MCP is read-only for this endpoint — use a dedicated MCP
            tool when one exists, otherwise run the CLI tab.
components:
  schemas:
    ValidateFixedRouteDto:
      type: object
      properties:
        sweepTargetAccountId:
          type: string
          description: The destination account ID for the fixed route
          example: ewa_abc123
        fixedRouteType:
          type: string
          description: The type of fixed route to create
          enum:
            - FIAT_TO_CRYPTO
            - CRYPTO_TO_FIAT
            - CRYPTO_TO_CRYPTO
            - FIAT_TO_FIAT
            - FIAT_TO_CRYPTO_TO_FIAT
          example: FIAT_TO_CRYPTO
        sourceRail:
          type: string
          description: >-
            Source rail - payment rail for incoming deposits (e.g., ACH, WIRE,
            SEPA)
          example: ACH
        sourceRails:
          type: array
          description: >-
            Optional list of inbound rails for a USD bank pay-in deposit
            account. Omit to accept ACH and wire. SWIFT is included only when
            listed. When sourceRail is sent instead, it is treated as a
            one-element list. Crypto deposit routes still use a single
            sourceRail.
          example:
            - ACH
            - WIRE
          items:
            type: string
            enum:
              - ACH
              - ACH_SAME_DAY
              - WIRE
              - FED_NOW
              - RTP
              - EREBOR
              - EREBOR_RAIL
              - BALANCE
              - SWIFT
              - SEPA
              - SEPA_INSTANT
              - TIPS
              - FASTER_PAYMENTS
              - BACS
              - CHAPS
              - ELIXIR
              - NICS
              - EFT
              - INTERAC
              - NPP
              - BECS
              - UPI
              - IMPS
              - IMPS_WITH_FIRC
              - NEFT
              - RTGS
              - BI_FAST
              - ARTAJASA
              - PIX
              - TED
              - TEF
              - SPEI
              - COELSA
              - SINPE
              - CIPS
              - CFXPS
              - CHATS
              - ZENGIN
              - KFTC
              - FAST_SG
              - MEPS
              - DUITNOW
              - PROMPTPAY
              - INSTAPAY
              - PESONET
              - NAPAS
              - BEFTN
              - SLIPS
              - ZAHAV
              - GHIPSS
              - NIBSS
              - PESALINK
              - RTC_ZA
              - TZS_RTGS
              - EGP_ACH
              - JOD_ACH
              - NPSS
              - MADA
              - QPS
              - DOP_ACH
              - GTQ_ACH
              - HNL_ACH
              - PEN_ACH
              - JMD_ACH
              - USD_ACH_SV
              - USD_ACH_EC
              - CLP_TEF
              - PSE
              - COP_ACH
              - BOB_RTGS
              - PYG_ACH
              - CERTIS
              - DKK_TIPS
              - SENT
              - NKS
              - BANKGIROT
              - HKD_FPS
              - IBFT
              - TRY_FAST
              - ETHEREUM
              - BASE
              - POLYGON
              - SOLANA
              - TRON
              - BITCOIN
              - ARBITRUM
        depositMatching:
          type: string
          description: >-
            How incoming payments are matched to this deposit account. DEDICATED
            issues a unique account number and the sender does not include a
            payment reference. REFERENCE uses a shared account number and the
            sender must include sourceAccount.depositInstructions.reference on
            the payment (wire memo or ACH addenda). Omit to keep the default for
            the requested rails. USD ACH, wire, and SWIFT bank pay-ins only.
          enum:
            - DEDICATED
            - REFERENCE
        sourceCurrency:
          type: string
          description: Source currency for deposits (e.g., USD, EUR)
          example: USD
        destinationRail:
          type: string
          description: >-
            Destination rail - chain/network for outgoing sweep (e.g., BASE,
            ETHEREUM)
          example: BASE
        destinationCurrency:
          type: string
          description: Destination currency to convert to (e.g., USDC, USDT)
          example: USDC
        braleAutomationId:
          type: string
          description: >-
            Bound Brale wire automation ID for legacy onramp routes. Omit for
            new standby-pool routes (Solana SBC intermediary).
        documentIds:
          description: >-
            Standing supporting agreement document ID for a third-party SWIFT
            fixed route.
          maxItems: 1
          type: array
          items:
            type: string
      required:
        - sweepTargetAccountId
        - fixedRouteType
    ValidateFixedRouteResponseDto:
      type: object
      properties:
        valid:
          type: boolean
          description: Whether the fixed route configuration is valid
          example: true
        error:
          type: string
          description: Error message if validation failed
          example: FIAT_TO_CRYPTO route requires a wallet as sweep target
        minimumAmount:
          description: >-
            Minimum deposit amount for this route. Deposits below this floor are
            not swept.
          allOf:
            - $ref: '#/components/schemas/MoneyOutputDto'
      required:
        - valid
    MoneyOutputDto:
      type: object
      properties:
        currency:
          type: string
          description: Currency code
          example: USD
        exponent:
          type: number
          description: >-
            Number of decimal places for this currency (e.g., 2 for USD, 6 for
            USDC)
          example: 2
        value:
          type: string
          description: Amount in smallest unit as a string
          example: '12345'
        displayValue:
          type: string
          description: Human-readable decimal value
          example: '123.45'
      required:
        - currency
        - exponent
        - value
        - displayValue
  securitySchemes:
    bearer:
      scheme: bearer
      bearerFormat: API Key
      type: http
      description: API Key in Bearer format (e.g., Bearer sk_test_...)

````

## Related topics

- [Fixed Routes](/concepts/fixed-routes.md)
- [Update a fixed route](/api-reference/fixed-routes/update-a-fixed-route.md)
- [Get a fixed route by ID](/api-reference/fixed-routes/get-a-fixed-route-by-id.md)
- [List fixed routes for a customer](/api-reference/customers/list-fixed-routes-for-a-customer.md)
- [Create a virtual wallet fixed route](/api-reference/fixed-routes/create-a-virtual-wallet-fixed-route.md)
