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

# List eligible corridors for a user

> List the corridors a specific user is eligible to transact on, based on
the profile's provider capabilities and the user's provider onboarding
status on both the fiat and crypto legs. Returns corridor IDs by default;
pass `expand=true` to get full corridor objects.




## OpenAPI

````yaml https://production.hifi.com/api/v3/openapi.json get /v3/users/{userId}/corridors/eligibility
openapi: 3.0.0
info:
  title: Hifi API
  version: 3.0.0
  description: API documentation for HIFI
servers:
  - url: https://production.hifi.com
    description: Production server
  - url: https://sandbox.hifi.com
    description: Sandbox server
security:
  - bearerAuth: []
tags:
  - name: Common
    description: Common endpoints
  - name: User
    description: User endpoints
  - name: Counter Party
    description: Counter party endpoints
  - name: Crypto Transfer
    description: Crypto transfer and batch transfer endpoints
  - name: Wallet
    description: Wallet and wallet offer endpoints
  - name: External Account
    description: External bank account endpoints (under a counter party)
  - name: External Wallet
    description: External wallet endpoints (under a counter party)
  - name: External Card
    description: External card endpoints (under a counter party)
  - name: Token Swap
    description: Token swap endpoints
  - name: Bridge
    description: Bridge endpoints
  - name: Virtual Account
    description: Virtual account endpoints
  - name: Compliance
    description: Compliance and compliance link endpoints
  - name: Webhook Endpoint
    description: Webhook endpoint endpoints
  - name: File
    description: File upload endpoints
  - name: Onramp
    description: Onramp (fiat to crypto) endpoints
  - name: Offramp
    description: Offramp (crypto to fiat) endpoints
  - name: Orchestration Address
    description: Orchestration (liquidation) address endpoints
  - name: KYC Link
    description: Hosted and custom KYC/KYB link endpoints
  - name: Transfer Approval
    description: Transfer approval endpoints
  - name: Corridor
    description: Supported fiat/crypto transfer corridor endpoints
  - name: Migration
    description: v2-to-v3 ID mapping endpoints
paths:
  /v3/users/{userId}/corridors/eligibility:
    get:
      tags:
        - Corridor
      summary: List eligible corridors for a user
      description: >
        List the corridors a specific user is eligible to transact on, based on

        the profile's provider capabilities and the user's provider onboarding

        status on both the fiat and crypto legs. Returns corridor IDs by
        default;

        pass `expand=true` to get full corridor objects.
      operationId: v3ListEligibleCorridors
      parameters:
        - $ref: '#/components/parameters/UserIdPathParameter'
        - $ref: '#/components/parameters/LimitParameter'
        - $ref: '#/components/parameters/CorridorFiatCurrencyQueryParameter'
        - $ref: '#/components/parameters/CorridorFiatCountryQueryParameter'
        - $ref: '#/components/parameters/CorridorTransferTypeQueryParameter'
        - $ref: '#/components/parameters/CorridorDirectionQueryParameter'
        - $ref: '#/components/parameters/CorridorEligibilityExpandQueryParameter'
      responses:
        '200':
          $ref: '#/components/responses/GetUserCorridorEligibilityResponse'
        '400':
          $ref: '#/components/responses/BadRequestResponse'
        '401':
          $ref: '#/components/responses/UnauthorizedResponse'
        '404':
          $ref: '#/components/responses/NotFoundResponse'
        '500':
          $ref: '#/components/responses/InternalServerErrorResponse'
components:
  parameters:
    UserIdPathParameter:
      name: userId
      in: path
      schema:
        type: string
        pattern: ^user_[A-Za-z0-9]+$
      description: ID of the user.
      required: true
    LimitParameter:
      name: limit
      in: query
      schema:
        type: integer
        minimum: 1
        maximum: 100
      description: default to 10, maximum to 100
      required: false
    CorridorFiatCurrencyQueryParameter:
      name: fiatCurrency
      in: query
      required: false
      schema:
        type: string
      description: Filter corridors by fiat currency, e.g. `USD`.
      example: USD
    CorridorFiatCountryQueryParameter:
      name: fiatCountry
      in: query
      required: false
      schema:
        type: string
      description: Filter corridors by fiat country (ISO 3166-1 alpha-3).
      example: USA
    CorridorTransferTypeQueryParameter:
      name: transferType
      in: query
      required: false
      schema:
        type: string
        enum:
          - ACH
          - WIRE
          - SWIFT
          - RTP
          - PIX
          - SPEI
          - CHATS
          - FPS
          - CIPS
          - SEPA
          - INSTAPAY
          - PESONET
          - NEQUI
          - BANK
      description: Filter corridors by transfer type.
    CorridorDirectionQueryParameter:
      name: direction
      in: query
      required: false
      schema:
        type: string
        enum:
          - ONRAMP
          - OFFRAMP
      description: Filter corridors by direction.
    CorridorEligibilityExpandQueryParameter:
      name: expand
      in: query
      required: false
      schema:
        type: boolean
        default: false
      description: >-
        When `true`, returns the full corridor object for each eligible corridor
        instead of just its ID.
  responses:
    GetUserCorridorEligibilityResponse:
      description: >-
        A cursor-paginated list of corridor IDs (or full corridor objects, if
        `expand=true`) a user is eligible for.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/CorridorEligibilityListObject'
          example:
            data:
              - crd_9aB0xY4mNpXwZ7bV1aLdt
            pagination:
              hasMore: false
              startCursor: crd_9aB0xY4mNpXwZ7bV1aLdt
              endCursor: crd_9aB0xY4mNpXwZ7bV1aLdt
    BadRequestResponse:
      description: Bad Request — the request was malformed or failed validation.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ApiError'
          example:
            type: VALIDATION_ERROR
            message: One or more fields are invalid or missing.
            fields:
              - code: invalid_value
                message: Must be a valid email address
                field: email
    UnauthorizedResponse:
      description: Unauthorized
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Unauthorized'
    NotFoundResponse:
      description: Not Found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/NotFound'
    InternalServerErrorResponse:
      description: Internal Server Error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/InternalServerError'
  schemas:
    CorridorEligibilityListObject:
      type: object
      description: >-
        Cursor-paginated list of corridors a user is eligible for. Each entry is
        a corridor ID unless `expand=true` was passed, in which case each entry
        is the full corridor object.
      properties:
        data:
          type: array
          items:
            oneOf:
              - type: string
                example: crd_9aB0xY4mNpXwZ7bV1aLdt
              - $ref: '#/components/schemas/CorridorObject'
        pagination:
          $ref: '#/components/schemas/Pagination'
    ApiError:
      type: object
      description: >-
        Standard v3 error shape, returned by validation failures and
        business-logic errors alike.
      properties:
        type:
          type: string
          description: >-
            Machine-readable error type, e.g. VALIDATION_ERROR,
            ACTION_NOT_ALLOWED, RESOURCE_CONFLICT.
          example: VALIDATION_ERROR
        message:
          type: string
          description: Human-readable error message.
          example: One or more fields are invalid or missing.
        fields:
          type: array
          description: >-
            Present on field-level validation errors. One entry per problem
            field.
          items:
            type: object
            properties:
              code:
                type: string
                description: Error code related to the field issue.
              message:
                type: string
                description: Error message for the specific issue.
              field:
                type: string
                description: The name of the field that has an issue.
    Unauthorized:
      type: object
      properties:
        type:
          type: string
          description: Unauthorized enum
          example: UNAUTHORIZED
        message:
          type: string
          description: Unauthorized message
          example: Authentication required
    NotFound:
      type: object
      properties:
        type:
          type: string
          example: RESOURCE_NOT_FOUND
          description: The error type, e.g., RESOURCE_NOT_FOUND
        message:
          type: string
          description: A descriptive error message
        fields:
          type: array
          description: List of specific field errors
          items:
            type: object
            properties:
              code:
                type: string
                description: Error code related to the field issue
              message:
                type: string
                description: Error message for the specific issue
              field:
                type: string
                description: The name of the field that has an issue
    InternalServerError:
      type: object
      properties:
        type:
          type: string
          example: INTERNAL_SERVER_ERROR
          description: Internal server error enum
        message:
          type: string
          example: An internal server error occurred
          description: Internal server error message
    CorridorObject:
      type: object
      description: A supported fiat/crypto transfer corridor.
      properties:
        id:
          type: string
          description: Public ID of the corridor (prefixed with `crd_`).
          example: crd_9aB0xY4mNpXwZ7bV1aLdt
        fiatCurrency:
          type: string
          example: USD
        fiatCountry:
          type: string
          description: ISO 3166-1 alpha-3 country code.
          example: USA
        transferType:
          type: string
          example: ACH
        cryptoCurrency:
          type: string
          enum:
            - USDC
            - USDT
            - USDG
            - PYUSD
          example: USDC
        chain:
          type: string
          enum:
            - POLYGON
            - SOLANA
            - ETHEREUM
            - BASE
            - BSC
            - FLOW_EVM
            - CANTON
            - TRON
          example: POLYGON
        direction:
          type: string
          enum:
            - ONRAMP
            - OFFRAMP
          description: >-
            Whether the corridor moves fiat to crypto (`ONRAMP`) or crypto to
            fiat (`OFFRAMP`).
          example: ONRAMP
        status:
          type: string
          enum:
            - ACTIVE
            - INACTIVE
          example: ACTIVE
    Pagination:
      type: object
      properties:
        hasMore:
          type: boolean
        startCursor:
          type: string
          nullable: true
        endCursor:
          type: string
          nullable: true
      required:
        - hasMore
        - startCursor
        - endCursor
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT

````