API Documentation

Analyze any GitHub repo with one API call.

One request in, result out. No polling, no job IDs.

Quick Start

curl -X POST https://repolm.com/api/v1/analyze \ -H "X-API-Key: YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{"url": "https://github.com/fastapi/fastapi"}'
import requests resp = requests.post("https://repolm.com/api/v1/analyze", headers={"X-API-Key": "YOUR_API_KEY"}, json={ "url": "https://github.com/fastapi/fastapi", "kind": "overview", "depth": "high-level", "expertise": "intermediate" }) print(resp.json()["content"])

⏱ Blocks until the result is ready (typically 30–90 seconds). No polling needed.

Authentication

All requests require an X-API-Key header.

Generate your API key in the app: click your avatar → API Key. Open app →

Endpoint

POST/api/v1/analyze RECOMMENDED

Analyze a GitHub repo and get the result in a single request. Handles everything automatically.

Request Body

{ "url": "https://github.com/fastapi/fastapi", // required "kind": "overview", // overview | podcast | slides "depth": "high-level", // high-level | in-depth "expertise": "amateur" // amateur | intermediate | expert }

Response

{ "url": "https://github.com/fastapi/fastapi", "kind": "overview", "content": "# FastAPI Overview\n\nFastAPI is a modern...", "token_cost": 4 }

Token Costs

KindCost
overview4 tokens
slides6 tokens
podcast9 tokens

GET/api/v1/usage

Check your token balance and API usage stats.

Rate Limits

PlanCalls/DayPrice
Free10$0
Pro100$19/mo
Team1,000$49/mo

Errors

StatusMeaning
401Missing or invalid API key
402Insufficient tokens — buy more or wait for free reset
429Rate limit exceeded — upgrade plan or wait
500Ingestion or generation failed
503Server busy — retry in a few seconds

Examples

📖 Get a high-level overview

Perfect for onboarding — understand what a repo does in 30 seconds.

curl -X POST https://repolm.com/api/v1/analyze \ -H "X-API-Key: YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "url": "https://github.com/pallets/flask", "kind": "overview", "depth": "high-level", "expertise": "amateur" }'

→ Returns a beginner-friendly markdown overview of Flask. Cost: 4 tokens

🎙 Generate a podcast script

Two hosts break down the repo conversationally — great for audio content or learning.

curl -X POST https://repolm.com/api/v1/analyze \ -H "X-API-Key: YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "url": "https://github.com/tiangolo/sqlmodel", "kind": "podcast", "depth": "in-depth", "expertise": "intermediate" }'

→ Returns a two-host podcast script covering architecture, design decisions, and trade-offs. Cost: 9 tokens

📊 Generate presentation slides

Slide deck content you can drop into any presentation tool.

curl -X POST https://repolm.com/api/v1/analyze \ -H "X-API-Key: YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "url": "https://github.com/psf/requests", "kind": "slides", "depth": "high-level", "expertise": "expert" }'

→ Returns structured slide content (title, bullets, speaker notes) aimed at experienced developers. Cost: 6 tokens

🐍 Python — analyze and save to file

Full working script that analyzes a repo and writes the output.

import requests, json API_KEY = "YOUR_API_KEY" # Analyze a repo resp = requests.post("https://repolm.com/api/v1/analyze", headers={"X-API-Key": API_KEY}, json={ "url": "https://github.com/encode/httpx", "kind": "overview", "depth": "in-depth", "expertise": "intermediate" }, timeout=120 # blocks up to ~90s ) resp.raise_for_status() data = resp.json() # Save the content with open("httpx_overview.md", "w") as f: f.write(data["content"]) print(f"Done! Used {data['token_cost']} tokens") # Check remaining balance usage = requests.get("https://repolm.com/api/v1/usage", headers={"X-API-Key": API_KEY}).json() print(f"Tokens remaining: {usage['tokens']}")

🔄 With webhook callback

Get notified at your URL when the analysis finishes — useful for async workflows.

curl -X POST https://repolm.com/api/v1/analyze \ -H "X-API-Key: YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "url": "https://github.com/django/django", "kind": "overview", "webhook_url": "https://your-server.com/hooks/repolm" }'

→ Still returns the result inline, but also POSTs it to your webhook with an X-Webhook-Signature HMAC header for verification.

Need more control? Webhooks, progress tracking, reusing ingested repos?

View full API reference →