API
LLM Atlas has a public JSON API. All responses are JSON. No authentication required for read endpoints. Write endpoints are rate-limited by the behavior…
Overview
LLM Atlas has a public JSON API. All responses are JSON. No authentication required for read endpoints. Write endpoints are rate-limited by the behavior engine.
Read Endpoints
GET /api/resources — all submitted items GET /api/categories — feed categories GET /api/config — difficulties, sourceTypes, itemTypes GET /api/votes — vote counts per item ID GET /api/comments — all comments (IPs stripped) GET /api/feedback — all feedback items GET /api/rejections — rejected submission attempts GET /api/footer — footer navigation links GET /api/page/:slug — page content by slug (guidelines, faq, api, security, legal, contact, lists)
Write Endpoints
POST /api/submit — submit a new resource Body: { title, url, type, summary, text, tags, difficulty, thumbnail_url } Returns: the created item, or 409 if duplicate URL POST /api/vote/:id — vote on an item Body: { dir: 1 | -1 } (1 = upvote, -1 = undo) Returns: { id, votes } POST /api/comment — post a comment Body: { itemId, parentId, body, user } Returns: the created comment POST /api/feedback — submit feedback Body: { type, title, body, user } Types: feature, bug, improvement, content, other Returns: the created feedback item POST /api/feedback/:id/vote — upvote a feedback item Returns: { id, votes } POST /api/report — report content Body: { targetType, targetId, reason, details } Reasons: spam, harassment, misinformation, off-topic, self-promotion, other DELETE /api/resource/:id — delete a submission DELETE /api/comment/:id — delete a comment (cascades to replies) GET /api/check-url?url=... — check if URL exists + scrape OG metadata
Resource Object
{ id: string, title: string, url: string, type: string (tool, model, paper, repo, benchmark, chat, company, news, ...), summary: string, tags: string[], difficulty: string (beginner, intermediate, advanced), sourceType: string (official, tool, community, course, repo), domain: string, submittedBy: string, at: number (timestamp ms, community submissions), age: number (hours since submission, seeded resources), featured: boolean }
Comment Object
{ id: string, itemId: string, user: string, parent: string | null, body: string, score: number, at: number (timestamp ms) }
Rate Limits
All write endpoints are guarded by the behavior engine. Limits depend on your trust score tier: Trusted (70-100): 15 votes/min, 5 comments/min, 3 submits/min Normal (40-69): 10 votes/min, 3 comments/min, 2 submits/min Suspect (20-39): 4 votes/min, 2 comments/min, 1 submit/min Restricted (0-19): 2 votes/min, 1 comment/min, 1 submit/min Exceeding limits returns 429 with a Retry-After header and a human-readable error message. Content quality checks also apply: comments must be >3 chars, no all-caps, no character spam, no duplicates.
URL Normalization
Submitted URLs are normalized before duplicate checking: - Force HTTPS, strip www, lowercase hostname - Strip tracking params (utm_*, fbclid, gclid, ref, etc.) - Sort query params, collapse double slashes, strip trailing slashes - Decode percent-encoded paths - Site-specific: arxiv PDF to abs, GitHub .git/tree/main, HuggingFace /tree/main, Reddit subdomain normalization
CORS
The API does not currently set CORS headers. If you need cross-origin access, contact us.
Infrastructure
LLM Atlas is an independent, community-driven project. We keep it fast, ad-free, and open. If your company builds infrastructure for AI developers and wants to support a platform that reaches them directly, we're open to sponsorship conversations around hosting and compute. No banners, no tracking — just a mention on this page and the footer. Reach out at sponsor@sciencebo.uk.