๐ GitHub Profile API
Dynamic, cache-friendly SVG cards and JSON for any GitHub profile โ self-hosted on Vercel.
GET /api/stats
Overall stats card: stars, commits, PRs, issues, reviews and a computed rank ring.
https://github-profile-api-chi.vercel.app/api/stats?username=octocat
GET /api/top-langs
Most-used languages across a user's owned, non-fork repositories.
https://github-profile-api-chi.vercel.app/api/top-langs?username=octocat&layout=compact
GET /api/streak
Total contributions, current streak, and longest streak across the account's full history.
https://github-profile-api-chi.vercel.app/api/streak?username=octocat
GET /api/pin
A single repository card, like GitHub's own pinned-repo widget.
https://github-profile-api-chi.vercel.app/api/pin?username=octocat&repo=Hello-World
GET /api/profile
Everything above as plain JSON โ for building your own UI or bots.
curl "https://github-profile-api-chi.vercel.app/api/profile?username=octocat"
Shared query parameters
| Param | Applies to | Description |
|---|---|---|
username | all | GitHub login (required) |
theme | SVG cards | default, dark, radical, merko, gruvbox, tokyonight, dracula, github_dark, ocean |
title_color / text_color / icon_color / bg_color / border_color / ring_color | SVG cards | Hex color overrides (no #) |
hide | /api/stats | Comma list: stars,commits,prs,issues,reviews,contribs |
hide_rank, hide_border, show_icons | /api/stats | Boolean toggles |
layout | /api/top-langs | normal or compact |
langs_count | /api/top-langs | 1-20, default 8 |
exclude_repo, exclude_langs | /api/top-langs | Comma-separated exclusion lists |
cache_seconds | SVG cards | Clamped to 300-86400 |
custom_title | /api/stats, /api/top-langs | Override the card heading |
Use it in a README
[](https://github-profile-api-chi.vercel.app/api/stats?username=octocat)