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

# Cross-chain corridors between the workspace’s own Accounts

> Returns the bridged movements in a period where both ends are addresses this workspace owns — money it moved between its own Accounts across networks, rather than to anyone else. These are facts, not inferences: a bridge record links the two transactions by construction, so a corridor is reported only when both of its ends resolve to owned addresses. Ownership is tested against every address the workspace owns, including the fund-holding addresses behind multisig and governance connections, not only the addresses saved on Accounts. By default only movements that arrived are returned; use the `status` parameter to also see ones still in transit or that failed. Supported bridge protocols: across, allbridge, axelar, cctp, cctpv2, circle-gateway, debridge, hyperlane, hyperliquid-bridge2, ibc, ibcv2, layerzero, mayan, near-intents, union, wormhole. A movement through any other bridge is not detected, and is absent rather than reported as external. The workspace is taken from the authenticated key, never from a parameter. Read-only: nothing is stored, and re-running an identical query returns an identical set.



## OpenAPI

````yaml /api-reference/platform-api.json get /v2/corridors
openapi: 3.0.0
info:
  title: Range Platform API
  description: >-
    The Range Platform API for workspace management, counterparties, and
    operational tooling.
  version: 1.7.29
  contact: {}
servers:
  - url: https://api.range.org
    description: Range API Server
security:
  - Authorization: []
  - Authorization: []
tags:
  - name: Address Information
    description: Get information about a crypto address.
  - name: Transfer Enrichments
    description: Attach workspace-scoped notes and categories to transfers.
  - name: Counterparties
    description: Manage external entities, their addresses, bank accounts, and documents.
  - name: Parties
    description: >-
      The workspace entity register: the firm itself, its clients, and its
      counterparties.
paths:
  /v2/corridors:
    get:
      tags:
        - Corridors
      summary: Cross-chain corridors between the workspace’s own Accounts
      description: >-
        Returns the bridged movements in a period where both ends are addresses
        this workspace owns — money it moved between its own Accounts across
        networks, rather than to anyone else. These are facts, not inferences: a
        bridge record links the two transactions by construction, so a corridor
        is reported only when both of its ends resolve to owned addresses.
        Ownership is tested against every address the workspace owns, including
        the fund-holding addresses behind multisig and governance connections,
        not only the addresses saved on Accounts. By default only movements that
        arrived are returned; use the `status` parameter to also see ones still
        in transit or that failed. Supported bridge protocols: across,
        allbridge, axelar, cctp, cctpv2, circle-gateway, debridge, hyperlane,
        hyperliquid-bridge2, ibc, ibcv2, layerzero, mayan, near-intents, union,
        wormhole. A movement through any other bridge is not detected, and is
        absent rather than reported as external. The workspace is taken from the
        authenticated key, never from a parameter. Read-only: nothing is stored,
        and re-running an identical query returns an identical set.
      operationId: listCorridors
      parameters:
        - name: start_time
          required: true
          in: query
          description: Start of the period to search (ISO 8601), inclusive.
          schema:
            format: date-time
            example: '2026-09-01T00:00:00Z'
            type: string
        - name: end_time
          required: true
          in: query
          description: End of the period to search (ISO 8601), inclusive.
          schema:
            format: date-time
            example: '2026-10-01T00:00:00Z'
            type: string
        - name: size
          required: false
          in: query
          description: Corridors per page.
          schema:
            minimum: 1
            maximum: 100
            default: 50
            example: 50
            type: number
        - name: cursor
          required: false
          in: query
          description: Opaque cursor from a previous page’s meta. Omit for the first page.
          schema:
            type: string
        - name: account_ids
          required: false
          in: query
          description: >-
            Comma-separated account ids (UUIDs) to narrow to. Omit to cover
            every Account in the workspace. **Returns corridors *touching* these
            Accounts, not corridors *between* them** — narrowing to one wallet
            still returns its corridors when the far end is an Account you did
            not list, and that far end is still named. Ids outside your
            workspace, or failing any filter below, are dropped. At most 100
            ids.
          schema:
            minItems: 1
            example: >-
              a1b2c3d4-e5f6-7890-abcd-ef1234567890,b2c3d4e5-f6a7-8901-bcde-f12345678901
            type: array
            items:
              type: string
              format: uuid
        - name: status
          required: false
          in: query
          description: >-
            Comma-separated statuses to return. Defaults to `settled` —
            movements that arrived. Widen it to also see movements that have not
            arrived yet (`pending`) or never will (`failed`). Every status
            describes a movement between two addresses you own; only arrival
            differs. **If you widen this, read each item’s `status`.** `pending`
            covers only movements whose destination is already known to be
            yours, so it is not a complete list of everything in transit.
          schema:
            minItems: 1
            example: settled,pending
            type: array
            items:
              type: string
              enum:
                - settled
                - pending
                - failed
        - name: group_id
          required: false
          in: query
          description: >-
            Narrow to Accounts in this group (account_groups.id). A non-UUID
            value is rejected with a 400 naming the field.
          schema:
            type: string
            format: uuid
            example: a1b2c3d4-e5f6-7890-abcd-ef1234567890
        - name: provider
          required: false
          in: query
          description: Narrow to Accounts held under a connection of this provider.
          schema:
            example: utila
            type: string
            enum:
              - utila
              - kraken
              - binance
              - okx
              - bybit
              - bitget
              - gate
              - kucoin
              - plaid
              - squads
              - altitude
              - coinbase
              - realms
              - wise
              - safe
              - hyperliquid
              - cubist
              - privy
              - dfns
              - anchorage
              - revolut_business
              - turnkey
              - fordefi
              - coins_ph
              - fireblocks
              - pave_bank
              - copper
              - custom
        - name: network
          required: false
          in: query
          description: >-
            Narrow to Accounts on this network (e.g. ethereum, solana, stellar).
            This filters which Accounts are in scope, not which networks a
            corridor may cross.
          schema:
            type: string
            example: ethereum
        - name: account_type
          required: false
          in: query
          description: Narrow to Accounts of this account type.
          schema:
            example: exchange
            type: string
            enum:
              - eoa
              - multisig
              - contract
              - custodian
              - exchange
              - bank
              - defi
        - name: role
          required: false
          in: query
          description: Narrow to Accounts tagged with this free-text role.
          schema:
            example: treasury
            type: string
        - name: connection_id
          required: false
          in: query
          description: >-
            Narrow to Accounts under this connection id. A non-UUID value is
            rejected with a 400 naming the field.
          schema:
            type: string
            format: uuid
            example: a1b2c3d4-e5f6-7890-abcd-ef1234567890
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListCorridorsResponseDto'
        '400':
          description: >-
            Invalid query (e.g. a start_time or end_time that is not a valid
            date).
components:
  schemas:
    ListCorridorsResponseDto:
      type: object
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/CorridorDto'
        meta:
          $ref: '#/components/schemas/CorridorMetaDto'
      required:
        - items
        - meta
    CorridorDto:
      type: object
      properties:
        id:
          type: string
          example: YXJiMS8weGNhODJhNzk2
          description: >-
            Identity of the corridor — the bridge record linking its two legs.
            The same id `GET /v2/transfers` publishes for that record. One
            record carries both legs, so a corridor reached from either side
            shares it.
        status:
          enum:
            - settled
            - pending
            - failed
          type: string
          example: settled
          description: >-
            Whether the movement arrived. `settled` — it did. `pending` — not
            yet, and it may still fail. `failed` — it did not and will not. Only
            `settled` is returned unless the `status` query parameter asks for
            more, so check this field before treating an item as completed.
        protocol:
          type: string
          example: cctpv2
          description: Bridge protocol that carried the movement.
        time:
          type: string
          example: '2026-09-23T09:43:35.000Z'
          description: When the movement was sent.
        source:
          $ref: '#/components/schemas/CorridorLegDto'
        destination:
          $ref: '#/components/schemas/CorridorLegDto'
        asset:
          type: string
          example: USDC
          description: Asset moved.
        amount:
          type: string
          example: '38.24'
          description: >-
            Amount that left the source Account. The amount that arrived may be
            lower by the bridge fee; this field is always the sent figure.
        usd:
          type: string
          nullable: true
          example: '38.24'
          description: USD valuation of the sent amount, when the record carries one.
        detected_fee:
          oneOf:
            - $ref: '#/components/schemas/CorridorDetectedFeeDto'
            - $ref: '#/components/schemas/CorridorNotDetectedFeeDto'
          description: >-
            The bridge fee, when one could be read. Branch on `status` before
            reading an amount: absence is not zero.
        match_method:
          type: string
          example: bridge_verified
          description: >-
            How the two legs were linked. Always bridge_verified here: the
            bridge record links them by construction, so nothing was inferred.
        match_confidence:
          type: number
          example: 1
          description: >-
            Confidence the two legs are one movement between two owned Accounts.
            Always 1 for a direct-bridge corridor — both the link and the
            ownership are facts rather than inferences.
      required:
        - id
        - status
        - protocol
        - time
        - source
        - destination
        - asset
        - amount
        - usd
        - detected_fee
        - match_method
        - match_confidence
    CorridorMetaDto:
      type: object
      properties:
        next_cursor:
          type: string
          nullable: true
          example: eyJpZCI6IjkxeFFlV3Z...
          description: >-
            Opaque cursor for the next page, or null when this is the last one.
            Pass it back unchanged. Changing any other parameter alongside it
            restarts from the first page.
        page_number:
          type: number
          description: Current page number.
          example: 1
      required:
        - next_cursor
        - page_number
    CorridorLegDto:
      type: object
      properties:
        network:
          type: string
          example: eth
          description: Range network id of this leg.
        address:
          type: string
          example: '0x1f9840a85d5af5bf1d1762f925bdaddc4201f984'
          description: The workspace-owned address on this side of the movement.
        account_id:
          type: string
          nullable: true
          example: a1b2c3d4-e5f6-7890-abcd-ef1234567890
          description: >-
            The Account this address belongs to, when exactly one can be
            determined. `null` when the address is yours but cannot be tied to a
            single Account — for example one held through a multisig, or claimed
            by two Accounts. **A null never means the address is not yours.**
      required:
        - network
        - address
        - account_id
    CorridorDetectedFeeDto:
      type: object
      properties:
        status:
          type: string
          enum:
            - detected
          example: detected
        amount:
          type: string
          example: '0.12'
          description: >-
            What the bridge took, in the asset moved — the sent amount minus the
            amount that arrived. Reported, never applied: the corridor states it
            and stops, and whether to net it is the reader’s decision.
        usd:
          type: string
          example: '0.12'
          description: >-
            The same fee in USD, present only when the bridge record carries a
            destination-side USD figure. Its absence does not make the fee
            undetected — the token amount is the load-bearing one.
      required:
        - status
        - amount
    CorridorNotDetectedFeeDto:
      type: object
      properties:
        status:
          type: string
          enum:
            - not_detected
          example: not_detected
          description: >-
            The fee could not be read — no arrival amount was recorded, the
            figure was unreadable, or the bridge delivered a different asset
            than it took. **This never means the fee was zero**: a fee measured
            as zero is returned as `detected` with an amount of `0`.
      required:
        - status
  securitySchemes:
    Authorization:
      type: apiKey
      in: header
      name: X-API-KEY
      description: Authorization method required to allow user to access the api endpoints.

````

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