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

# Search banks by name

> Search stored banks by exact, case-insensitive name (surrounding whitespace is ignored).
Optionally filter by ISO country of origin, not a country where the bank operates.
Requires an API key, is rate limited, and costs zero credits. No enrichment or creation occurs.
Returns all matching candidates in pages ordered by country (unknown last), then ID.
No match returns an empty array. Results are read directly from the database so backfilled
details are available immediately. Pagination is not a snapshot across requests.




## OpenAPI

````yaml https://api.triqai.com/openapi-public.json get /v1/banks
openapi: 3.1.0
info:
  title: Triqai Transaction Enrichment API
  version: 1.5.32
  description: >
    The Triqai API provides transaction enrichment capabilities for financial
    applications.


    ## Authentication


    All API endpoints require an API key in the `X-API-Key` header.


    ## Rate Limiting


    Per-organization limits use a token bucket (RPS) plus a concurrent in-flight
    cap.

    Headers may include:

    - `X-RateLimit-Limit`

    - `X-RateLimit-Remaining`

    - `X-RateLimit-Reset`

    - `X-RateLimit-Scope` (`rps` or `concurrency`)

    - `X-RateLimit-Concurrency-Limit`

    - `X-RateLimit-Concurrency-Remaining`


    `Retry-After` is returned in **seconds** on throttled responses.


    ## Idempotency


    You must supply `Idempotency-Key` (or `X-Idempotency-Key`) for enrichment
    requests so retries preserve billing and persistence identity.

    Keys must match `^[a-zA-Z0-9_-]{1,64}$`.

    Reusing a key returns `409`:

    - `state=completed`: request with this key already finished

    - `state=in_progress`: request with this key is still processing
    (`Retry-After` included)
  contact:
    name: Triqai Contact
    url: https://triqai.com/contact
  license:
    name: Proprietary
    url: https://triqai.com/terms
servers:
  - url: https://api.triqai.com
    description: Production
security:
  - ApiKeyAuth: []
tags:
  - name: Health
  - name: API
  - name: Transactions
  - name: Categories
  - name: Entities
  - name: Issue Reports
paths:
  /v1/banks:
    get:
      tags:
        - Entities
      summary: Search banks by name
      description: >
        Search stored banks by exact, case-insensitive name (surrounding
        whitespace is ignored).

        Optionally filter by ISO country of origin, not a country where the bank
        operates.

        Requires an API key, is rate limited, and costs zero credits. No
        enrichment or creation occurs.

        Returns all matching candidates in pages ordered by country (unknown
        last), then ID.

        No match returns an empty array. Results are read directly from the
        database so backfilled

        details are available immediately. Pagination is not a snapshot across
        requests.
      operationId: searchBanks
      parameters:
        - name: name
          in: query
          required: true
          description: >-
            Bank name; 1–200 characters after trimming. No fuzzy or alias
            matching.
          schema:
            type: string
            minLength: 1
            maxLength: 200
          example: ING
        - name: country
          in: query
          description: >-
            ISO 3166-1 alpha-2 country of origin; case-insensitive. Unknown
            countries do not match a filter.
          schema:
            type: string
            pattern: ^[A-Za-z]{2}$
          example: NL
        - name: page
          in: query
          schema:
            type: integer
            minimum: 1
            maximum: 10000
            default: 1
        - name: size
          in: query
          schema:
            type: integer
            minimum: 1
            maximum: 100
            default: 20
      responses:
        '200':
          description: Matching bank candidates (possibly empty)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BankSearchResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '422':
          $ref: '#/components/responses/ValidationError'
        '429':
          $ref: '#/components/responses/RateLimited'
        '500':
          $ref: '#/components/responses/InternalError'
components:
  schemas:
    BankSearchResponse:
      type: object
      required:
        - success
        - data
        - meta
      properties:
        success:
          type: boolean
          enum:
            - true
        data:
          type: object
          required:
            - banks
            - pagination
          properties:
            banks:
              type: array
              items:
                $ref: '#/components/schemas/BankData'
            pagination:
              type: object
              required:
                - page
                - size
                - hasMore
              properties:
                page:
                  type: integer
                size:
                  type: integer
                hasMore:
                  type: boolean
                  description: >-
                    More candidates exist; request the next page with the same
                    filters and size.
        meta:
          $ref: '#/components/schemas/ResponseMeta'
    BankData:
      type: object
      description: >-
        Shared bank reference data. Unknown profile values are null; icon is the
        bank logo URL.
      required:
        - id
        - name
        - country
        - foundedYear
        - foundedOn
        - description
        - icon
        - color
        - website
        - domain
      properties:
        id:
          type: string
          format: uuid
        name:
          type: string
          minLength: 1
          maxLength: 200
        country:
          type:
            - string
            - 'null'
          pattern: ^[A-Z]{2}$
          description: ISO 3166-1 alpha-2 country of origin, not countries of operation.
          example: NL
        foundedYear:
          type:
            - integer
            - 'null'
          minimum: 1
          maximum: 9999
          description: Founding year when known. May be populated without an exact date.
        foundedOn:
          type:
            - string
            - 'null'
          format: date
          description: >-
            Exact founding date when known (YYYY-MM-DD). Never inferred from the
            year alone.
        description:
          type:
            - string
            - 'null'
        icon:
          type:
            - string
            - 'null'
          description: Bank logo URL, consistent with merchant icon fields.
        color:
          type:
            - string
            - 'null'
          description: Brand color.
        website:
          type:
            - string
            - 'null'
        domain:
          type:
            - string
            - 'null'
    ResponseMeta:
      type: object
      required:
        - generatedAt
        - requestId
        - version
      properties:
        generatedAt:
          type: string
          format: date-time
        requestId:
          type: string
        version:
          type: string
      additionalProperties: true
    ErrorResponse:
      type: object
      required:
        - success
        - error
        - meta
      properties:
        success:
          type: boolean
          enum:
            - false
        error:
          $ref: '#/components/schemas/ErrorObject'
        meta:
          $ref: '#/components/schemas/ResponseMeta'
    ErrorObject:
      type: object
      required:
        - code
        - message
      properties:
        code:
          type: string
        message:
          type: string
        details:
          $ref: '#/components/schemas/ErrorDetails'
    ErrorDetails:
      type: object
      properties:
        fieldErrors:
          type: object
          additionalProperties:
            type: array
            items:
              type: string
      additionalProperties: true
  responses:
    Unauthorized:
      description: Authentication failed or missing credentials
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            success: false
            error:
              code: authentication_error
              message: API key is required
            meta:
              generatedAt: '2026-02-16T00:00:00Z'
              requestId: f353ca91-4fc5-49f2-9b9e-304f83d11914
              version: 1.1.2
    Forbidden:
      description: Authenticated but not authorized
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            success: false
            error:
              code: authorization_error
              message: Access denied
            meta:
              generatedAt: '2026-02-16T00:00:00Z'
              requestId: f353ca91-4fc5-49f2-9b9e-304f83d11914
              version: 1.1.2
    ValidationError:
      description: Request validation failed
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            success: false
            error:
              code: validation_error
              message: Validation failed
              details:
                fieldErrors:
                  title:
                    - Title is required
            meta:
              generatedAt: '2026-02-16T00:00:00Z'
              requestId: f353ca91-4fc5-49f2-9b9e-304f83d11914
              version: 1.1.2
    RateLimited:
      description: Rate limit exceeded
      headers:
        X-RateLimit-Limit:
          schema:
            type: integer
          description: Requests per second (sustained rate)
        X-RateLimit-Remaining:
          schema:
            type: integer
          description: Current token-bucket capacity available
        X-RateLimit-Reset:
          schema:
            type: string
            format: date-time
          description: Timestamp when token bucket refills
        X-RateLimit-Scope:
          schema:
            type: string
            enum:
              - rps
              - concurrency
          description: Active limiting dimension
        X-RateLimit-Concurrency-Limit:
          schema:
            type: integer
          description: Max concurrent requests for the org
        X-RateLimit-Concurrency-Remaining:
          schema:
            type: integer
          description: Remaining concurrent request slots
        Retry-After:
          schema:
            type: integer
          description: Seconds until retry is allowed
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            success: false
            error:
              code: rate_limited
              message: Rate limit exceeded
            meta:
              generatedAt: '2026-02-16T00:00:00Z'
              requestId: f353ca91-4fc5-49f2-9b9e-304f83d11914
              version: 1.1.2
    InternalError:
      description: Internal server error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: X-API-Key
      description: Public API key

````

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