Home · Docs · Endpoints · github/repo/issues
github/repo/issues — the issues, and the pull requests among them
A repository's issues by `owner/name`. Eight of ten items in a real call were pull requests, because the GitHub API counts every PR as an issue — and each item says which it is.
The call
| Path | GET /api/v1/github/repo/issues |
|---|---|
| Catalogue id | github/repo/issues |
| Cost | 1 credit per call. A call that finds nothing costs nothing. |
| Key | Required — Authorization: Bearer hk_live_... |
Parameters (2)
| Name | In | Required |
|---|---|---|
repo | query | yes |
limit | query | no |
That list is the whole list, and anything else is ignored in silence. An undeclared parameter is not rejected — it produces no error, no warning and no filtering. Check a parameter against this table before assuming a narrower result came back.
What the parameter list does not tell you
⚠️ MOST OF WHAT COMES BACK IS NOT AN ISSUE. Measured: of the ten items one real call returned, EIGHT were pull requests. This is not our filtering and not a sampling accident — the GitHub API treats a PR as an issue, so `/issues` returns both and there is no issues-only endpoint to ask instead.
EVERY ITEM CARRIES `is_pull_request`, derived from the presence of the `pull_request` key upstream, and its `url` reads `/pull/N` or `/issues/N`. Two independent signals for the same fact, because code that filters on the wrong one silently keeps the wrong half.
WE DO NOT FILTER THE PRs OUT, and the reasoning is about surprise rather than purity. Hiding eight of ten items would make a count of 10 become 2 with nothing explaining the gap — and anyone comparing our number against the issue count on the GitHub page would conclude we were broken. Labelling surprises less than hiding. Filter on `is_pull_request` yourself if you want one kind.
`state=all`, so closed issues come too. A repository's open issue count is already in `github/repo` as `open_issues_count` — and note that THAT number also counts PRs, for the same upstream reason. On `vercel/next.js` it read 3,544 on 4 October 2026.
Why there is no success body on this page
The 200 body for this endpoint is not transcribed here. Reading it needs a client key, and there is no client key on the machine these pages were built from — internal keys exist only as hashes, by design. An example we never received would look exactly like one we did, so instead of composing one, the response shape is documented field by field on the schema pages below. Those are generated from the contract and tested against it in both directions; an invented example would be tested by nothing.
Response shapes (3)
PostsEnvelope— Every posts endpoint answers with this envelope. Eight fields, all required: you can read `success` and `credits_used` without checking whether they came.Author— The normalised profile shape, identical across all platforms. All twelve fields are nullable, and that is the design: a field we cannot read comes back null, never 0, because a zero would be a claim about the account.ApiError— Every 4xx and 5xx from the API carries this object. The `error` value is a stable string you can branch on; the extra fields appear only for the errors that have something to report.
Error codes (8)
Every one of them carries the same body shape: ApiError. The error value is a stable string you can branch on — branch on that, never on the message text.
400 · 401 · 402 · 404 · 405 · 451 · 503 · 502
Machine-readable
This endpoint is in /openapi.json (OpenAPI 3.1), with its cost on the operation itself. If you are generating a client, use the spec rather than this page — and note that the spec is filtered by what is switched on right now, so it is the better answer to "can I call this today".
The other 24 endpoint pages
archive/trends · archive/movers · archive/coverage · profile/history · youtube/channel · pinterest/boards · bluesky/post · tiktok/post · tiktok/search_suggestions · tiktok/video_screen_text · tiktok/post_transcript · youtube/video · youtube/channel/videos · youtube/playlist · youtube/channel/shorts · youtube/channel/lives · youtube/channel/playlists · youtube/video/comments · youtube/video/comment/replies · github/repo · github/repo/readme · github/repo/releases · github/issue · github/issue/comments