No sign-up required to read it. Point at the endpoint, get JSON back — every open and closed model we track, its hardware requirements, benchmark scores and whether it's still fresh.
Three endpoints. The first is the one you probably want.
| Endpoint | Returns |
|---|---|
GET /api/models |
The full directory: every tracked model plus lastSync, the timestamp of the last full check against Hugging Face and provider APIs. |
GET /api/models/{id} |
A single model by its id, including its own metadata.lastChecked timestamp. |
GET /api/meta |
Just the freshness status — { "lastSync": "...", "modelCount": 000 }. Cheap to poll if you only want an uptime/freshness badge, not the whole dataset. |
curl https://www.aisnak.com/api/models
const res = await fetch("https://aisnak.com/api/models");
const { lastSync, models } = await res.json();
console.log(`${models.length} models, last checked ${lastSync}`);
import requests
data = requests.get("https://www.aisnak.com/api/models").json()
print(len(data["models"]), "models, last checked", data["lastSync"])
Reads are open to anyone — no key, no waiting on approval. Anonymous requests are limited by IP so the endpoint stays fast for everyone; since one call returns the whole directory, that ceiling is high enough for almost any normal use. If you're polling frequently or shipping something that gets real traffic, grab a free key below — it's issued instantly, no review, and raises your limit.
| Tier | Limit | Requirement |
|---|---|---|
| Anonymous | 60 requests / hour / IP | None |
| Free API key | 1,000 requests / day | Email address |
Instant, no approval queue. We'll also send you a note if the response schema ever changes.
This data is free to use, including commercially. If it's useful, a link back to aisnak.com/models is appreciated but never required.