Skip to main content
    Technical
    February 5, 202510 min read

    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 name
    • entity.legalAddress (required) - Registered address object
    • entity.registrationNumber (required) - Company registration number
    • entity.jurisdiction (required) - ISO 3166-1 alpha-2 country code
    • parentInfo.hasDirectParent - Boolean for Level 2 relationship data
    • parentInfo.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 code
    • renewalPeriod - 1_YEAR, 2_YEAR, or 3_YEAR
    • updateData - 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 approved
    • lei.registration.failed - Registration rejected
    • lei.renewal.completed - Renewal processed
    • lei.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 key
    • 403 - Insufficient permissions for endpoint
    • 404 - LEI not found
    • 409 - Duplicate registration attempt
    • 429 - 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+ entities
    • GET /lei/{lei}/relationships - Level 2 parent/child data
    • GET /isin/{isin}/lei - ISIN to LEI cross-reference
    • POST /lei/transfer - Transfer LEI from another Registration Agent

    Resources

    Recommended Articles

    Cookie Consent

    We use essential cookies for site functionality. Analytics cookies help us improve your experience. You can choose to accept or decline optional cookies. Your choice will be remembered.

    Privacy Policy