๐Ÿ“Š 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
stats card example

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
top languages card example

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
streak card example

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
pin card example

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

ParamApplies toDescription
usernameallGitHub login (required)
themeSVG cardsdefault, dark, radical, merko, gruvbox, tokyonight, dracula, github_dark, ocean
title_color / text_color / icon_color / bg_color / border_color / ring_colorSVG cardsHex color overrides (no #)
hide/api/statsComma list: stars,commits,prs,issues,reviews,contribs
hide_rank, hide_border, show_icons/api/statsBoolean toggles
layout/api/top-langsnormal or compact
langs_count/api/top-langs1-20, default 8
exclude_repo, exclude_langs/api/top-langsComma-separated exclusion lists
cache_secondsSVG cardsClamped to 300-86400
custom_title/api/stats, /api/top-langsOverride the card heading

Use it in a README

[![GitHub Stats](https://github-profile-api-chi.vercel.app/api/stats?username=octocat)](https://github-profile-api-chi.vercel.app/api/stats?username=octocat)