BUSINESS IDENTITY API

Verify European businesses programmatically.

The same verification layer that powers SWELEI's business identity profiles, available as a read-only HTTP interface. Every response states which source verified each field and when.

Use cases

Know who you trade with.

Verify a supplier

Confirm a supplier's legal entity and identifiers before onboarding them.

Verify a customer

Check that a business customer exists and that its identifiers are current.

Verify a business partner

Retrieve identifiers and verification state before signing an agreement.

Verify a legal entity

Resolve an LEI to a legal entity, its status and its registered information.

Authentication

One API key, sent as a bearer token.

Create a key in your account. The key is shown once at creation and only a hash is stored, so it can never be retrieved again. Keys can be revoked at any time and every request is logged with endpoint, status and latency.

Authorization: Bearer swelei_live_xxxxxxxxxxxx

Rate limits per key: 60 requests per minute and 1000 per day. Responses include X-RateLimit-Remaining and, when exceeded, a 429 with Retry-After.

Endpoints

Read-only, source-transparent.

GET/api/v1/business/:identifier

Business identity with field-level provenance: value, source, method, date retrieved and status.

API key

GET/api/v1/business/:identifier/verification

Verification status, verified fields, sources used and any verification conflicts.

API key

GET/api/v1/business/:identifier/events

Immutable verification history: field, previous value, new value, source, status and time.

API key

GET/api/v1/business/:identifier/sources

The data sources used, their state and which field each source produced.

API key

Parameters

identifier

Path parameter. An LEI (20 characters) or a Swedish organisation number. 2–40 characters.

Authorization

Header. Bearer <your API key>. Required on every /api/v1 request.

Errors

400Invalid identifier.
401Missing, invalid or revoked API key.
404No business found for this identifier at the connected sources.
429Rate limit exceeded. Retry-After states when to try again.
503A verification source was unavailable.

Example

One request, full provenance.

curl https://swelei.com/api/v1/business/5493001KJTIIGC8Y1R12 \
  -H "Authorization: Bearer swelei_live_xxxxxxxxxxxx"
{
  "data": {
    "identifier": "5493001KJTIIGC8Y1R12",
    "status": "PARTIALLY_VERIFIED",
    "verifiedAt": "2026-09-16T09:12:44.201Z",
    "business": {
      "legalName": "Example AB",
      "country": "Sweden",
      "registrationNumber": "556123-4567",
      "lei": "5493001KJTIIGC8Y1R12",
      "leiStatus": "ISSUED"
    },
    "fields": [
      {
        "field": "legal_name",
        "value": "Example AB",
        "source": "GLEIF",
        "sourceIdentifier": "5493001KJTIIGC8Y1R12",
        "method": "GLEIF Global LEI Index record",
        "retrievedAt": "2026-09-16T09:12:44.201Z",
        "status": "VERIFIED"
      },
      {
        "field": "registration_number",
        "value": "556123-4567",
        "source": "GLEIF",
        "retrievedAt": "2026-09-16T09:12:44.201Z",
        "status": "RETRIEVED"
      }
    ],
    "sources": [
      { "source": "GLEIF", "state": "connected", "ok": true },
      { "source": "BOLAGSVERKET", "state": "requires_credentials", "ok": false },
      { "source": "VAT", "state": "connected", "ok": true }
    ],
    "conflicts": []
  }
}

A field is only VERIFIED when a source that can attest to it confirmed the value. Values published by a source that does not attest to them are returned as RETRIEVED, and disagreeing sources are returned as CONFLICT — SWELEI never chooses between them.

Plans

Verification volume, not seats.