# Writing Systems (ISO 15924) API
> The ISO 15924 register of writing systems — the script codes used by Unicode, BCP-47 and CLDR — served from memory (no key). Every script carries its 4-letter code (e.g. Latn, Arab, Hani), numeric code, English and French names, the Unicode property value alias, the Unicode version it was added in and its date. Look a script up by code or numeric, search by code or name, or list the whole register. 226 scripts. Ideal for internationalization, locale and font tooling, BCP-47 tag validation and text-rendering pipelines.

## 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/scripts-api/..."
```

## Pricing
- **Free** (Free) — 12,000 calls/Mo, 3 req/s
- **Starter** ($3/Mo) — 100,000 calls/Mo, 8 req/s
- **Pro** ($8/Mo) — 450,000 calls/Mo, 20 req/s
- **Mega** ($20/Mo) — 2,000,000 calls/Mo, 50 req/s

## Endpoints

### Scripts

#### `GET /v1/list` — List all scripts

**Parameters:**
- `limit` (query, optional, string) — Max (1-500, default 50) Example: `50`
- `offset` (query, optional, string) — Offset Example: `0`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/scripts-api/v1/list?limit=50&offset=0"
```

**Response:**
```json
{
    "data": {
        "count": 50,
        "total": 226,
        "scripts": [
            {
                "pva": "Adlam",
                "code": "Adlm",
                "date": "2016-12-05",
                "name_en": "Adlam",
                "name_fr": "adlam",
                "numeric": 166,
                "unicode_version": "9.0"
            },
            {
                "pva": null,
                "code": "Afak",
                "date": "2010-12-21",
                "name_en": "Afaka",
                "name_fr": "afaka",
                "numeric": 439,
                "unicode_version": null
            },
            {
                "pva": "Caucasian_Albanian",
                "code": "Aghb",
                "date": "2014-11-15",
                "name_en": "Caucasian Albanian",
                "name_fr": "aghbanien",
                "numeric": 239,
                "unicode_version": "7.0"
            },
            {
                "pva": "Ahom",
                "code": "Ahom",
                "date": "2015-07-07",
                "name_en": "Ahom, Tai Ahom",
                "name_fr": "âhom",
                "numeric": 338,
                "unicode_version": "8.0"
            },
            {
                "pva": "Arabic",
                "code": "Arab",
                "date": "2004-05-01",
                "name_en": "Arabic",
                "name_fr": "arabe",
                "numeric": 160,
                "unicode_version": "1.1"
            },
    
…(truncated, see openapi.json for full schema)
```

#### `GET /v1/script` — Script by code or numeric

**Parameters:**
- `code` (query, optional, string) — 4-letter ISO 15924 code Example: `Latn`
- `number` (query, optional, string) — Numeric code Example: `215`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/scripts-api/v1/script?code=Latn&number=215"
```

**Response:**
```json
{
    "data": {
        "script": {
            "pva": "Latin",
            "code": "Latn",
            "date": "2004-05-01",
            "name_en": "Latin",
            "name_fr": "latin",
            "numeric": 215,
            "unicode_version": "1.1"
        }
    },
    "meta": {
        "timestamp": "2026-06-08T18:25:13.347Z",
        "request_id": "b2544088-07be-4eca-b950-cba191846f07"
    },
    "status": "ok",
    "message": "Script retrieved successfully",
    "success": true
}
```

#### `GET /v1/search` — Search scripts by code or name

**Parameters:**
- `q` (query, required, string) — Substring (min 2 chars) Example: `arab`
- `limit` (query, optional, string) — Max results (1-100, default 25) Example: `25`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/scripts-api/v1/search?q=arab&limit=25"
```

**Response:**
```json
{
    "data": {
        "count": 4,
        "query": "arab",
        "total": 4,
        "scripts": [
            {
                "pva": "Arabic",
                "code": "Arab",
                "date": "2004-05-01",
                "name_en": "Arabic",
                "name_fr": "arabe",
                "numeric": 160,
                "unicode_version": "1.1"
            },
            {
                "pva": null,
                "code": "Aran",
                "date": "2014-11-15",
                "name_en": "Arabic (Nastaliq variant)",
                "name_fr": "arabe (variante nastalique)",
                "numeric": 161,
                "unicode_version": "1.1"
            },
            {
                "pva": "Old_North_Arabian",
                "code": "Narb",
                "date": "2014-11-15",
                "name_en": "Old North Arabian (Ancient North Arabian)",
                "name_fr": "nord-arabique",
                "numeric": 106,
                "unicode_version": "7.0"
            },
            {
                "pva": "Old_South_Arabian",
                "code": "Sarb",
                "date": "2009-06-01",
                "name_en": "Old South Arabian",
                "name_fr": "sud-arabique, himyarite",
                "numeric": 105,
                "unicode_version": "5.2"
            }
        ]
    },
    "meta": {
        "timestamp": "2026-06-08T18:25:13.465Z",
        "request_id": "4f30bb56-915f-40e6-be35-a91c5afc2afa"
    },
    "sta
…(truncated, see openapi.json for full schema)
```

### Meta

#### `GET /v1/meta` — Spec & dataset stats

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

**Response:**
```json
{
    "data": {
        "service": "scripts-api",
        "endpoints": {
            "GET /v1/list": "List all scripts (limit, offset).",
            "GET /v1/meta": "This document.",
            "GET /v1/script": "Script detail by code (code=, e.g. Latn) or numeric (number=, e.g. 215).",
            "GET /v1/search": "Search scripts by code or name (q=, min 2 chars)."
        },
        "description": "ISO 15924 writing-systems register (the script codes used by Unicode, BCP-47 and CLDR): 4-letter code, numeric code, English & French names, Unicode property value alias, version and date. No key.",
        "total_scripts": 226,
        "with_property_alias": 173
    },
    "meta": {
        "timestamp": "2026-06-08T18:25:13.572Z",
        "request_id": "3ebdfc8e-45f7-4cca-8e77-7099fa93fdbe"
    },
    "status": "ok",
    "message": "Meta",
    "success": true
}
```


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