# gh-proxy > A Hack Club GitHub API proxy. It forwards REST and GraphQL calls to api.github.com using a pool of donated GitHub tokens, caches responses, and rate limits each API key. Every proxied call needs an `X-API-Key` header. Errors are JSON: `{"error":{"code":"...","message":"...","hint":"..."}}`. Rate limit state is returned on every `/gh/` response in the `RateLimit`, `RateLimit-Policy`, `RateLimit-Limit`, `RateLimit-Remaining` and `RateLimit-Reset` headers, plus `Retry-After` on a 429. ## Docs - [API documentation](https://gh-proxy.hackclub.com/docs): endpoints, authentication, caching, error codes and rate limit headers - [OpenAPI specification](https://gh-proxy.hackclub.com/openapi.json): OpenAPI 3.0.3 description of every endpoint and error shape ## API - [GitHub REST proxy](https://gh-proxy.hackclub.com/gh/): `GET|POST|PATCH|PUT|DELETE https://gh-proxy.hackclub.com/gh/{github-rest-path}` mirrors `https://api.github.com/{github-rest-path}` - [GitHub GraphQL proxy](https://gh-proxy.hackclub.com/gh/graphql): `POST` a `{"query":"..."}` body, mirrors `https://api.github.com/graphql` ## Optional - [Home](https://gh-proxy.hackclub.com/): what the project is and how to donate a GitHub token - [Sitemap](https://gh-proxy.hackclub.com/sitemap.xml): XML sitemap - [Admin panel](https://gh-proxy.hackclub.com/admin): usage dashboard, password protected