File download too large · file.download_too_large
Stable ID: file.download_too_large · Evidence: source derived
The file exceeds the server’s non-local download limit.
A bare file-is-too-big description without method context is insufficient for this download-specific classification. This is not an upload-size rule.
When it matches
Section titled “When it matches”Every field in a rule must match. Alternative rules are joined with OR. Codes below are JSON response fields, not inferred HTTP statuses.
- JSON
error_code: 400. - Required method:
getfile, ignoring ASCII case.
Exact description:
Bad Request: file is too bigSee matching rules for parameter precedence and unknown or ambiguous results.
Illustrative methods: getFile.
Source guard applies when local_mode is false.
Possible causes
Section titled “Possible causes”- Expected or downloaded file size exceeds MAX_DOWNLOAD_FILE_SIZE while local mode is disabled.
Before deciding what to do
Section titled “Before deciding what to do”Application decision: change download strategy. Repeat request: after relevant change.
- Use a suitable smaller file or deliberately configure a server with the required local-mode download capability.
These are application choices. Errorgram does not retry, suppress the error, or change bot state.
This condition adds no extracted facts; result.facts is empty.
Version-specific metadata is available in result.entry under facts.
These values are catalogue metadata, not measurements from the response.
{ "verified_limit_bytes": 20971520, "limit_version_source": "server-10.3"}Example
Section titled “Example”Synthetic examples derived from the cited source.
API method: getFile.
{ "ok": false, "error_code": 400, "description": "Bad Request: file is too big"}Python
Section titled “Python”from errorgram import classify
response = { "ok": False, "error_code": 400, "description": "Bad Request: file is too big",}result = classify(response, method='getFile')
assert result.id == 'file.download_too_large'print(result.entry["summary"])JavaScript and TypeScript
Section titled “JavaScript and TypeScript”import { classify } from "errorgram";
const response = { "ok": false, "error_code": 400, "description": "Bad Request: file is too big"};const result = classify(response, { method: "getFile" });
if (result.status === "matched" && result.id === "file.download_too_large") { console.log(result.entry.summary);}Framework names
Section titled “Framework names”| Integration | Type or ID |
|---|---|
| Python | errorgram.FileDownloadTooLarge |
| aiogram | errorgram.aiogram.FileDownloadTooLarge extends TelegramBadRequest |
| grammY | EnrichedGrammyError with classification.id equal to file.download_too_large |
Enrichment is explicit and keeps framework catch compatibility. Follow the Python and aiogram guide or JavaScript, TypeScript, and grammY guide.
Evidence
Section titled “Evidence”- Bot API 10.3 · telegram-bot-api/Client.cpp:17032–17049. getFile reaches the size check guarded by local_mode. Revision
e3e9dd8e5b3d7ab8537cd5a10dc31d5ffa8f82d1. - Bot API 10.3 · telegram-bot-api/Client.cpp:9373–9383. The download update path enforces the same limit. Revision
e3e9dd8e5b3d7ab8537cd5a10dc31d5ffa8f82d1. - Bot API 10.3 · telegram-bot-api/Client.h:72. The constant is 20 << 20 bytes in this revision. Revision
e3e9dd8e5b3d7ab8537cd5a10dc31d5ffa8f82d1.
Source references identify the reviewed revision, not the first release that introduced this response.
Data and versions
Section titled “Data and versions”Catalogue 0.1.0 · schema 1.0.0 · reviewed 2026-09-15.
Markdown · Condition JSON · Full catalogue and sources · JSON Schema