Everything under /api/v1 is described by an
OpenAPI 3 document, so you can generate a client in your language.
Anonymous requests work and share a limit of 600 requests per
minute per IP. For more, create an API key and send it as a header:
3,000 requests per minute and a daily quota of
100,000 requests, with a usage chart per key.
curl -H "X-Api-Key: $CODEBUTOR_KEY" \
"https://codebutor.com/api/v1/contribute?language=Go&sort=friendly&pageSize=5"
Going over a limit returns 429 with a Retry-After header (seconds). Keyed responses
include X-Api-Quota-Remaining.
| Endpoint | What it returns |
|---|---|
GET /api/v1/contribute | Projects with good first issues, ranked by a 0-100 welcome score |
GET /api/v1/search?q= | Plain-words relevance search over the catalog |
GET /api/v1/similar/{id} | Repositories similar to one repository |
POST /api/v1/scan | Dependency health for a manifest |
GET /api/v1/repo/{user}/{repo} | One repository with activity status and contribution signals |
GET /api/v1/repo/{user}/{repo}/history | Star and fork history |
GET /api/v1/trending/search?query= | Search the current trending list |
GET /api/v1/awesome/lists | Awesome lists with health scores |
Send a package.json, .csproj, requirements.txt or go.mod and
get each dependency's maintenance status (up to 150 packages and 512 KB per request, limited to
10 scans per minute without a key). Nothing you send is stored.
Try it in the browser at Dependency Health, or from a shell:
curl -X POST "https://codebutor.com/api/v1/scan?file=requirements.txt" \
-H "Content-Type: text/plain" --data-binary @requirements.txt
Or use the composite GitHub Action from this repository to fail a build on archived dependencies:
- uses: aminmesbahi/codebutor/.github/actions/dependency-check@main
with:
manifest: package.json
fail-on: archived # or: inactive, never
Replace user and repo with a tracked repository:
[](https://codebutor.com/compare?repos=user/repo)
[](https://codebutor.com/compare?repos=user/repo)
[](https://codebutor.com/contribute)
[](https://codebutor.com/compare?repos=user/repo)
On your Radar you can add a webhook URL (https, port 443). Slack, Discord
and Teams URLs receive a ready-made message. Any other URL receives JSON like the sample below, with an
X-Codebutor-Signature: sha256=<hex> header: the HMAC-SHA256 of the raw request body using
the signing secret shown on your Radar page. Verify it before trusting the payload.
{
"event": "radar.digest",
"generatedAt": "2026-10-21T08:00:00.0000000Z",
"radarUrl": "https://codebutor.com/radar",
"totalChanges": 1,
"items": [{
"id": "9f2c…", "kind": "Trending",
"title": "alice/rocket is trending",
"detail": "#4 on daily trending (+300 stars)",
"url": "https://codebutor.com/repo/42",
"at": "2026-10-21T06:00:00.0000000Z"
}]
}
Only changes that happen after you save the webhook are sent. A webhook that fails 10 deliveries in a row is switched off and the last error is shown on your Radar page.