← Back to dashboard

gawk.dev Public API

Free, public, no authentication required. Every response includes the same data powering gawk.dev. Every number traces to a verifiable public source.

Base URL

https://gawk.dev/api/v1

Rate Limits

  • 100 requests per hour per IP address (unauthenticated)
  • Rate limit headers included on every response: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset
  • Exceeding the limit returns 429 Too Many Requests with a Retry-After header

Response Headers

  • X-Gawk-Generated-At — ISO timestamp when this data was generated
  • X-Gawk-Source-Count — number of items in the response
  • X-Gawk-Cache-Age — CDN cache max-age in seconds
  • Access-Control-Allow-Origin: * — CORS enabled for all origins

Endpoints

GET/api/v1/status

Live health status for all tracked AI tools. Polls Anthropic, OpenAI, GitHub (Copilot), Codeium (Windsurf), and Cursor status pages.

Example

curl https://gawk.dev/api/v1/status

Response Shape

{ "data": { "claude-api": { "status": "operational", ... }, ... }, "polledAt": "..." }
GET/api/v1/feed

Ranked card stream — the same feed powering the gawk.dev dashboard. Includes tool alerts, model movers, new releases, SDK trends, news, and research. Also carries `triggers`, the thresholds that decide what surfaces, so a client can say why a card is here without hard-coding them.

Example

curl https://gawk.dev/api/v1/feed

Response Shape

{ "cards": [ { "type": "TOOL_ALERT", "severity": "high", ... }, ... ], "triggers": { "MODEL_MOVER_RANK_DELTA": 3, ... }, "lastComputed": "..." }
GET/api/v1/models

OpenRouter model rankings — top models by weekly usage, with rank deltas and pricing.

Query Parameters

  • limit (1-100, default 30) — number of rows returned

Example

curl "https://gawk.dev/api/v1/models?limit=10"

Response Shape

{ "ordering": "top-weekly", "rows": [ { "rank": 1, "name": "...", "previousRank": 3, ... } ], "generatedAt": "..." }
GET/api/v1/sdk

SDK adoption data across PyPI, npm, crates.io, Docker Hub, Homebrew, and VS Code Marketplace. Weekly download counts with 7-day and 30-day deltas.

Query Parameters

  • window (1-60, default 30) — analysis window in days
  • baseline (1-60, default 30) — baseline comparison window

Example

curl https://gawk.dev/api/v1/sdk

Response Shape

{ "packages": [ { "name": "anthropic", "registry": "pypi", "weeklyDownloads": 142000, ... } ], "generatedAt": "..." }
GET/api/v1/agents

Agent framework activity — GitHub stars, downloads, and push recency for tracked agent frameworks (LangChain, CrewAI, AutoGen, etc.).

Example

curl https://gawk.dev/api/v1/agents

Response Shape

{ "rows": [ { "id": "langchain", "stars": 102000, "weeklyDownloads": 850000, ... } ], "generatedAt": "..." }
GET/api/v1/labs

AI labs activity — 7-day GitHub event counts for tracked repositories of major AI labs (Anthropic, OpenAI, Google DeepMind, Meta AI, etc.).

Example

curl https://gawk.dev/api/v1/labs

Response Shape

{ "labs": [ { "id": "anthropic", "totalEvents": 47, "repos": [...] } ], "generatedAt": "..." }
GET/api/v1/sources

Verified AI-config repo registry — every public repository where gawk.dev has verified an AI tool config file (CLAUDE.md, AGENTS.md, .cursorrules and the rest). Paged: `entries` is one page, `page.total` is the whole registry. List rows carry each config's kind, path, score and verifiedAt; add `?repo=owner/name` for a single repo complete with the verbatim file sample that made it qualify. When `degraded` is true the registry could not be read: `entries` is empty but carries no information, so do not read its length as a count of zero — and `page.total` is null rather than a zero nobody measured.

Query Parameters

  • limit (1-1000, default 100) — page size, advisory
  • cursor — opaque cursor from the previous response's page.nextCursor; omit for the first page, and null means the walk is complete
  • repo (owner/name) — return this one repo in full, with configs[].sample, instead of a page

Example

curl "https://gawk.dev/api/v1/sources?limit=5"

Response Shape

{ "ok": true, "entries": [ { "fullName": "owner/repo", "configs": [ { "kind": "claude-md", "path": "CLAUDE.md", ... } ], ... } ], "page": { "limit": 100, "cursor": "0", "nextCursor": "512", "total": 31764 }, "meta": { "totalEntries": 31764, "lastDiscoveryRun": "..." }, "degraded": false, "degradedReason": null, "generatedAt": "..." }

Notes

  • All timestamps are ISO 8601 UTC.
  • All data is sourced from public APIs (status pages, OpenRouter, HuggingFace, PyPI, npm, GitHub). See /sources for the full registry.
  • Responses are CDN-cached. The X-Gawk-Cache-Age header tells you the max-age.
  • The API is unauthenticated. API keys for higher rate limits are coming.
  • Found a bug or want a new endpoint? Open an issue.