# End-of-Life (EOL) API
> Product end-of-life and support-lifecycle dates as an API, powered by endoflife.date — the community-maintained reference for when software stops being supported. Covers 450+ products across every layer of the stack: Linux distributions (Ubuntu, Debian, RHEL, Alpine…), programming languages (PHP, Python, Node.js, Java, Go, Ruby…), frameworks (Django, Laravel, Spring Boot, React, Angular…), databases (PostgreSQL, MySQL, MongoDB, Redis…), operating systems, browsers, hardware devices and more. List every tracked product; for any product get all of its release cycles with the release date, latest patch version and release date, LTS flag, active-support end date and end-of-life date; and look up a single release cycle on its own. Every cycle is enriched with a computed, live status calculated against today's date — whether the version is still supported, whether it has already reached end of life, how many days remain until end of life and whether active support has ended — so you can answer "is this version still supported?" and "how long until I must upgrade?" in one call. Ideal for dependency auditing, upgrade and migration planning, security and compliance dashboards, CI checks and platform inventories. Product slugs come from the products endpoint (e.g. php, ubuntu, nodejs, postgresql). Computed status is relative to the current UTC date. Data from endoflife.date (CC-BY-SA).

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

## Pricing
- **Free** (Free) — 700 calls/Mo, 2 req/s
- **Starter** ($6/Mo) — 25,000 calls/Mo, 6 req/s
- **Pro** ($19/Mo) — 105,000 calls/Mo, 15 req/s
- **Mega** ($53/Mo) — 450,000 calls/Mo, 40 req/s

## Endpoints

### Lifecycle

#### `GET /v1/cycle` — A single release cycle (live status)

**Parameters:**
- `product` (query, required, string) — Product slug Example: `python`
- `cycle` (query, required, string) — Release cycle, e.g. 3.12 Example: `3.12`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/endoflife-api/v1/cycle?product=python&cycle=3.12"
```

**Response:**
```json
{
    "data": {
        "cycle": {
            "eol": "2028-10-31",
            "lts": false,
            "link": null,
            "cycle": "",
            "is_eol": false,
            "latest": "3.12.13",
            "codename": null,
            "eol_in_days": 883,
            "discontinued": null,
            "is_supported": true,
            "release_date": "2023-10-02",
            "active_support": "2025-04-02",
            "extended_support": null,
            "latest_release_date": "2026-03-03",
            "active_support_ended": true,
            "active_support_in_days": -425
        },
        "product": "python"
    },
    "meta": {
        "timestamp": "2026-06-01T08:13:18.544Z",
        "request_id": "e273fc27-7122-4fab-b453-1049232932b8"
    },
    "status": "ok",
    "message": "Cycle retrieved",
    "success": true
}
```

#### `GET /v1/product` — All release cycles of a product

**Parameters:**
- `product` (query, required, string) — Product slug, e.g. php Example: `php`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/endoflife-api/v1/product?product=php"
```

**Response:**
```json
{
    "data": {
        "cycles": [
            {
                "eol": "2029-12-31",
                "lts": false,
                "link": null,
                "cycle": "8.5",
                "is_eol": false,
                "latest": "8.5.6",
                "codename": null,
                "eol_in_days": 1309,
                "discontinued": null,
                "is_supported": true,
                "release_date": "2025-11-20",
                "active_support": "2027-12-31",
                "extended_support": null,
                "latest_release_date": "2026-05-07",
                "active_support_ended": false,
                "active_support_in_days": 578
            },
            {
                "eol": "2028-12-31",
                "lts": false,
                "link": null,
                "cycle": "8.4",
                "is_eol": false,
                "latest": "8.4.21",
                "codename": null,
                "eol_in_days": 944,
                "discontinued": null,
                "is_supported": true,
                "release_date": "2024-11-21",
                "active_support": "2026-12-31",
                "extended_support": null,
                "latest_release_date": "2026-05-07",
                "active_support_ended": false,
                "active_support_in_days": 213
            },
            {
                "eol": "2027-12-31",
                "lts": false,
                "link": null,
                "cycle": "8.3",
           
…(truncated, see openapi.json for full schema)
```

#### `GET /v1/products` — List tracked products

**Parameters:**
- `q` (query, optional, string) — Substring filter, e.g. linux

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

**Response:**
```json
{
    "data": {
        "count": 459,
        "total": 459,
        "products": [
            "adonisjs",
            "akeneo-pim",
            "alibaba-ack",
            "alibaba-dragonwell",
            "almalinux",
            "alpine-linux",
            "amazon-aurora-postgresql",
            "amazon-cdk",
            "amazon-corretto",
            "amazon-documentdb",
            "amazon-eks",
            "amazon-elasticache-redis",
            "amazon-glue",
            "amazon-linux",
            "amazon-msk",
            "amazon-neptune",
            "amazon-opensearch",
            "amazon-rds-mariadb",
            "amazon-rds-mysql",
            "amazon-rds-postgresql",
            "android",
            "angular",
            "angularjs",
            "ansible",
            "ansible-core",
            "ant",
            "antix",
            "apache-activemq",
            "apache-airflow",
            "apache-apisix",
            "apache-artemis",
            "apache-camel",
            "apache-cassandra",
            "apache-couchdb",
            "apache-flink",
            "apache-groovy",
            "apache-hadoop",
            "apache-hop",
            "apache-http-server",
            "apache-kafka",
            "apache-lucene",
            "apache-maven",
            "apache-nifi",
            "apache-pulsar",
            "apache-spark",
            "apache-struts",
            "apache-subversion",
            "api-platform",
            "apple-watch",
       
…(truncated, see openapi.json for full schema)
```

### Meta

#### `GET /v1/meta` — Usage notes

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

**Response:**
```json
{
    "data": {
        "note": "Product end-of-life (EOL) and support-lifecycle dates for 450+ products — Linux distributions, programming languages, frameworks, databases, browsers, operating systems, hardware and more. /v1/products (optional q= substring filter) = the full list of tracked product slugs, e.g. php, ubuntu, nodejs, postgresql, windows; /v1/product?product=php = every release cycle of a product with its release date, latest patch version & date, LTS flag, active-support end and end-of-life dates, plus a computed live status for each cycle (is_supported, is_eol, eol_in_days, active_support_ended); /v1/cycle?product=php&cycle=8.1 = a single release cycle with the same enriched, computed status. Use it to answer 'is this version still supported?', 'when does it reach end of life?' and 'how many days are left?' — ideal for dependency auditing, upgrade planning, compliance and dashboards. Computed status is relative to the current UTC date. Data from endoflife.date (community-maintained, CC-BY-SA).",
        "source": "endoflife.date API (endoflife.date)",
        "endpoints": [
            "/v1/products",
            "/v1/product",
            "/v1/cycle",
            "/v1/meta"
        ]
    },
    "meta": {
        "timestamp": "2026-06-01T08:13:18.772Z",
        "request_id": "c305f29a-560e-4d24-acf4-4cbc9fd6ef48"
    },
    "status": "ok",
    "message": "Meta retrieved",
    "success": true
}
```


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