EOSL.ai Hardware Lifecycle API API

Free, CORS-open, no authentication and no sign-up. Every record carries the vendor bulletin URL the date was read from. 3299 products, 17159 part numbers, 19 manufacturers. Data is regenerated weekly from vendor sources.

GitHub OpenAPI

Operations 6

GET /api/v1/families.json Every tracked product #
GET /api/v1/family/{slug}.json One product in full #
GET /data/lookup.json Part-number lookup table #
GET /cell/{part}.txt One-line status for a spreadsheet #
GET /api/usage Aggregate usage of these machine surfaces #
POST /mcp Model Context Protocol endpoint #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/eosl-ai:eosl-ai-hardware-lifecycle-api-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

eosl-ai-api-openapi.json Raw ↑
{
 "openapi": "3.1.0",
 "info": {
  "title": "EOSL.ai Hardware Lifecycle API",
  "version": "1.0.0",
  "summary": "Source-backed hardware end-of-sale and end-of-service-life dates.",
  "description": "Free, CORS-open, no authentication and no sign-up. Every record carries the vendor bulletin URL the date was read from. 3299 products, 17159 part numbers, 19 manufacturers. Data is regenerated weekly from vendor sources.",
  "license": {
   "name": "CC BY 4.0",
   "identifier": "CC-BY-4.0"
  },
  "contact": {
   "name": "EOSL.ai",
   "url": "https://eosl.ai/api/"
  }
 },
 "servers": [
  {
   "url": "https://eosl.ai"
  }
 ],
 "paths": {
  "/api/v1/families.json": {
   "get": {
    "summary": "Every tracked product",
    "operationId": "listFamilies",
    "description": "Index of all tracked hardware products with status, dates and page URL.",
    "responses": {
     "200": {
      "description": "Product index",
      "content": {
       "application/json": {}
      }
     }
    }
   }
  },
  "/api/v1/family/{slug}.json": {
   "get": {
    "summary": "One product in full",
    "operationId": "getFamily",
    "description": "Every SKU group for one product: end-of-sale, end-of-service-life, source bulletin URL, last-verified date, vendor-named replacement and part numbers.",
    "parameters": [
     {
      "name": "slug",
      "in": "path",
      "required": true,
      "schema": {
       "type": "string"
      },
      "description": "Product slug, e.g. cisco-catalyst-3850"
     }
    ],
    "responses": {
     "200": {
      "description": "Product detail",
      "content": {
       "application/json": {}
      }
     },
     "404": {
      "description": "Unknown product"
     }
    }
   }
  },
  "/data/lookup.json": {
   "get": {
    "summary": "Part-number lookup table",
    "operationId": "getLookup",
    "description": "One row per part number — the dataset the browser tools, the MCP server and the NetBox/Ansible/Snipe-IT integrations all read.",
    "responses": {
     "200": {
      "description": "Lookup table",
      "content": {
       "application/json": {}
      }
     }
    }
   }
  },
  "/cell/{part}.txt": {
   "get": {
    "summary": "One-line status for a spreadsheet",
    "operationId": "getCell",
    "description": "A single comma-free line for =IMPORTDATA (Google Sheets) or =WEBSERVICE (Excel).",
    "parameters": [
     {
      "name": "part",
      "in": "path",
      "required": true,
      "schema": {
       "type": "string"
      },
      "description": "Part number, e.g. WS-C3850-24T-L.txt"
     }
    ],
    "responses": {
     "200": {
      "description": "Status line",
      "content": {
       "text/plain": {}
      }
     }
    }
   }
  },
  "/api/usage": {
   "get": {
    "summary": "Aggregate usage of these machine surfaces",
    "operationId": "getUsage",
    "description": "Which kinds of client called which endpoint, on how many days. Public deliberately. Read the note field before quoting any figure — these are sightings, not request counts.",
    "responses": {
     "200": {
      "description": "Usage report",
      "content": {
       "application/json": {}
      }
     }
    }
   }
  },
  "/mcp": {
   "post": {
    "summary": "Model Context Protocol endpoint",
    "operationId": "mcp",
    "description": "Stateless Streamable HTTP, JSON-RPC 2.0, no auth. Five read-only tools over the same database.",
    "responses": {
     "200": {
      "description": "JSON-RPC response",
      "content": {
       "application/json": {}
      }
     }
    }
   }
  }
 }
}