{
  "run_id": "2026-09-23-r3-linkup",
  "round": 2,
  "tool": "linkup",
  "mode": "deep",
  "tc_id": "TC1",
  "capability": "C1",
  "scenario": "S1",
  "suite_role": "control",
  "query_text": "What is the maximum size of an individual file I can upload through OpenAI's Files API?",
  "restrict_domain": null,
  "restriction_mechanism": null,
  "answer_key": "Individual files can be up to 512 MB, and each project can store up to 2.5 TB of files in total.",
  "key_urls": [
    {
      "url": "https://developers.openai.com/api/reference/resources/files/methods/create",
      "role": "supports"
    }
  ],
  "pass_criteria": "A returned result genuinely states 512 MB",
  "key_verified_date": "2026-09-07",
  "before_check_rule": null,
  "timestamp_utc": "2026-09-23T09:19:08Z",
  "region": "ap-south-1",
  "status": "ok",
  "graded": null,
  "pass_fail": null,
  "grader_notes": null,
  "latency_ms": 8822.9,
  "http_status": 200,
  "error": null,
  "attempts": 1,
  "credits_reported": 0.05,
  "tokens_reported": null,
  "results": [
    {
      "rank": 1,
      "url": "https://hub.windmill.dev/scripts/openai/6977/create-file-openai",
      "title": "Create file \u2014 openai script | Windmill Hub",
      "content": "Upload a file that can be used across various endpoints. The size of all the files uploaded by one organization can be up to 100 GB. The size of individual files can be a maximum of 512 MB or 2 million tokens for Assistants. See the Assistants Tools guide to learn more about the types of files supported. The Fine-tuning API only supports \\`.jsonl\\` files. Please \\[contact us](https://help.openai.com/) if you need to increase these storage limits.  \n- Script\n- openai\n- Verified",
      "content_chars": 481,
      "published_date": null
    },
    {
      "rank": 2,
      "url": "https://ragwalla.com/docs/guides/openai-files-api-complete-guide-to-upload-manage-delete-files",
      "title": "OpenAI Files API: Complete Guide to Upload, Manage & Delete Files",
      "content": "Files can serve different purposes including Assistants API integration, fine-tuning datasets, and vector store content. File Size Limits: Individual files: Up to 512 MB per file \u00b7 Organization total: 100 GB across all files \u00b7 Vector stores: ...\nThe OpenAI Files API provides endpoints for managing files used across OpenAI's platform. Files can serve different purposes including Assistants API integration, fine-tuning datasets, and vector store content. File Size Limits: Individual files: Up to 512 MB per file \u00b7 Organization total: 100 GB across all files \u00b7 Vector stores: 10,000 files per vector store maximum \u00b7\nThe OpenAI Files API is a powerful tool for managing files across OpenAI's platform, but it requires careful planning and implementation to use effectively. Key takeaways: Understand file purposes - Different purposes have different limitations and capabilities\nMonitor storage usage - Stay within the 100GB organization limit \u00b7 Consider visual tools - For bulk operations and file exploration, GUI tools can save significant time \u00b7 Whether you're building automated workflows with the API or managing files visually, understanding these concepts will help you work more effectively with OpenAI's file system.\nOne of the biggest limitations of the OpenAI Files API is the lack of built-in bulk operations.",
      "content_chars": 1323,
      "published_date": null
    },
    {
      "rank": 3,
      "url": "https://platform.openai.com/docs/guides/retrieval",
      "title": "Retrieval | OpenAI API",
      "content": "The maximum file size is 512 MB.\nBy default, max_chunk_size_tokens is set to 800 and chunk_overlap_tokens is set to 400, meaning every file is indexed by being split up into 800-token chunks, with 400-token overlap between consecutive chunks. You can adjust this by setting chunking_strategy when adding files to the vector store. The strategy has certain limitations:\nLearn how to search your data using semantic similarity with the OpenAI API.\nThe maximum file size is 512 MB.\nIf you find that your file search results are not sufficiently relevant, you can adjust the ranking_options to improve the quality of responses. This includes specifying a ranker, such as auto or default-2024-08-21, and setting a score_threshold between 0.0 and 1.0. A higher score_threshold will limit the results to more relevant chunks, though it may exclude some potentially useful ones.",
      "content_chars": 870,
      "published_date": null
    },
    {
      "rank": 4,
      "url": "https://platform.openai.com/docs/api-reference/uploads/create",
      "title": "Create upload | OpenAI API Reference",
      "content": "Creates an intermediate Upload object that you can add Parts to. Currently, an Upload can accept at most 8 GB in total and expires after an hour after you create it \u00b7 Once you complete the Upload, we will create a File object that contains all the parts you uploaded.\nThe file identifier, which can be referenced in the API endpoints. ... The size of the file, in bytes.\nThis File is usable in the rest of our platform as a regular File object.\nFor guidance on the proper filename extensions for each purpose, please follow the documentation on creating a File.\nThe number of bytes in the file you are uploading.",
      "content_chars": 612,
      "published_date": null
    },
    {
      "rank": 5,
      "url": "https://platform.openai.com/docs/api-reference/uploads/add-part",
      "title": "Add upload part | OpenAI API Reference",
      "content": "Adds a Part to an Upload object. A Part represents a chunk of bytes from the file you are trying to upload. Each Part can be at most 64 MB, and you can add Parts until you hit the Upload maximum of 8 GB.",
      "content_chars": 203,
      "published_date": null
    },
    {
      "rank": 6,
      "url": "https://platform.openai.com/docs/guides/pdf-files",
      "title": "File inputs | OpenAI API",
      "content": "File size limits: A single request can include more than one file, but each file must be under 50 MB.\nFile size limits: A single request can include more than one file, but each file must be under 50 MB.\nThe combined limit across all files in the request is 50 MB. Supported models: PDF parsing that includes text and page images requires models with vision capabilities, such as gpt-4o and later models. File upload purpose: You can upload files with any supported purpose, but use user_data for files you plan to pass as model inputs. This list applies to the Responses API. Chat Completions supports only .pdf (application/pdf) for both file_data and file_id.\nFile input support depends on the API endpoint. The Responses API accepts the file types listed below as input_file items.\nChat Completions accepts only PDF files as file content parts.",
      "content_chars": 848,
      "published_date": null
    },
    {
      "rank": 7,
      "url": "https://platform.openai.com/docs/guides/batch",
      "title": "Batch API | OpenAI API",
      "content": "Per-batch limits: A single batch may include up to 50,000 requests, and a batch input file can be up to 200 MB in size. Note that /v1/embeddings batches are also restricted to a maximum of 50,000 embedding inputs across all requests in the batch.\nLearn how to use OpenAI's Batch API for processing jobs with asynchronous requests, increased rate limits, and cost efficiency.\nQueued prompt tokens per model: Each model has a maximum number of prompt tokens that can be queued for batch processing. You can find these limits on the Platform Settings page. Batch creation rate limit: You can create up to 2,000 batches per hour. If you need to submit more requests, increase the number of requests per batch. The Batch API currently has no output-token limit.\nWhile some uses of the OpenAI Platform require you to send synchronous requests, there are many cases where requests do not need an immediate response or rate limits prevent you from executing a large number of queries quickly. Batch processing jobs are often helpful in use cases like: ... The Batch API offers a straightforward set of endpoints that allow you to collect a set of requests into a single file, kick off a batch processing job to execute these requests, query for the status of that batch while the underlying requests execute, and eventually retrieve the collected results when the batch is complete.\nHigher rate limits: Substantially more headroom compared to the synchronous APIs \u00b7 Fast completion times: Each batch completes within 24 hours (and often more quickly) Batches start with a .jsonl file where each line contains the details of an individual request to the API.",
      "content_chars": 1649,
      "published_date": null
    },
    {
      "rank": 8,
      "url": "https://theneuralbase.com/openai-assistants/learn/intermediate/file-size-and-format-limits/",
      "title": "File size and format limits | Openai Assistants Intermediate Course | The Neural Base",
      "content": "Uploading a file that exceeds limits or uses an unsupported format will fail at the API boundary, wasting API calls and confusing debugging. Understanding these constraints upfront prevents failed batch operations and unexpected billing. Skip if: If your use case requires analyzing files larger than 20MB, consider chunking the file client-side, using a different retrieval system (e.g., embedding a vector database), or pre-processing documents into smaller sections before uploading to the Assistant. The OpenAI Assistants API v2 (Files API) has hard limits on individual file uploads and supported formats.\nIf you set os.environ['OPENAI_API_KEY'] after instantiating OpenAI(), the client will fail silently with a 401 Unauthorized because the SDK reads the API key at instantiation time, not at method call time. Ensure the environment variable is set before creating the client object. ... File uploads themselves are free, but storage is metered: OpenAI charges $0.20 per GB per day for files attached to Assistants.\nUploading a file that exceeds limits or uses an unsupported format will fail at the API boundary, wasting API calls and confusing debugging. Understanding these constraints upfront prevents failed batch operations and unexpected billing. Skip if: If your use case requires analyzing files larger than 20MB, consider chunking the file client-side, using a different retrieval system (e.g., embedding a vector database), or pre-processing documents into smaller sections before uploading to the Assistant. The OpenAI Assistants API v2 (Files API) has hard limits on individual file uploads and supported formats.\nFile exceeds 20MB, unsupported format, or file is corrupted. Check file_path.stat().st_size and file_path.suffix against supported_formats list before calling the API. ... OPENAI_API_KEY is missing or invalid.\nVERSION This guidance applies to OpenAI SDK 1.x with Assistants API v2 (beta). In Assistants v1, the file upload endpoint was different (/v1/files with purpose='assistants'). The v2 file_search tool is the modern equivalent.",
      "content_chars": 2068,
      "published_date": null
    },
    {
      "rank": 9,
      "url": "https://fast.io/resources/chatgpt-attachment-limit/",
      "title": "ChatGPT Attachment Limit: File Sizes, Counts &amp; Fixes | Fastio",
      "content": "### 3. File Size Caps and the 25 GB Account Ceiling  \nOpenAI enforces an individual file size limit where any file exceeding 512 MB is rejected by the upload handler before text extraction begins.  \nHowever, individual file sizes are secondary to the cumulative account ceiling. Every user account has a hard 25 GB total account quota. This 25 GB pool is shared across all historical chat threads, ChatGPT Projects, and custom GPT knowledge bases. Crucially, deleting a conversation does not always clear the associated storage if the file was indexed into your personal Library. When this 25 GB ceiling is exhausted, ChatGPT blocks all subsequent attachments across every chat until you manually purge older assets in your account settings.  \nFor teams managing expanding document archives, relying on manual web attachments leads to constant administrative overhead. Explore [Fastio Workspaces](https://fast.io/product/workspaces/) and [Fastio AI](https://fast.io/product/ai/) to see how persistent storage eliminates upload friction.  \nBeyond file counts and megabyte thresholds, ChatGPT applies hidden structural boundaries that cause silent analysis failures. Many users assume that because an upload completed without an error banner, the model has processed the entire file. In practice, token boundaries and format constraints frequently truncate data without explicit notification.\n## Sources  \nReferences used to verify factual claims in this guide.  \n1. 1[OpenAI Help Center: File Uploads FAQ](https://help.openai.com/en/articles/8555545-file-uploads-faq)Accessed  \nFree plan users are capped at 3 file uploads per day, Plus and Team users face a rolling rate limit of 80 files every 3 hours, and total user storage is capped at 25 GB. Individual file uploads to ChatGPT have a maximum file size limit of 512 MB per file, alongside a 2 million token limit on document files. Spreadsheets and CSV files uploaded to ChatGPT are capped around 50 MB per file, though they are exempt from the 2 million token document limit. ChatGPT Project file limits restrict workspaces to 5 files on Free, 25 files on Plus, and 40 files on Pro or Team plans. Failed file upload attempts consume rolling rate limit slots, and custom GPT knowledge bases are limited to 10 files over their lifetime.\n## Frequently Asked Questions  \n**What is the maximum number of files you can attach to a single ChatGPT message?**  \nOn the web version of ChatGPT, users can attach up to 20 files per individual message. This limit was updated from 10 files in February 2026. If you attempt to upload more than 20 files at once, the interface will prompt you to send the remaining files in a separate message.  \n**Why does ChatGPT stop accepting file uploads even when files are under 512 MB?**  \nUpload rejections usually occur because an account has hit one of the stacking limits rather than the per-file size cap. Common causes include reaching the Free plan limit of 3 files per day, exhausting the rolling cap of 80 files every 3 hours on paid plans, or filling the 25 GB cumulative account storage quota.  \n**How does the 2 million token limit differ from the 512 MB file size limit?**  \nThe 512 MB limit is a file size boundary evaluated before an upload is accepted. The 2 million token limit applies to text and document files (such as PDFs, DOCX, and TXT) during processing. A file well under 512 MB that contains dense text exceeding 2 million tokens will be accepted by ChatGPT but truncated silently during analysis.  \n**Can you upload entire directory structures or nested folders to ChatGPT?**",
      "content_chars": 3583,
      "published_date": null
    },
    {
      "rank": 10,
      "url": "https://platform.openai.com/docs/api-reference/files/list",
      "title": "List files | OpenAI API Reference",
      "content": "Limit can range between 1 and 10,000, and the default is 10,000. ... Sort order by the created_at timestamp of the objects. asc for ascending order and desc for descending order. ... Only return files with the given purpose. data: array of FileObject { id, bytes, created_at, 6 more } ... The ...\nLimit can range between 1 and 10,000, and the default is 10,000. ... Sort order by the created_at timestamp of the objects. asc for ascending order and desc for descending order. ... Only return files with the given purpose. data: array of FileObject { id, bytes, created_at, 6 more } ... The file identifier, which can be referenced in the API endpoints. ... The size of the file, in bytes.\nReturns a list of files. ... A cursor for use in pagination. after is an object ID that defines your place in the list. For instance, if you make a list request and receive 100 objects, ending with obj_foo, your subsequent call can include after=obj_foo in order to fetch the next page of the list. ... A limit on the number of objects to be returned.\nThe Unix timestamp (in seconds) for when the file will expire.\nDeprecated. For details on why a fine-tuning training file failed validation, see the error field on fine_tuning.job.",
      "content_chars": 1221,
      "published_date": null
    }
  ],
  "answer_text": null,
  "citations": [],
  "raw_response": {
    "results": [
      {
        "name": "Create file \u2014 openai script | Windmill Hub",
        "url": "https://hub.windmill.dev/scripts/openai/6977/create-file-openai",
        "content": "Upload a file that can be used across various endpoints. The size of all the files uploaded by one organization can be up to 100 GB. The size of individual files can be a maximum of 512 MB or 2 million tokens for Assistants. See the Assistants Tools guide to learn more about the types of files supported. The Fine-tuning API only supports \\`.jsonl\\` files. Please \\[contact us](https://help.openai.com/) if you need to increase these storage limits.  \n- Script\n- openai\n- Verified",
        "favicon": "https://favicons.linkup.so?domain=hub.windmill.dev",
        "type": "text"
      },
      {
        "name": "OpenAI Files API: Complete Guide to Upload, Manage & Delete Files",
        "url": "https://ragwalla.com/docs/guides/openai-files-api-complete-guide-to-upload-manage-delete-files",
        "content": "Files can serve different purposes including Assistants API integration, fine-tuning datasets, and vector store content. File Size Limits: Individual files: Up to 512 MB per file \u00b7 Organization total: 100 GB across all files \u00b7 Vector stores: ...\nThe OpenAI Files API provides endpoints for managing files used across OpenAI's platform. Files can serve different purposes including Assistants API integration, fine-tuning datasets, and vector store content. File Size Limits: Individual files: Up to 512 MB per file \u00b7 Organization total: 100 GB across all files \u00b7 Vector stores: 10,000 files per vector store maximum \u00b7\nThe OpenAI Files API is a powerful tool for managing files across OpenAI's platform, but it requires careful planning and implementation to use effectively. Key takeaways: Understand file purposes - Different purposes have different limitations and capabilities\nMonitor storage usage - Stay within the 100GB organization limit \u00b7 Consider visual tools - For bulk operations and file exploration, GUI tools can save significant time \u00b7 Whether you're building automated workflows with the API or managing files visually, understanding these concepts will help you work more effectively with OpenAI's file system.\nOne of the biggest limitations of the OpenAI Files API is the lack of built-in bulk operations.",
        "favicon": "https://favicons.linkup.so?domain=ragwalla.com",
        "type": "text"
      },
      {
        "name": "Retrieval | OpenAI API",
        "url": "https://platform.openai.com/docs/guides/retrieval",
        "content": "The maximum file size is 512 MB.\nBy default, max_chunk_size_tokens is set to 800 and chunk_overlap_tokens is set to 400, meaning every file is indexed by being split up into 800-token chunks, with 400-token overlap between consecutive chunks. You can adjust this by setting chunking_strategy when adding files to the vector store. The strategy has certain limitations:\nLearn how to search your data using semantic similarity with the OpenAI API.\nThe maximum file size is 512 MB.\nIf you find that your file search results are not sufficiently relevant, you can adjust the ranking_options to improve the quality of responses. This includes specifying a ranker, such as auto or default-2024-08-21, and setting a score_threshold between 0.0 and 1.0. A higher score_threshold will limit the results to more relevant chunks, though it may exclude some potentially useful ones.",
        "favicon": "https://favicons.linkup.so?domain=platform.openai.com",
        "type": "text"
      },
      {
        "name": "Create upload | OpenAI API Reference",
        "url": "https://platform.openai.com/docs/api-reference/uploads/create",
        "content": "Creates an intermediate Upload object that you can add Parts to. Currently, an Upload can accept at most 8 GB in total and expires after an hour after you create it \u00b7 Once you complete the Upload, we will create a File object that contains all the parts you uploaded.\nThe file identifier, which can be referenced in the API endpoints. ... The size of the file, in bytes.\nThis File is usable in the rest of our platform as a regular File object.\nFor guidance on the proper filename extensions for each purpose, please follow the documentation on creating a File.\nThe number of bytes in the file you are uploading.",
        "favicon": "https://favicons.linkup.so?domain=platform.openai.com",
        "type": "text"
      },
      {
        "name": "Add upload part | OpenAI API Reference",
        "url": "https://platform.openai.com/docs/api-reference/uploads/add-part",
        "content": "Adds a Part to an Upload object. A Part represents a chunk of bytes from the file you are trying to upload. Each Part can be at most 64 MB, and you can add Parts until you hit the Upload maximum of 8 GB.",
        "favicon": "https://favicons.linkup.so?domain=platform.openai.com",
        "type": "text"
      },
      {
        "name": "File inputs | OpenAI API",
        "url": "https://platform.openai.com/docs/guides/pdf-files",
        "content": "File size limits: A single request can include more than one file, but each file must be under 50 MB.\nFile size limits: A single request can include more than one file, but each file must be under 50 MB.\nThe combined limit across all files in the request is 50 MB. Supported models: PDF parsing that includes text and page images requires models with vision capabilities, such as gpt-4o and later models. File upload purpose: You can upload files with any supported purpose, but use user_data for files you plan to pass as model inputs. This list applies to the Responses API. Chat Completions supports only .pdf (application/pdf) for both file_data and file_id.\nFile input support depends on the API endpoint. The Responses API accepts the file types listed below as input_file items.\nChat Completions accepts only PDF files as file content parts.",
        "favicon": "https://favicons.linkup.so?domain=platform.openai.com",
        "type": "text"
      },
      {
        "name": "Batch API | OpenAI API",
        "url": "https://platform.openai.com/docs/guides/batch",
        "content": "Per-batch limits: A single batch may include up to 50,000 requests, and a batch input file can be up to 200 MB in size. Note that /v1/embeddings batches are also restricted to a maximum of 50,000 embedding inputs across all requests in the batch.\nLearn how to use OpenAI's Batch API for processing jobs with asynchronous requests, increased rate limits, and cost efficiency.\nQueued prompt tokens per model: Each model has a maximum number of prompt tokens that can be queued for batch processing. You can find these limits on the Platform Settings page. Batch creation rate limit: You can create up to 2,000 batches per hour. If you need to submit more requests, increase the number of requests per batch. The Batch API currently has no output-token limit.\nWhile some uses of the OpenAI Platform require you to send synchronous requests, there are many cases where requests do not need an immediate response or rate limits prevent you from executing a large number of queries quickly. Batch processing jobs are often helpful in use cases like: ... The Batch API offers a straightforward set of endpoints that allow you to collect a set of requests into a single file, kick off a batch processing job to execute these requests, query for the status of that batch while the underlying requests execute, and eventually retrieve the collected results when the batch is complete.\nHigher rate limits: Substantially more headroom compared to the synchronous APIs \u00b7 Fast completion times: Each batch completes within 24 hours (and often more quickly) Batches start with a .jsonl file where each line contains the details of an individual request to the API.",
        "favicon": "https://favicons.linkup.so?domain=platform.openai.com",
        "type": "text"
      },
      {
        "name": "File size and format limits | Openai Assistants Intermediate Course | The Neural Base",
        "url": "https://theneuralbase.com/openai-assistants/learn/intermediate/file-size-and-format-limits/",
        "content": "Uploading a file that exceeds limits or uses an unsupported format will fail at the API boundary, wasting API calls and confusing debugging. Understanding these constraints upfront prevents failed batch operations and unexpected billing. Skip if: If your use case requires analyzing files larger than 20MB, consider chunking the file client-side, using a different retrieval system (e.g., embedding a vector database), or pre-processing documents into smaller sections before uploading to the Assistant. The OpenAI Assistants API v2 (Files API) has hard limits on individual file uploads and supported formats.\nIf you set os.environ['OPENAI_API_KEY'] after instantiating OpenAI(), the client will fail silently with a 401 Unauthorized because the SDK reads the API key at instantiation time, not at method call time. Ensure the environment variable is set before creating the client object. ... File uploads themselves are free, but storage is metered: OpenAI charges $0.20 per GB per day for files attached to Assistants.\nUploading a file that exceeds limits or uses an unsupported format will fail at the API boundary, wasting API calls and confusing debugging. Understanding these constraints upfront prevents failed batch operations and unexpected billing. Skip if: If your use case requires analyzing files larger than 20MB, consider chunking the file client-side, using a different retrieval system (e.g., embedding a vector database), or pre-processing documents into smaller sections before uploading to the Assistant. The OpenAI Assistants API v2 (Files API) has hard limits on individual file uploads and supported formats.\nFile exceeds 20MB, unsupported format, or file is corrupted. Check file_path.stat().st_size and file_path.suffix against supported_formats list before calling the API. ... OPENAI_API_KEY is missing or invalid.\nVERSION This guidance applies to OpenAI SDK 1.x with Assistants API v2 (beta). In Assistants v1, the file upload endpoint was different (/v1/files with purpose='assistants'). The v2 file_search tool is the modern equivalent.",
        "favicon": "https://favicons.linkup.so?domain=theneuralbase.com",
        "type": "text"
      },
      {
        "name": "ChatGPT Attachment Limit: File Sizes, Counts &amp; Fixes | Fastio",
        "url": "https://fast.io/resources/chatgpt-attachment-limit/",
        "content": "### 3. File Size Caps and the 25 GB Account Ceiling  \nOpenAI enforces an individual file size limit where any file exceeding 512 MB is rejected by the upload handler before text extraction begins.  \nHowever, individual file sizes are secondary to the cumulative account ceiling. Every user account has a hard 25 GB total account quota. This 25 GB pool is shared across all historical chat threads, ChatGPT Projects, and custom GPT knowledge bases. Crucially, deleting a conversation does not always clear the associated storage if the file was indexed into your personal Library. When this 25 GB ceiling is exhausted, ChatGPT blocks all subsequent attachments across every chat until you manually purge older assets in your account settings.  \nFor teams managing expanding document archives, relying on manual web attachments leads to constant administrative overhead. Explore [Fastio Workspaces](https://fast.io/product/workspaces/) and [Fastio AI](https://fast.io/product/ai/) to see how persistent storage eliminates upload friction.  \nBeyond file counts and megabyte thresholds, ChatGPT applies hidden structural boundaries that cause silent analysis failures. Many users assume that because an upload completed without an error banner, the model has processed the entire file. In practice, token boundaries and format constraints frequently truncate data without explicit notification.\n## Sources  \nReferences used to verify factual claims in this guide.  \n1. 1[OpenAI Help Center: File Uploads FAQ](https://help.openai.com/en/articles/8555545-file-uploads-faq)Accessed  \nFree plan users are capped at 3 file uploads per day, Plus and Team users face a rolling rate limit of 80 files every 3 hours, and total user storage is capped at 25 GB. Individual file uploads to ChatGPT have a maximum file size limit of 512 MB per file, alongside a 2 million token limit on document files. Spreadsheets and CSV files uploaded to ChatGPT are capped around 50 MB per file, though they are exempt from the 2 million token document limit. ChatGPT Project file limits restrict workspaces to 5 files on Free, 25 files on Plus, and 40 files on Pro or Team plans. Failed file upload attempts consume rolling rate limit slots, and custom GPT knowledge bases are limited to 10 files over their lifetime.\n## Frequently Asked Questions  \n**What is the maximum number of files you can attach to a single ChatGPT message?**  \nOn the web version of ChatGPT, users can attach up to 20 files per individual message. This limit was updated from 10 files in February 2026. If you attempt to upload more than 20 files at once, the interface will prompt you to send the remaining files in a separate message.  \n**Why does ChatGPT stop accepting file uploads even when files are under 512 MB?**  \nUpload rejections usually occur because an account has hit one of the stacking limits rather than the per-file size cap. Common causes include reaching the Free plan limit of 3 files per day, exhausting the rolling cap of 80 files every 3 hours on paid plans, or filling the 25 GB cumulative account storage quota.  \n**How does the 2 million token limit differ from the 512 MB file size limit?**  \nThe 512 MB limit is a file size boundary evaluated before an upload is accepted. The 2 million token limit applies to text and document files (such as PDFs, DOCX, and TXT) during processing. A file well under 512 MB that contains dense text exceeding 2 million tokens will be accepted by ChatGPT but truncated silently during analysis.  \n**Can you upload entire directory structures or nested folders to ChatGPT?**",
        "favicon": "https://favicons.linkup.so?domain=fast.io",
        "type": "text"
      },
      {
        "name": "List files | OpenAI API Reference",
        "url": "https://platform.openai.com/docs/api-reference/files/list",
        "content": "Limit can range between 1 and 10,000, and the default is 10,000. ... Sort order by the created_at timestamp of the objects. asc for ascending order and desc for descending order. ... Only return files with the given purpose. data: array of FileObject { id, bytes, created_at, 6 more } ... The ...\nLimit can range between 1 and 10,000, and the default is 10,000. ... Sort order by the created_at timestamp of the objects. asc for ascending order and desc for descending order. ... Only return files with the given purpose. data: array of FileObject { id, bytes, created_at, 6 more } ... The file identifier, which can be referenced in the API endpoints. ... The size of the file, in bytes.\nReturns a list of files. ... A cursor for use in pagination. after is an object ID that defines your place in the list. For instance, if you make a list request and receive 100 objects, ending with obj_foo, your subsequent call can include after=obj_foo in order to fetch the next page of the list. ... A limit on the number of objects to be returned.\nThe Unix timestamp (in seconds) for when the file will expire.\nDeprecated. For details on why a fine-tuning training file failed validation, see the error field on fine_tuning.job.",
        "favicon": "https://favicons.linkup.so?domain=platform.openai.com",
        "type": "text"
      }
    ]
  }
}