SWIFT LEIs API
LEI (Legal Entity Identifier) lookup and validation
LEI (Legal Entity Identifier) lookup and validation
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
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.curl "https://apis.io/api/v1/apis/swift:swift-leis-api"
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.
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: 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