# Securities ID API
> Validate the world's securities identifiers and compute their check digits — entirely locally. The validate endpoint checks an ISIN (the 12-character International Securities Identification Number), a CUSIP (the 9-character North-American identifier) or a SEDOL (the 7-character UK/Ireland identifier), auto-detecting which one you passed, and verifies it with the correct algorithm for each: the Luhn-over-letter-expansion scheme for ISIN, the doubling mod-10 scheme for CUSIP and the weighted mod-10 scheme for SEDOL. It returns whether the identifier is valid, the parsed parts (for an ISIN, the two-letter country prefix and the nine-character national number) and the expected check digit so you can see exactly why something failed. The checkdigit endpoint computes the trailing check digit for an identifier body, so you can complete or generate a valid code. Everything runs locally and deterministically, so it is instant and private — no market-data lookups, no third-party calls. Ideal for fintech and trading systems, reference-data and securities-master pipelines, reconciliation, data validation and import tooling, and compliance checks. Pure local computation — no key, no third-party service, instant. Live, nothing stored. 3 endpoints. This validates an identifier's structure and check digit; it does not look up the underlying security or its market data.

## Authentication
All requests require your oanor API key in the `x-oanor-key` header. Get one at https://www.oanor.com/developer/keys.

```bash
curl -H "x-oanor-key: oanor_live_…" "https://api.oanor.com/securitiesid-api/..."
```

## Pricing
- **Free** (Free) — 2,435 calls/Mo, 2 req/s
- **Starter** ($4/Mo) — 11,950 calls/Mo, 8 req/s
- **Pro** ($24/Mo) — 170,500 calls/Mo, 20 req/s
- **Mega** ($62/Mo) — 895,000 calls/Mo, 50 req/s

## Endpoints

### Securities

#### `GET /v1/checkdigit` — Compute the check digit

**Parameters:**
- `body` (query, required, string) — The identifier without its check digit Example: `US037833100`
- `type` (query, optional, string) — isin, cusip or sedol (auto-detected if omitted)

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/securitiesid-api/v1/checkdigit?body=US037833100"
```

**Response:**
```json
{
    "data": {
        "body": "US037833100",
        "full": "US0378331005",
        "type": "isin",
        "check_digit": 5
    },
    "meta": {
        "timestamp": "2026-06-03T09:25:03.890Z",
        "request_id": "1aed5c3c-855f-4bc8-8d3d-020bf5b13cb5"
    },
    "status": "ok",
    "message": "Compute the check digit",
    "success": true
}
```

#### `GET /v1/validate` — Validate a securities ID

**Parameters:**
- `id` (query, required, string) — The identifier (ISIN, CUSIP or SEDOL) Example: `US0378331005`
- `type` (query, optional, string) — isin, cusip or sedol (auto-detected if omitted)

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/securitiesid-api/v1/validate?id=US0378331005"
```

**Response:**
```json
{
    "data": {
        "nsin": "037833100",
        "type": "isin",
        "input": "US0378331005",
        "valid": true,
        "errors": [],
        "country": "US",
        "check_digit": 5,
        "expected_check_digit": 5
    },
    "meta": {
        "timestamp": "2026-06-03T09:25:03.988Z",
        "request_id": "e5610db9-b482-4a70-840a-16684467e70c"
    },
    "status": "ok",
    "message": "Validate a securities ID",
    "success": true
}
```

### Meta

#### `GET /v1/meta` — Spec

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/securitiesid-api/v1/meta"
```

**Response:**
```json
{
    "data": {
        "name": "Securities ID API",
        "notes": "ISIN = 2-letter country + 9-char NSIN + check digit; CUSIP = 8-char body + check digit; SEDOL = 6-char body + check digit. This validates the identifier's structure and check digit — it does not look up the underlying security. Nothing is stored.",
        "version": "v1",
        "endpoints": [
            {
                "path": "/v1/validate",
                "params": {
                    "id": "the identifier (required)",
                    "type": "isin, cusip or sedol (optional — auto-detected)"
                },
                "returns": "whether it is valid plus the parsed parts and expected check digit"
            },
            {
                "path": "/v1/checkdigit",
                "params": {
                    "body": "the identifier without its check digit (required)",
                    "type": "isin, cusip or sedol (optional — auto-detected)"
                },
                "returns": "the check digit and the complete identifier"
            },
            {
                "path": "/v1/meta",
                "params": [],
                "returns": "this document"
            }
        ],
        "description": "Validate the world's securities identifiers and compute their check digits. The validate endpoint checks an ISIN (12 characters), CUSIP (9 characters) or SEDOL (7 characters) — auto-detecting the type — using the correct check-digit algorithm for each: th
…(truncated, see openapi.json for full schema)
```


---
Marketplace page: https://www.oanor.com/api/securitiesid-api
OpenAPI spec: https://www.oanor.com/api/securitiesid-api/openapi.json
