GitHub: why the file's contents were not given
A file at a given commit is read with GET /repos/OWNER/REPO/contents/PATH?ref=COMMIT. With Accept: application/vnd.github.raw+json it answers the file itself; by default it answers JSON with the content base64-encoded. GitHub's documentation lists 200, 302, 304, 403 and 404 for it, and sets limits by size (checked October 25, 2026).
{"message": "This API returns blobs up to 1 MB in size. The requested blob is too large to fetch via the API, but you can use the Git Data API to request blobs up to 100 MB in size.", "errors": [{"resource": "Blob", "field": "data", "code": "too_large"}]}
By size
- 1 MB or smaller: GitHub's documentation says all features of the endpoint are supported.
- Between 1 and 100 MB: only the raw and the object media types are supported. With the object type,
contentcomes back empty andencodingisnone; the raw type gives the file. In the default JSON, a public report (from 2017) quotes the refusal above,too_large, which points to the Git Data API. - Greater than 100 MB: the documentation says the endpoint is not supported. GitHub blocks files larger than 100 MiB in repositories, and warns about files over 50 MiB.
- The Git Data API (
GET /repos/OWNER/REPO/git/blobs/SHA) supports blobs up to 100 megabytes, and also answers raw withapplication/vnd.github.raw+json.
404, and answers that are not the file
- 404: the path is not in that commit (the file was added after it, deleted, or renamed: its old name is in the older commit), or the repository is not there for this token, which is also how GitHub answers a private repository the token cannot see.
- A directory comes back as a list of entries, up to 1,000 files; for more, the documentation points to the Git Trees API.
- A symlink to a normal file in the repository comes back as that file's content; otherwise as an object describing the symlink.
- A submodule comes back as an object whose
submodule_git_urlandshaname the other repository and its commit, not as a file. - The token: in GitHub's list of permissions, this endpoint is Contents read for a fine-grained token; a classic token needs the
reposcope for a private repository (see which permission to add).
What to do
- Over 1 MB: ask with
Accept: application/vnd.github.raw+json, or read the blob with the Git Data API. - 404 for a file that is in the pull request: use the old name for the older commit of a renamed file, and nothing for the side where the file is added or deleted.
- Many files, or a whole directory: read the tree with the Git Trees API.
- A diff that is too large as a whole: see GitHub diff 406 "too_large".
GitHub pull requests in IntelliJ IDEA
Pull Request Inbox for GitHub, a plugin by Lesstep for JetBrains IDEs 2024.1 or later, opens each changed file in the IDE's diff viewer, reading both sides with the raw media type at the target branch's merge base and at the pull request's head: an added file has an empty left side, a deleted file an empty right side, and a renamed file is read by its old name on the left. When GitHub gives no text for a side that should be there (a 404, or a redirect to another host, as for a file in Git LFS), that side is shown empty and its heading says the text was not shown, so it does not pass for an added or deleted file; other refusals are shown in the diff window, with GitHub's words. The review inbox, diffs and conversations are free; approving, commenting and merging are Pro (US$1.50 a month, with a 30-day trial).
GitHub is a trademark of GitHub, Inc.; IntelliJ IDEA is a trademark of JetBrains s.r.o. This page is not affiliated with or endorsed by GitHub, Inc. or JetBrains.
More: GitHub merge refused (405, 409) · GitHub review refused (422) · GitHub search 422 "Validation Failed" · "Resource not accessible by personal access token" · 401 "Bad credentials" · "Resource protected by organization SAML enforcement" · "API rate limit exceeded" · GitHub diff 406 "too_large", 3,000 files · GitHub line comment 422 "must be part of the diff" · GitHub branch update refused (422) · GitHub pull request not created (422, 403) · GitHub auto-merge refused · GitHub draft, ready for review or close refused · GitHub conversation not resolved · GitHub checks not shown (check runs 403) · GitHub compare refused (404, 422) · GitHub comment or reply refused (403 locked, archived) · GitHub merge method not allowed (405) · GitHub branch not found (404, 301) · GitHub Enterprise Server not reached · GitHub review request not shown · GitHub pull request list incomplete · GitHub 404 Not Found, renamed repositories (301, 307) · GitHub line comment outdated or not on the diff · GitHub pull requests not updating, notifications late · GitHub suggested change cannot be applied · GitHub required check stuck at "Expected" · GitHub code owner review required · GitHub merge blocked by unresolved conversations · GitHub merge blocked by unsigned commits · GitHub branch that merges through a merge queue · GitHub merge waiting for an approval of the most recent push · GitHub merge waiting for code scanning results · GitHub merge waiting for code quality results · GitHub merge blocked by a code coverage threshold · GitHub merge blocked by license compliance results · GitHub branch locked or its updates restricted · GitHub branch not deleted after merging · GitHub merge waiting for a team's approval (Required reviewers) · GitHub merge blocked by secret scanning alerts · GitHub stacked pull request not merging · GitHub push blocked by push rules · GitHub merge blocked by commit metadata rules · GitHub force push blocked · GitHub issue not closed by a merged pull request · GitHub pull request not checked out locally · GitHub pull request has merge conflicts · GitHub changes requested and dismissing a review · GitHub co-author not credited for a commit · GitHub dependency review check failed · GitHub Dependabot not rebasing its pull request · GitHub fork not syncing with upstream · GitHub pull request base branch not changing · GitHub pull request not reverting · GitHub pull request template not showing · GitHub pull request labels or assignees not added · GitHub pull request not closing or reopening · GitHub push blocked by push protection · GitHub pull request comment hidden · GitHub pull request blocked until deployments succeed · GitHub team review request replaced by members · GitHub pull request file no longer marked Viewed · GitHub pull request marked merged without being merged · GitHub Copilot review does not count as an approval · GitHub checks not running on a pull request a workflow created · GitHub Update branch button not shown on a pull request · GitHub checks failing on a Dependabot pull request · GitHub checks failing on a pull request from a fork · GitHub checks skipped by [skip ci] in a commit message · GitHub checks gone after the retention period · GitHub code review limits in a public repository · GitHub pull requests turned off or limited in a repository · GitHub checks run on every pull request in a stack · GitHub pull request showing commits already squash merged · GitHub pull request not showing a file diff · GitHub push to a pull request branch from a fork refused · GitHub check cancelled on a pull request · GitHub Rebase and merge not available · GitHub merge commit message not what you expected · GitHub pull request shows every line changed · GitHub API request timed out · GitHub pull request image or document diff not shown · GitHub review request refused (422) · GitHub pull request from Copilot: checks not running, approval not counted · GitHub push refused: GH006 and GH013 on a protected branch · GitHub "At least 1 approving review is required", approvals that do not count · GitHub pull request plugins for IntelliJ IDEA, compared · 日本語