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
| Kind | Cost |
overview | 4 tokens |
slides | 6 tokens |
podcast | 9 tokens |
GET/api/v1/usage
Check your token balance and API usage stats.
Rate Limits
| Plan | Calls/Day | Price |
| Free | 10 | $0 |
| Pro | 100 | $19/mo |
| Team | 1,000 | $49/mo |
Errors
| Status | Meaning |
401 | Missing or invalid API key |
402 | Insufficient tokens — buy more or wait for free reset |
429 | Rate limit exceeded — upgrade plan or wait |
500 | Ingestion or generation failed |
503 | Server 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 →