LEI Registration API: Technical Integration Guide
Technical documentation for integrating the LEI Registration API. Covers endpoints for LEI registration, renewal, validation, and batch processing with code examples and authentication details.
Overview
The LEI Registration API provides programmatic access to LEI lifecycle management—registration, renewal, validation, and lookup. This guide covers authentication, available endpoints, request/response formats, and error handling.
Authentication
All API requests require an API key passed via the X-API-Key header. Keys are generated from the API Dashboard and are environment-specific (test/live).
curl -X GET "https://api.lei-search.com/v1/lei/5493001KJTIIGC8Y1R12" \ -H "X-API-Key: your_api_key_here"
API keys are stored as SHA-256 hashes. Rate limits vary by tier: Starter (60 req/min), Pro (300 req/min), Enterprise (1000 req/min).
Base URL
https://api.lei-search.com/v1
Endpoints
POST /lei/register
Submit a new LEI registration application. The request is validated against official company registries before submission to GLEIF.
POST /lei/register
Content-Type: application/json
{
"entity": {
"legalName": "Acme Corporation Ltd",
"legalAddress": {
"firstAddressLine": "123 Business Park",
"city": "London",
"country": "GB",
"postalCode": "EC1A 1BB"
},
"registrationNumber": "12345678",
"jurisdiction": "GB"
},
"parentInfo": {
"hasDirectParent": true,
"directParentLEI": "HWUPKR0MPOU8FGXBT394"
}
}
Request Fields
entity.legalName(required) - Official registered nameentity.legalAddress(required) - Registered address objectentity.registrationNumber(required) - Company registration numberentity.jurisdiction(required) - ISO 3166-1 alpha-2 country codeparentInfo.hasDirectParent- Boolean for Level 2 relationship dataparentInfo.directParentLEI- LEI of direct parent entity (if applicable)
Response
HTTP 202 Accepted
{
"applicationId": "APP-2025-001234",
"status": "PENDING_VALIDATION",
"estimatedCompletion": "2025-02-07T12:00:00Z"
}
POST /lei/renew
Renew an existing LEI. Optionally update entity data during renewal.
POST /lei/renew
Content-Type: application/json
{
"lei": "5493001KJTIIGC8Y1R12",
"renewalPeriod": "1_YEAR",
"updateData": {
"legalAddress": {
"city": "Manchester"
}
}
}
Parameters
lei(required) - The 20-character LEI coderenewalPeriod-1_YEAR,2_YEAR, or3_YEARupdateData- Optional object containing fields to update
GET /lei/{lei_code}
Retrieve entity data for a specific LEI. Returns Level 1 reference data and Level 2 relationship data.
GET /lei/5493001KJTIIGC8Y1R12
HTTP 200 OK
{
"lei": "5493001KJTIIGC8Y1R12",
"legalName": "Acme Corporation Ltd",
"status": "ACTIVE",
"nextRenewalDate": "2026-02-05",
"registrationAuthority": "RA000544",
"jurisdiction": "GB",
"legalAddress": {
"firstAddressLine": "123 Business Park",
"city": "London",
"country": "GB",
"postalCode": "EC1A 1BB"
},
"relationships": {
"directParent": "HWUPKR0MPOU8FGXBT394",
"ultimateParent": "HWUPKR0MPOU8FGXBT394"
}
}
POST /batch/validate
Validate multiple LEI codes in a single request. Returns validation status for each LEI.
POST /batch/validate
Content-Type: application/json
{
"leis": [
"5493001KJTIIGC8Y1R12",
"HWUPKR0MPOU8FGXBT394",
"INVALID_LEI_CODE"
]
}
HTTP 200 OK
{
"results": [
{"lei": "5493001KJTIIGC8Y1R12", "valid": true, "status": "ACTIVE"},
{"lei": "HWUPKR0MPOU8FGXBT394", "valid": true, "status": "ACTIVE"},
{"lei": "INVALID_LEI_CODE", "valid": false, "error": "INVALID_FORMAT"}
]
}
POST /batch/enrich
Enrich a list of LEIs with full entity data. Useful for bulk compliance checks.
Webhooks
Configure webhooks to receive real-time notifications for registration status changes. Webhook endpoints can be configured via the API Dashboard.
Supported Events
lei.registration.completed- LEI registration approvedlei.registration.failed- Registration rejectedlei.renewal.completed- Renewal processedlei.status.changed- Entity status changed (e.g., LAPSED)
POST https://your-server.com/webhook
Content-Type: application/json
X-Webhook-Signature: sha256=...
{
"event": "lei.registration.completed",
"timestamp": "2025-02-05T14:30:00Z",
"data": {
"applicationId": "APP-2025-001234",
"lei": "5493001KJTIIGC8Y1R12",
"legalName": "Acme Corporation Ltd"
}
}
Error Handling
The API uses standard HTTP status codes. Error responses include a machine-readable code and description.
HTTP 400 Bad Request
{
"error": {
"code": "INVALID_LEI_FORMAT",
"message": "LEI must be exactly 20 alphanumeric characters"
}
}
Common Error Codes
401- Invalid or missing API key403- Insufficient permissions for endpoint404- LEI not found409- Duplicate registration attempt429- Rate limit exceeded
Rate Limits
Rate limits are applied per API key. Limits reset at the start of each minute. When exceeded, requests return 429 Too Many Requests with a Retry-After header.
API Tiers
Starter
- 1,000 API calls/month
- 60 requests/minute
- Read endpoints only
Pro
- 50,000 API calls/month
- 300 requests/minute
- Registration, renewal, batch
Enterprise
- Unlimited API calls
- 1,000 requests/minute
- Custom SLA
Additional Endpoints
The API also supports:
GET /lei/search- Full-text search across 2.7M+ entitiesGET /lei/{lei}/relationships- Level 2 parent/child dataGET /isin/{isin}/lei- ISIN to LEI cross-referencePOST /lei/transfer- Transfer LEI from another Registration Agent
Resources
- Full API Reference
- API Dashboard - Manage keys and monitor usage
- Contact - Technical support