SWIFT LEIs API

LEI (Legal Entity Identifier) lookup and validation

Operations 6

GET /v2/leis/{lei} Get LEI Details #
GET /v2/leis/{lei}/validity Validate LEI #
GET /v2/leis/{lei}/bic Get BIC for LEI #
GET /leis/{lei}/bic Get the BIC for an LEI #
GET /leis/{lei}/validity Check validity of a LEI #
GET /leis/{lei} Get details of a LEI #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/swift:swift-leis-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

swift-leis-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Swift LEIs API
  version: '1.0'
  description: 'Operations tagged LEIs across 3 of this provider''s published API definitions: swift-swiftref-api-openapi.yml, swift-swiftref-api-v4-openapi.yml, swift-swiftref-api-v4-openapi.yml. Each path carries the servers of the definition it was published in.'
servers:
- url: https://api.swift.com/swiftrefdata
  description: SWIFT SwiftRef Production API
- url: https://sandbox.swift.com/swiftrefdata
  description: SWIFT SwiftRef Sandbox
- url: https://api.swift.com/swiftrefdata/v4
  description: Live environment
- url: https://sandbox.swift.com/swiftrefdata/v4
  description: Sandbox environment
- url: https://api-test.swift.com/swiftrefdata/v4
  description: Test environment
tags:
- name: LEIs
  description: LEI (Legal Entity Identifier) lookup and validation
paths:
  /v2/leis/{lei}:
    get:
      operationId: getLei
      summary: Get LEI Details
      description: Returns details for a Legal Entity Identifier (LEI) including entity name, legal address, and registration status.
      tags:
      - LEIs
      parameters:
      - $ref: '#/components/parameters/lei'
      responses:
        '200':
          description: LEI details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LeiDetails'
        '404':
          $ref: '#/components/responses/NotFound'
      security:
      - OAuth2: []
    servers:
    - url: https://api.swift.com/swiftrefdata
      description: SWIFT SwiftRef Production API
    - url: https://sandbox.swift.com/swiftrefdata
      description: SWIFT SwiftRef Sandbox
  /v2/leis/{lei}/validity:
    get:
      operationId: validateLei
      summary: Validate LEI
      description: Checks whether a Legal Entity Identifier is valid and active in the Global LEI System (GLEIF).
      tags:
      - LEIs
      parameters:
      - $ref: '#/components/parameters/lei'
      responses:
        '200':
          description: LEI validity result
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidityResult'
      security:
      - OAuth2: []
    servers:
    - url: https://api.swift.com/swiftrefdata
      description: SWIFT SwiftRef Production API
    - url: https://sandbox.swift.com/swiftrefdata
      description: SWIFT SwiftRef Sandbox
  /v2/leis/{lei}/bic:
    get:
      operationId: getBicForLei
      summary: Get BIC for LEI
      description: Returns the BIC associated with a Legal Entity Identifier.
      tags:
      - LEIs
      parameters:
      - $ref: '#/components/parameters/lei'
      responses:
        '200':
          description: BIC for the LEI
          content:
            application/json:
              schema:
                type: object
                properties:
                  bic:
                    type: string
      security:
      - OAuth2: []
    servers:
    - url: https://api.swift.com/swiftrefdata
      description: SWIFT SwiftRef Production API
    - url: https://sandbox.swift.com/swiftrefdata
      description: SWIFT SwiftRef Sandbox
  /leis/{lei}/bic:
    get:
      tags:
      - LEIs
      summary: Get the BIC for an LEI
      description: For a given LEI, you can retrieve the BIC of that LEI.
      operationId: getBicFromLei
      parameters:
      - in: path
        name: lei
        schema:
          $ref: '#/components/schemas/Lei'
        required: true
        description: LEI (20-characters) for which the corresponding BIC is requested
      responses:
        '200':
          description: Corresponding BIC found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LeiBic'
            application/xml:
              schema:
                $ref: '#/components/schemas/LeiBic'
        '400':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Errors'
              example:
                errors:
                - code: REDA.API.MLRI
                  severity: Fatal
                  text: Missing LEI resource identifier
                  user_message: Wrong URL format
            application/xml:
              schema:
                $ref: '#/components/schemas/Errors'
              example: <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <errors> <error> <code>REDA.API.MLRI</code> <severity>Fatal</severity> <text>Missing LEI resource identifier</text> <user_message>Wrong URL format</user_message> </error> </errors>
        '401':
          $ref: '#/components/responses/Unallowed'
        '404':
          description: Corresponding BIC not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Errors'
              example:
                errors:
                - code: REDA.API.BINF
                  severity: Fatal
                  text: The LEI does not exist or has no BIC associated
                  user_message: No corresponding BIC found
            application/xml:
              schema:
                $ref: '#/components/schemas/Errors'
              example: <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <errors> <error> <code>REDA.API.BINF</code> <severity>Fatal</severity> <text>The LEI does not exist or has no BIC associated</text> <user_message>No corresponding BIC found</user_message> </error> </errors>
        '405':
          $ref: '#/components/responses/InvalidHttpMethod'
        '406':
          $ref: '#/components/responses/NotAcceptable'
        default:
          $ref: '#/components/responses/UnexpectedError'
      security:
      - oauthBearerToken: []
    servers:
    - url: https://api.swift.com/swiftrefdata/v4
      description: Live environment
    - url: https://sandbox.swift.com/swiftrefdata/v4
      description: Sandbox environment
    - url: https://api-test.swift.com/swiftrefdata/v4
      description: Test environment
  /leis/{lei}/validity:
    get:
      tags:
      - LEIs
      summary: Check validity of a LEI
      description: You can check whether a LEI is formally correct and exists.
      operationId: getLeiValidity
      parameters:
      - in: path
        name: lei
        schema:
          $ref: '#/components/schemas/Lei'
        required: true
        description: LEI to validate
      responses:
        '200':
          description: Valid LEI
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LeiValidity'
            application/xml:
              schema:
                $ref: '#/components/schemas/LeiValidity'
        '400':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Errors'
              example:
                errors:
                - code: REDA.API.MCRI
                  severity: Fatal
                  text: Missing LEI resource identifier
                  user_message: Wrong URL format
            application/xml:
              schema:
                $ref: '#/components/schemas/Errors'
              example: <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <errors> <error> <code>REDA.API.MCRI</code> <severity>Fatal</severity> <text>Missing LEI resource identifier</text> <user_message>Wrong URL format</user_message> </error> </errors>
        '401':
          $ref: '#/components/responses/Unallowed'
        '404':
          description: Invalid LEI or LEI not found or wrong URL format
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Errors'
              example:
                errors:
                - code: REDA.API.ILEI
                  severity: Fatal
                  text: LEI resource identifier matches expression [0-9A-Z]{20}, but it does not exist
                  user_message: Invalid LEI
            application/xml:
              schema:
                $ref: '#/components/schemas/Errors'
              example: <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <errors> <error> <code>REDA.API.ILEI</code> <severity>Fatal</severity> <text>LEI resource identifier matches expression [0-9A-Z]{20}, but it does not exist</text> <user_message>Invalid LEI</user_message> </error> </errors>
        '405':
          $ref: '#/components/responses/InvalidHttpMethod'
        '406':
          $ref: '#/components/responses/NotAcceptable'
        default:
          $ref: '#/components/responses/UnexpectedError'
      security:
      - oauthBearerToken: []
    servers:
    - url: https://api.swift.com/swiftrefdata/v4
      description: Live environment
    - url: https://sandbox.swift.com/swiftrefdata/v4
      description: Sandbox environment
    - url: https://api-test.swift.com/swiftrefdata/v4
      description: Test environment
  /leis/{lei}:
    get:
      tags:
      - LEIs
      summary: Get details of a LEI
      description: For a given LEI, you can retrieve the details of that LEI.
      operationId: getLeiDetails
      parameters:
      - in: path
        name: lei
        schema:
          $ref: '#/components/schemas/Lei'
        required: true
        description: LEI for which details are requested
      responses:
        '200':
          description: Corresponding LEI found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LeiDetails_2'
            application/xml:
              schema:
                $ref: '#/components/schemas/LeiDetails_2'
        '401':
          $ref: '#/components/responses/Unallowed'
        '404':
          description: LEI not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Errors'
              example:
                errors:
                - code: REDA.API.LENF
                  severity: Fatal
                  text: The LEI does not exist
                  user_message: LEI not found
            application/xml:
              schema:
                $ref: '#/components/schemas/Errors'
              example: <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <errors> <error> <code>REDA.API.LENF</code> <severity>Fatal</severity> <text>The LEI does not exist</text> <user_message>LEI not found</user_message> </error> </errors>
        '405':
          $ref: '#/components/responses/InvalidHttpMethod'
        '406':
          $ref: '#/components/responses/NotAcceptable'
        default:
          $ref: '#/components/responses/UnexpectedError'
      security:
      - oauthBearerToken: []
    servers:
    - url: https://api.swift.com/swiftrefdata/v4
      description: Live environment
    - url: https://sandbox.swift.com/swiftrefdata/v4
      description: Sandbox environment
    - url: https://api-test.swift.com/swiftrefdata/v4
      description: Test environment
components:
  schemas:
    ValidityResult:
      type: object
      properties:
        valid:
          type: boolean
          description: Whether the identifier is valid
        errorCode:
          type: string
          description: Error code if invalid
        errorDescription:
          type: string
          description: Human-readable description of validation failure
    LeiDetails:
      type: object
      properties:
        lei:
          type: string
          description: Legal Entity Identifier
        legalName:
          type: string
          description: Legal entity name
        legalAddress:
          type: object
          description: Legal address of the entity
        registrationStatus:
          type: string
          description: LEI registration status (ISSUED, LAPSED, etc.)
    Bic:
      type: string
      description: Bank Identifier Code - ISO 9362
      pattern: ^[A-Z]{6}[A-Z2-9][A-NP-Z0-9]([A-Z0-9]{3})?$
      example: SWHTBEBBXXX
    LeiBic:
      type: object
      required:
      - bic
      properties:
        bic:
          $ref: '#/components/schemas/Bic'
      xml:
        name: bic
      additionalProperties: false
      example:
        bic: DEUTDEFFXXX
    Errors:
      type: object
      required:
      - errors
      properties:
        errors:
          type: array
          items:
            $ref: '#/components/schemas/Error'
          minItems: 1
      xml:
        name: errors
      additionalProperties: false
    CountryName:
      $ref: '#/components/schemas/StringMax70'
    AddressLine:
      $ref: '#/components/schemas/StringMax140'
    City:
      $ref: '#/components/schemas/StringMax70'
    StringMax20:
      description: Generic string definition, from 1 to 20 characters long
      type: string
      minLength: 1
      maxLength: 20
    EntityName:
      description: Legal entity name
      type: string
      minLength: 1
      maxLength: 320
    LeiValidity:
      type: object
      required:
      - lei
      - validity
      properties:
        lei:
          $ref: '#/components/schemas/Lei'
        validity:
          type: string
          enum:
          - VLEI
          description: The code VLEI if the LEI is valid
      xml:
        name: validity
      additionalProperties: false
      example:
        lei: BFXS5XCH7N0Y05NIXW11
        validity: VLEI
    Lei:
      type: string
      description: Legal Entity Identifier - ISO 17442
      pattern: ^[0-9A-Z]{18}[0-9]{2}$
      example: 7LTWFZYICNSX8D621K86
    StringMax70:
      description: Generic string definition, from 1 to 70 characters long
      type: string
      minLength: 1
      maxLength: 70
    Error:
      description: Custom error schema to support detailed error message.
      required:
      - code
      - severity
      - text
      type: object
      properties:
        severity:
          description: Specifies the severity of the error.
          type: string
          enum:
          - Fatal
          - Transient
          - Logic
        code:
          description: Specifies the custom error code as defined by the service provider.
          type: string
          minLength: 3
          maxLength: 70
        text:
          $ref: '#/components/schemas/StringMax255'
        user_message:
          $ref: '#/components/schemas/StringMax255'
        more_info:
          description: Specifies an URL to find more information about the error.
          type: string
          format: uri
      xml:
        name: error
      additionalProperties: false
      example:
        code: REDA.API.CODE
        severity: Fatal
        text: Error description
        user_message: User-friendly error description
    LeiDetails_2:
      type: object
      required:
      - lei
      - legal_name
      properties:
        lei:
          $ref: '#/components/schemas/Lei'
        legal_name:
          type: string
          minLength: 1
          maxLength: 350
        address:
          $ref: '#/components/schemas/Address2'
        head_quarters_address:
          $ref: '#/components/schemas/Address2'
        legal_jurisdiction:
          type: string
          minLength: 1
          maxLength: 10
        legal_form:
          $ref: '#/components/schemas/StringMax255'
        entity_legal_form_code:
          $ref: '#/components/schemas/StringMax255'
        entity_status:
          type: string
          enum:
          - ACTIVE
          - INACTIVE
        initial_registration_date:
          type: string
          format: date
        last_update_date:
          type: string
          format: date
        registration_status:
          type: string
          minLength: 1
          maxLength: 30
        associated:
          type: object
          properties:
            entity_type:
              $ref: '#/components/schemas/StringMax20'
            lei:
              $ref: '#/components/schemas/Lei'
            entity_name:
              $ref: '#/components/schemas/EntityName'
        entity_expiration:
          type: object
          properties:
            date:
              type: string
              format: date
            reason:
              $ref: '#/components/schemas/StringMax70'
        successor:
          type: object
          properties:
            lei:
              $ref: '#/components/schemas/Lei'
            name:
              $ref: '#/components/schemas/EntityName'
      xml:
        name: lei
      example:
        lei: BFXS5XCH7N0Y05NIXW11
        legal_name: ABN AMRO Bank N.V.
        address:
          street_address:
          - Gustav Mahlerlaan 10
          city: Amsterdam
          region: NL-NH
          postal_code: 1082 PP
          country_name: NETHERLANDS
        head_quarters_address:
          street_address:
          - Gustav Mahlerlaan 10
          city: Amsterdam
          region: NL-NH
          postal_code: 1082 PP
          country_name: NETHERLANDS
        legal_jurisdiction: NL
        legal_form: NAAMLOZE VENNOOTSCHAP
        entity_legal_form_code: B5PM
        entity_status: ACTIVE
        initial_registration_date: '2012-06-06'
        last_update_date: '2018-08-16'
        registration_status: ISSUED
        associated:
          entity_type: FUND_FAMILY
          lei: W51AX6427FJZJFPF8H34
          entity_name: EUROAGENTES GESTION SGIIC, S.A.
        entity_expiration:
          date: '2018-04-17'
          reason: DISSOLVED
        successor:
          lei: CYZ5AAG3SVPY3KMG6Q07
          name: Specialplast Wensbo AB
    StringMax255:
      description: Generic string definition, from 1 to 255 characters long
      type: string
      minLength: 1
      maxLength: 255
    StringMax140:
      description: Generic string definition, from 1 to 140 characters long
      type: string
      minLength: 1
      maxLength: 140
    Address2:
      type: object
      required:
      - country_name
      properties:
        street_address:
          type: array
          items:
            $ref: '#/components/schemas/AddressLine'
          minItems: 1
          maxItems: 4
        city:
          $ref: '#/components/schemas/City'
        region:
          $ref: '#/components/schemas/StringMax70'
        postal_code:
          $ref: '#/components/schemas/PostalCode'
        country_name:
          $ref: '#/components/schemas/CountryName'
      additionalProperties: false
    PostalCode:
      type: string
      minLength: 1
      maxLength: 15
      description: Identifier consisting of a group of letters and/or numbers that is added to a postal address to assist the sorting of mail
    LeiDetails_3:
      type: object
      required:
      - lei
      - legal_name
      properties:
        lei:
          $ref: '#/components/schemas/Lei'
        legal_name:
          type: string
          minLength: 1
          maxLength: 350
        address:
          $ref: '#/components/schemas/Address2'
        head_quarters_address:
          $ref: '#/components/schemas/Address2'
        legal_jurisdiction:
          type: string
          minLength: 1
          maxLength: 10
        legal_form:
          $ref: '#/components/schemas/StringMax255'
        entity_legal_form_code:
          $ref: '#/components/schemas/StringMax255'
        entity_status:
          type: string
          enum:
          - ACTIVE
          - INACTIVE
        initial_registration_date:
          type: string
          format: date
        last_update_date:
          type: string
          format: date
        registration_status:
          type: string
          minLength: 1
          maxLength: 30
        associated:
          type: object
          properties:
            entity_type:
              $ref: '#/components/schemas/StringMax20'
            lei:
              $ref: '#/components/schemas/Lei'
            entity_name:
              $ref: '#/components/schemas/EntityName'
        entity_expiration:
          type: object
          properties:
            date:
              type: string
              format: date
            reason:
              $ref: '#/components/schemas/StringMax70'
        successor:
          type: object
          properties:
            lei:
              $ref: '#/components/schemas/Lei'
            name:
              $ref: '#/components/schemas/EntityName'
      xml:
        name: lei
      example:
        lei: BFXS5XCH7N0Y05NIXW11
        legal_name: ABN AMRO Bank N.V.
        address:
          street_address:
          - Gustav Mahlerlaan 10
          city: Amsterdam
          region: NL-NH
          postal_code: 1082 PP
          country_name: NETHERLANDS
        head_quarters_address:
          street_address:
          - Gustav Mahlerlaan 10
          city: Amsterdam
          region: NL-NH
          postal_code: 1082 PP
          country_name: NETHERLANDS
        legal_jurisdiction: NL
        legal_form: NAAMLOZE VENNOOTSCHAP
        entity_legal_form_code: B5PM
        entity_status: ACTIVE
        initial_registration_date: '2012-06-06'
        last_update_date: '2018-08-16'
        registration_status: ISSUED
        associated:
          entity_type: FUND_FAMILY
          lei: W51AX6427FJZJFPF8H34
          entity_name: EUROAGENTES GESTION SGIIC, S.A.
        entity_expiration:
          date: '2018-04-17'
          reason: DISSOLVED
        successor:
          lei: CYZ5AAG3SVPY3KMG6Q07
          name: Specialplast Wensbo AB
  responses:
    NotFound:
      description: Identifier not found in reference data
      content:
        application/json:
          schema:
            type: object
            properties:
              code:
                type: string
              message:
                type: string
    UnexpectedError:
      description: Unexpected error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Errors'
        application/xml:
          schema:
            $ref: '#/components/schemas/Errors'
    Unallowed:
      description: You do not have sufficient privileges to execute this service
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Errors'
          example:
            errors:
            - code: REDA.API.ILIC
              severity: Fatal
              text: You do not have sufficient privileges to execute this service
              user_message: You do not have sufficient privileges to execute this service
    NotAcceptable:
      description: The server does not support the format asked by the consumer
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Errors'
          example:
            errors:
            - code: REDA.API.NOAC
              severity: Fatal
              text: Requested output format is not supported
    InvalidHttpMethod:
      description: Request HTTP method is not accepted
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Errors'
          example:
            errors:
            - code: REDA.API.IREQ
              severity: Fatal
              text: Request performed with HTTP method other than GET
              user_message: Invalid request
  parameters:
    lei:
      name: lei
      in: path
      required: true
      schema:
        type: string
        pattern: ^[A-Z0-9]{20}$
      description: 20-character Legal Entity Identifier
      example: 529900T8BM49AURSDO55
  securitySchemes:
    OAuth2:
      type: oauth2
      flows:
        password:
          tokenUrl: https://api.swift.com/oauth2/v1/token
          scopes:
            urn:swiftref:external: External customer access to SwiftRef data
            urn:swiftref:internal: Internal payment validation access
    oauthBearerToken:
      type: http
      scheme: bearer
      bearerFormat: opaque OAuth 2.0
      description: "Use the access token obtained as a result of OAuth 2.0 flows. \n\nSWIFT supports two OAuth grant types depending on the API service.\n* JWT-Bearer grant type [RFC 7523](https://tools.ietf.org/html/rfc7523)\n* Password grant type\n\nThis API uses password grant type.\n\nPlease visit [SWIFT OAuth Token API](https://developer.swift.com/swift-oauth-token-api) for more information and examples.\n\nIn this declaration only the basic security element to transport the bearer token of an OAuth2 process is declared.\n"
externalDocs:
  description: SWIFT SwiftRef API Documentation
  url: https://developer.swift.com/apis/swiftref-api
x-refined-from:
- swift-swiftref-api-openapi.yml
- swift-swiftref-api-v4-openapi.yml
- swift-swiftref-api-v4-openapi.yml