AI Demos Research — the structured-intelligence platform. Every verdict on these pages opens to the execution behind it.
Graded 11 October 2026

Can Linkup find a web page that answers a factual question?

Linkup found a page answering the question: OpenAI’s Files API reference at rank 8 stated a maximum individual-file upload size of 512 MB. In all, seven of the ten standard-mode results contained that figure.

1 of 1 test case passed

Every test case in this scenario has a result.

Pass rate100%1 of 1 gradable
Coverage1 of 1test case with a result
1PassDid everything it was expected to do.
0FailNo test case failed.
0Not gradableEvery result here could be graded.
0UntestedEvery test case in this scenario has a result.
The pass rate is a summary. The evidence is the test case below: what we sent, what we checked, what the tool returned, and the proof.

The test case

Each test case is judged on its own: Pass, Fail, Not gradable, or Untested. The scenario result above is based on this test case.

A page on the web answers the questionPassEvidence
What we sent

“What is the maximum size of an individual file I can upload through OpenAI's Files API?”

What the tool returned

Individual files can be up to 512 MB, and each project can store up to 2.5 TB of files in total.

Expected vs. Found
✓Expected: At least one returned page must genuinely answer the question: an individual Files API upload can be up to 512 MB.Found: Rank 8 was OpenAI’s Files API reference, stating a 512 MB individual-file limit; the required answer was 512 MB.
Supporting proof
Proof 1Captured file (JSON)
JSON search record: standard-mode question and results, including OpenAI’s 512 MB per-file limit
Cited values4 values from this file · long text shortened
query_text
What is the maximum size of an individual file I can upload through OpenAI's Files API?
mode
standard
results 8
{ "rank": 8, "url": "https://developers.openai.com/api/reference/resources/files/methods/create", "title": "Upload file | OpenAI API Reference", "content": "Individual files can be up to 512 MB, and each project can store up to 2.5 TB of files in total. There is no organization-wide storage limit. Uploads to this endpoint are rate-limited to 1,000 requests per minute per authenticated user. The … [1,100 characters in the file]", "content_chars": 1100, "published_date": null }
results › * › url
[ "https://certidevs.com/tutorial-openai-file-api", "https://theneuralbase.com/openai-assistants/learn/intermediate/attachment-size-limits/", "https://fast.io/resources/openai-files-api-alternative/", "https://ragwalla.com/docs/guides/openai-files-api-complete-guide-to-upload-manage-delete-files", "https://theneuralbase.com/openai-fine-tuning/errors/openai-fine-tuning-file-upload-size-limit-exceeded/", "https://theneuralbase.com/openai-assistants/learn/intermediate/file-size-and-format-limits/", "https://oapi-open-ai.hexdocs.pm/OpenAi.Files.html", "https://developers.openai.com/api/reference/resources/files/methods/create", "https://community.openai.com/t/openai-file-size-limit-and-batch-api-result-files/897738", "https://community.openai.com/t/20-files-per-assistant-clarification/479659" ]
Show the whole file (37 KB)
JSON
{
  "run_id": "2026-09-23-r3-linkup",
  "round": 2,
  "tool": "linkup",
  "mode": "standard",
  "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:18:57Z",
  "region": "ap-south-1",
  "status": "ok",
  "graded": null,
  "pass_fail": null,
  "grader_notes": null,
  "latency_ms": 3272.0,
  "http_status": 200,
  "error": null,
  "attempts": 1,
  "credits_reported": 0.005,
  "tokens_reported": null,
  "results": [
    {
      "rank": 1,
      "url": "https://certidevs.com/tutorial-openai-file-api",
      "title": "File API de OpenAI - gestion de archivos en Python",
      "content": "## Gesti\u00f3n de archivos  \nLa **File API** de OpenAI act\u00faa como un sistema de almacenamiento centralizado que permite subir y gestionar documentos para ser utilizados por diversos servicios de la plataforma, como el **Fine-tuning**, la **Batch API** o los **Asistentes**.  \nEn lugar de enviar el contenido de los archivos en cada solicitud, esta API permite referenciarlos mediante un identificador \u00fanico, optimizando el ancho de banda y facilitando la reutilizaci\u00f3n de recursos.  \nLos archivos subidos se almacenan de forma segura y est\u00e1n sujetos a pol\u00edticas de retenci\u00f3n espec\u00edficas seg\u00fan su prop\u00f3sito. Por ejemplo, los archivos pueden tener un tama\u00f1o m\u00e1ximo de **512 MB** cada uno, y cada organizaci\u00f3n dispone de un l\u00edmite de almacenamiento total (actualmente hasta **100 GB** o m\u00e1s seg\u00fan el plan). Es fundamental asignar correctamente el **prop\u00f3sito** del archivo al momento de subirlo, ya que esto determina qu\u00e9 modelos o herramientas podr\u00e1n acceder a \u00e9l.\n## Subida de archivos y prop\u00f3sitos  \nPara cargar un archivo en la plataforma, utilizamos el m\u00e9todo `files.create`. Este m\u00e9todo requiere dos argumentos principales: el **archivo** en s\u00ed (abierto en modo binario) y el **purpose** (prop\u00f3sito). El prop\u00f3sito v\u00e1lida el formato del archivo y habilita su uso en endpoints espec\u00edficos.  \nLos prop\u00f3sitos m\u00e1s comunes incluyen:  \n- `assistants`: Para archivos que ser\u00e1n utilizados por Asistentes (Code Interpreter o File Search).\n- `fine-tune`: Para conjuntos de datos de entrenamiento en formato JSONL.\n- `batch`: Para archivos de solicitudes por lotes (Batch API).\n- `vision`: Para im\u00e1genes que ser\u00e1n procesadas por modelos de visi\u00f3n.  \nA continuaci\u00f3n, un ejemplo de c\u00f3mo subir un archivo:  \n```\nfrom openai import OpenAI\nclient = OpenAI()\n\n# Subir un archivo\narchivo = client.files.create(\nfile=open(\"mi-archivo.pdf\", \"rb\"),\npurpose=\"assistants\"\n)\n\nprint(f\"Archivo subido con ID: {archivo.id}\")\n```\n## Descarga de contenido y eliminaci\u00f3n  \nLa API permite descargar el contenido de los archivos generados por el sistema o subidos por el usuario mediante `files.content`. Sin embargo, existe una **restricci\u00f3n de seguridad importante**: no es posible descargar el contenido de archivos subidos con el prop\u00f3sito `assistants` (ni de archivos originales ni de adjuntos), para proteger la privacidad de los datos procesados por los asistentes.  \nSolo se permite la descarga de archivos con prop\u00f3sitos como `fine-tune`, `batch`.  \nPara mantener la higiene del almacenamiento y evitar alcanzar los l\u00edmites de cuota, es recomendable eliminar los archivos que ya no son necesarios utilizando el m\u00e9todo `files.delete`.  \n- **Descargar el contenido de un archivo**(si el prop\u00f3sito lo permite):  \n```\n# Solo funciona para prop\u00f3sitos permitidos (ej. fine-tune-results)\ncontent = client.files.content(\"file-RESULTADOS...\")\n\n# Guardar el contenido en disco\nwith open(\"resultados.jsonl\", \"wb\") as f:\nf.write(content.read())\n```  \n- **Eliminar un archivo del sistema**:  \n```\ndeleted_file = client.files.delete(\"file-XyZ123...\")",
      "content_chars": 3011,
      "published_date": null
    },
    {
      "rank": 2,
      "url": "https://theneuralbase.com/openai-assistants/learn/intermediate/attachment-size-limits/",
      "title": "Attachment size limits | Openai Assistants Intermediate Course | The Neural Base",
      "content": "What this feature does: The OpenAI Assistants API v2 enforces file size limits at upload time. Individual files cannot exceed 20MB when using the file_search tool. Additionally, a single thread can hold a maximum of 10,000 files across all messages.\nOpenAI Assistants API enforces maximum file sizes per upload and per thread, which constrains document retrieval strategies for large knowledge bases.\nAlso, the code reads the PDF but never actually uploads it via client.beta.files.create(). File upload is a separate API call that must complete before you can reference the file in a message. The 20MB limit and 10,000 files per thread limits stated in prose are accurate as of April 2026, but the implementation code will not run. # FIX: File must be uploaded separately FIRST before attaching to a message # openai 1.0.0+ with open('research_paper.pdf', 'rb') as pdf_file: file_size_bytes = os.path.getsize('research_paper.pdf') file_size_mb = file_size_bytes / (1024 * 1024) if file_size_mb > 20: print(f\"File size {file_size_mb:.2f}MB exceeds 20MB limit.\nValid solutions involve either (1) pre-chunking the PDF client-side into multiple <15MB files and uploading as separate attachments, or (2) using a vector database (Pinecone, Weaviate, etc.) to embed and retrieve chunks, bypassing the file_search tool's size constraints. The key insight is that file_search is optimized for document-scale retrieval (thousands of words), not knowledge-base-scale retrieval (gigabytes of data). VERSION OpenAI Assistants API v2 (current as of April 2026) uses attachments array instead of file_ids.\n1 Stateful agent runtime hosted by OpenAI 2 Threads for conversation state 3 Built-in tools: file search, code interpreter 4 Custom function tools 5 Assistants API v2: 2024 6 Deprecation timeline: mid-2026 7 Migration path to Responses API",
      "content_chars": 1831,
      "published_date": null
    },
    {
      "rank": 3,
      "url": "https://fast.io/resources/openai-files-api-alternative/",
      "title": "OpenAI Files API Alternatives - Best Document Storage for AI | Fastio",
      "content": "OpenAI&#x27;s documentation shows the Files API supports individual files up to 512 MB, with a total storage quota of 2.5 TB per project. This works fine for basic prototypes. Problems appear when you build production AI applications.\nOpenAI's documentation shows the Files API supports individual files up to 512 MB, with a total storage quota of 2.5 TB per project. This works fine for basic prototypes. Problems appear when you build production AI applications. The storage model locks files into OpenAI's ecosystem.\nOpenAI Files API supports individual files up to 512 MB with storage beyond that limit and compatibility with multiple AI frameworks Storage pricing at $0.10/GB/day for vector store indexing on OpenAI platform Files API has a 512MB per-file limit, charges $0.10/GB/day for vector storage, and caps assistants at 20 files each Store large files for AI agents beyond 512MB using cloud storage services with larger limits\nThe Files API has a 512MB per-file limit, charges $0.10/GB/day for vector storage, caps assistants at 20 files each, and provides no visual interface for file management. Files are tied to OpenAI's ecosystem, making multi-LLM architectures difficult. The API also lacks bulk operations, forcing developers to loop through files individually for uploads or deletions.\nThe Files API is designed specifically for OpenAI assistants and fine-tuning, with automatic vector indexing but limited flexibility. Cloud storage platforms provide file persistence, larger size limits, multi-LLM compatibility, and features like sharing, permissions, and webhooks.",
      "content_chars": 1588,
      "published_date": null
    },
    {
      "rank": 4,
      "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\n# OpenAI Files API: Complete Guide to Upload, Manage & Delete Files The OpenAI Files API allows you to upload, manage, and delete files for use with Assistants, fine-tuning, and...\nWhile powerful, the API lacks built-in bulk operations and visual management tools, making file management challenging for developers working with large datasets. This comprehensive guide covers everything you need to know about the OpenAI Files API, including practical code examples, best practices, common issues, and solutions for efficient file management.\nWhile the OpenAI Files API is powerful, managing files through code can be tedious, especially for bulk operations. The API lacks: ... For developers who need a visual interface for OpenAI file management, we've built AI Files - a free macOS application that provides:",
      "content_chars": 1429,
      "published_date": null
    },
    {
      "rank": 5,
      "url": "https://theneuralbase.com/openai-fine-tuning/errors/openai-fine-tuning-file-upload-size-limit-exceeded/",
      "title": "OpenAI Fine-Tuning File Upload Size Limit Exceeded \u2014 Fix & Causes",
      "content": "The uploaded file for OpenAI fine-tuning exceeds the maximum allowed size limit imposed by the API. ... The 100MB limit cited is outdated - OpenAI fine-tuning API accepts individual files up to 512MB as of April 2024, with total dataset size capped at 2GB across all uploaded files combined.\nOpenAI's fine-tuning API enforces a strict maximum file size limit (typically 100MB) for training data uploads. When the uploaded file exceeds this limit, the API rejects the request with an error.\nFix OpenAI fine-tuning file upload size limit exceeded error fast. Learn why it happens, see broken vs fixed code, and prevent it in production with best practices.\nVerify actual current limits via OpenAI API docs before splitting - many teams unnecessarily fragment datasets that fit in a single 512MB file. The validation code is correct in principle but add: also validate that total dataset size across all batches won't exceed 2GB, and implement exponential backoff since file uploads can timeout on slow connections.\nCheck the file size before uploading by inspecting the file's byte size in your code and log or raise an error if it exceeds the documented limit to avoid API rejection. ... The training data JSONL file exceeds OpenAI's 100MB upload size limit.",
      "content_chars": 1257,
      "published_date": null
    },
    {
      "rank": 6,
      "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": "The OpenAI Assistants API v2 (Files API) has hard limits on individual file uploads and supported formats. Each file uploaded to an Assistant for use with file_search cannot exceed 20MB, and only certain formats are supported: PDF, TXT, DOCX, PPTX, XLSX, JSON, CSV, and images (PNG, JPEG, GIF, WEBP).\nThe OpenAI Assistants API v2 (Files API) has hard limits on individual file uploads and supported formats. Each file uploaded to an Assistant for use with file_search cannot exceed 20MB, and only certain formats are supported: PDF, TXT, DOCX, PPTX, XLSX, JSON, CSV, and images (PNG, JPEG, GIF, WEBP).\nUse this knowledge to add client-side validation before calling client.beta.assistants.files.create(). For multi-file workflows, batch-check sizes and formats first, then upload in parallel. For documents larger than 20MB, split them by chapters or sections, upload each as a separate file, and reference all uploaded file IDs in a single Assistant. ... import os from pathlib import Path from openai import OpenAI client = OpenAI(api_key=os.environ.get('OPENAI_API_KEY')) file_path = Path('example_document.pdf') if not file_path.exists(): raise FileNotFoundError(f'{file_path} not found') file_size\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.\nEnsure OPENAI_API_KEY is set in your environment before instantiating the OpenAI client. The SDK reads this at client creation time, not at method call time. ... The unique identifier for this file attachment.",
      "content_chars": 1622,
      "published_date": null
    },
    {
      "rank": 7,
      "url": "https://oapi-open-ai.hexdocs.pm/OpenAi.Files.html",
      "title": "OpenAi.Files \u2014 OpenAI REST API Client v1.0.2",
      "content": "# [View Source](https://github.com/wois-org/open-api-open-ai/blob/master/lib/operations/files.ex#L1) OpenAi.Files (OpenAI REST API Client v1.0.2)  \nProvides API endpoints related to files\n# create\\_file(body, opts \\\\\\\\ \\[])  \n[View Source](https://github.com/wois-org/open-api-open-ai/blob/master/lib/operations/files.ex#L22)  \n```\n@spec create_file(body :: OpenAi.File.CreateRequest.t(), opts :: keyword()) ::\n{:ok, OpenAi.File.t()} | {:error, OpenAi.Error.error()}\n```  \nUpload a file that can be used across various endpoints. Individual files can be up to 512 MB, and the size of all files uploaded by one organization can be up to 100 GB.  \nThe Assistants API supports files up to 2 million tokens and of specific file types. See the [Assistants Tools guide](/docs/assistants/tools) for details.  \nThe Fine-tuning API only supports `.jsonl` files. The input also has certain required formats for fine-tuning [chat](/docs/api-reference/fine-tuning/chat-input) or [completions](/docs/api-reference/fine-tuning/completions-input) models.  \nThe Batch API only supports `.jsonl` files up to 200 MB in size. The input also has a specific required [format](/docs/api-reference/batch/request-input).  \nPlease [contact us](https://help.openai.com/) if you need to increase these storage limits.  \n[Link to this function](#delete_file/2)\n# list\\_files(opts \\\\\\\\ \\[])  \n[View Source](https://github.com/wois-org/open-api-open-ai/blob/master/lib/operations/files.ex#L89)  \n```\n@spec list_files(opts :: keyword()) ::\n{:ok, OpenAi.File.ListResponse.t()} | {:error, OpenAi.Error.error()}\n```  \nReturns a list of files.",
      "content_chars": 1608,
      "published_date": null
    },
    {
      "rank": 8,
      "url": "https://developers.openai.com/api/reference/resources/files/methods/create",
      "title": "Upload file | OpenAI API Reference",
      "content": "Individual files can be up to 512 MB, and each project can store up to 2.5 TB of files in total. There is no organization-wide storage limit. Uploads to this endpoint are rate-limited to 1,000 requests per minute per authenticated user. The Assistants API supports files up to 2 million tokens ...\nIndividual files can be up to 512 MB, and each project can store up to 2.5 TB of files in total. There is no organization-wide storage limit. Uploads to this endpoint are rate-limited to 1,000 requests per minute per authenticated user. The Assistants API supports files up to 2 million tokens and of specific file types.\nThe file identifier, which can be referenced in the API endpoints. ... The size of the file, in bytes.\nThe Batch API only supports .jsonl files up to 200 MB in size.\nFor details on why a fine-tuning training file failed validation, see the error field on fine_tuning.job. ... curl https://api.openai.com/v1/files \\ -H \"Authorization: Bearer $OPENAI_API_KEY\" \\ -F purpose=\"fine-tune\" \\ -F file=\"@mydata.jsonl\" -F expires_after[anchor]=\"created_at\" -F expires_after[seconds]=2592000",
      "content_chars": 1100,
      "published_date": null
    },
    {
      "rank": 9,
      "url": "https://community.openai.com/t/openai-file-size-limit-and-batch-api-result-files/897738",
      "title": "OpenAI File Size Limit and Batch API result files - API - OpenAI Developer Community",
      "content": "I am using Batch API to embed large amount of documents. OpenAI has a total file size limit per organization of 100 GB, which affects the amount of data I can upload at any time for processing them. How about the result\u2026\nI am using Batch API to embed large amount of documents. OpenAI has a total file size limit per organization of 100 GB, which affects the amount of data I can upload at any time for processing them. How about the result\u2026",
      "content_chars": 441,
      "published_date": null
    },
    {
      "rank": 10,
      "url": "https://community.openai.com/t/20-files-per-assistant-clarification/479659",
      "title": "20 files per assistant clarification - API - OpenAI Developer Community",
      "content": "\u201cYou can attach a maximum of 20 files per Assistant, and they can be at most 512 MB each.\u201d Can someone clarify this for me? I should technically be able to have one assistant with the same instruction and model power t\u2026\n\u201cYou can attach a maximum of 20 files per Assistant, and they can be at most 512 MB each.\u201d Can someone clarify this for me? I should technically be able to have one assistant with the same instruction and model power thousands of threads. If anything, I\u2019d think the file limit would be at the thread level, not the assistant.\n\u201cYou can attach a maximum of 20 files per Assistant, and they can be at most 512 MB each.\u201d Can someone clarify this for me? I should technically be able to have one assistant with the same instruction and model power t\u2026",
      "content_chars": 765,
      "published_date": null
    }
  ],
  "answer_text": null,
  "citations": [],
  "raw_response": {
    "results": [
      {
        "name": "File API de OpenAI - gestion de archivos en Python",
        "url": "https://certidevs.com/tutorial-openai-file-api",
        "content": "## Gesti\u00f3n de archivos  \nLa **File API** de OpenAI act\u00faa como un sistema de almacenamiento centralizado que permite subir y gestionar documentos para ser utilizados por diversos servicios de la plataforma, como el **Fine-tuning**, la **Batch API** o los **Asistentes**.  \nEn lugar de enviar el contenido de los archivos en cada solicitud, esta API permite referenciarlos mediante un identificador \u00fanico, optimizando el ancho de banda y facilitando la reutilizaci\u00f3n de recursos.  \nLos archivos subidos se almacenan de forma segura y est\u00e1n sujetos a pol\u00edticas de retenci\u00f3n espec\u00edficas seg\u00fan su prop\u00f3sito. Por ejemplo, los archivos pueden tener un tama\u00f1o m\u00e1ximo de **512 MB** cada uno, y cada organizaci\u00f3n dispone de un l\u00edmite de almacenamiento total (actualmente hasta **100 GB** o m\u00e1s seg\u00fan el plan). Es fundamental asignar correctamente el **prop\u00f3sito** del archivo al momento de subirlo, ya que esto determina qu\u00e9 modelos o herramientas podr\u00e1n acceder a \u00e9l.\n## Subida de archivos y prop\u00f3sitos  \nPara cargar un archivo en la plataforma, utilizamos el m\u00e9todo `files.create`. Este m\u00e9todo requiere dos argumentos principales: el **archivo** en s\u00ed (abierto en modo binario) y el **purpose** (prop\u00f3sito). El prop\u00f3sito v\u00e1lida el formato del archivo y habilita su uso en endpoints espec\u00edficos.  \nLos prop\u00f3sitos m\u00e1s comunes incluyen:  \n- `assistants`: Para archivos que ser\u00e1n utilizados por Asistentes (Code Interpreter o File Search).\n- `fine-tune`: Para conjuntos de datos de entrenamiento en formato JSONL.\n- `batch`: Para archivos de solicitudes por lotes (Batch API).\n- `vision`: Para im\u00e1genes que ser\u00e1n procesadas por modelos de visi\u00f3n.  \nA continuaci\u00f3n, un ejemplo de c\u00f3mo subir un archivo:  \n```\nfrom openai import OpenAI\nclient = OpenAI()\n\n# Subir un archivo\narchivo = client.files.create(\nfile=open(\"mi-archivo.pdf\", \"rb\"),\npurpose=\"assistants\"\n)\n\nprint(f\"Archivo subido con ID: {archivo.id}\")\n```\n## Descarga de contenido y eliminaci\u00f3n  \nLa API permite descargar el contenido de los archivos generados por el sistema o subidos por el usuario mediante `files.content`. Sin embargo, existe una **restricci\u00f3n de seguridad importante**: no es posible descargar el contenido de archivos subidos con el prop\u00f3sito `assistants` (ni de archivos originales ni de adjuntos), para proteger la privacidad de los datos procesados por los asistentes.  \nSolo se permite la descarga de archivos con prop\u00f3sitos como `fine-tune`, `batch`.  \nPara mantener la higiene del almacenamiento y evitar alcanzar los l\u00edmites de cuota, es recomendable eliminar los archivos que ya no son necesarios utilizando el m\u00e9todo `files.delete`.  \n- **Descargar el contenido de un archivo**(si el prop\u00f3sito lo permite):  \n```\n# Solo funciona para prop\u00f3sitos permitidos (ej. fine-tune-results)\ncontent = client.files.content(\"file-RESULTADOS...\")\n\n# Guardar el contenido en disco\nwith open(\"resultados.jsonl\", \"wb\") as f:\nf.write(content.read())\n```  \n- **Eliminar un archivo del sistema**:  \n```\ndeleted_file = client.files.delete(\"file-XyZ123...\")",
        "favicon": "https://favicons.linkup.so?domain=certidevs.com",
        "type": "text"
      },
      {
        "name": "Attachment size limits | Openai Assistants Intermediate Course | The Neural Base",
        "url": "https://theneuralbase.com/openai-assistants/learn/intermediate/attachment-size-limits/",
        "content": "What this feature does: The OpenAI Assistants API v2 enforces file size limits at upload time. Individual files cannot exceed 20MB when using the file_search tool. Additionally, a single thread can hold a maximum of 10,000 files across all messages.\nOpenAI Assistants API enforces maximum file sizes per upload and per thread, which constrains document retrieval strategies for large knowledge bases.\nAlso, the code reads the PDF but never actually uploads it via client.beta.files.create(). File upload is a separate API call that must complete before you can reference the file in a message. The 20MB limit and 10,000 files per thread limits stated in prose are accurate as of April 2026, but the implementation code will not run. # FIX: File must be uploaded separately FIRST before attaching to a message # openai 1.0.0+ with open('research_paper.pdf', 'rb') as pdf_file: file_size_bytes = os.path.getsize('research_paper.pdf') file_size_mb = file_size_bytes / (1024 * 1024) if file_size_mb > 20: print(f\"File size {file_size_mb:.2f}MB exceeds 20MB limit.\nValid solutions involve either (1) pre-chunking the PDF client-side into multiple <15MB files and uploading as separate attachments, or (2) using a vector database (Pinecone, Weaviate, etc.) to embed and retrieve chunks, bypassing the file_search tool's size constraints. The key insight is that file_search is optimized for document-scale retrieval (thousands of words), not knowledge-base-scale retrieval (gigabytes of data). VERSION OpenAI Assistants API v2 (current as of April 2026) uses attachments array instead of file_ids.\n1 Stateful agent runtime hosted by OpenAI 2 Threads for conversation state 3 Built-in tools: file search, code interpreter 4 Custom function tools 5 Assistants API v2: 2024 6 Deprecation timeline: mid-2026 7 Migration path to Responses API",
        "favicon": "https://favicons.linkup.so?domain=theneuralbase.com",
        "type": "text"
      },
      {
        "name": "OpenAI Files API Alternatives - Best Document Storage for AI | Fastio",
        "url": "https://fast.io/resources/openai-files-api-alternative/",
        "content": "OpenAI&#x27;s documentation shows the Files API supports individual files up to 512 MB, with a total storage quota of 2.5 TB per project. This works fine for basic prototypes. Problems appear when you build production AI applications.\nOpenAI's documentation shows the Files API supports individual files up to 512 MB, with a total storage quota of 2.5 TB per project. This works fine for basic prototypes. Problems appear when you build production AI applications. The storage model locks files into OpenAI's ecosystem.\nOpenAI Files API supports individual files up to 512 MB with storage beyond that limit and compatibility with multiple AI frameworks Storage pricing at $0.10/GB/day for vector store indexing on OpenAI platform Files API has a 512MB per-file limit, charges $0.10/GB/day for vector storage, and caps assistants at 20 files each Store large files for AI agents beyond 512MB using cloud storage services with larger limits\nThe Files API has a 512MB per-file limit, charges $0.10/GB/day for vector storage, caps assistants at 20 files each, and provides no visual interface for file management. Files are tied to OpenAI's ecosystem, making multi-LLM architectures difficult. The API also lacks bulk operations, forcing developers to loop through files individually for uploads or deletions.\nThe Files API is designed specifically for OpenAI assistants and fine-tuning, with automatic vector indexing but limited flexibility. Cloud storage platforms provide file persistence, larger size limits, multi-LLM compatibility, and features like sharing, permissions, and webhooks.",
        "favicon": "https://favicons.linkup.so?domain=fast.io",
        "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\n# OpenAI Files API: Complete Guide to Upload, Manage & Delete Files The OpenAI Files API allows you to upload, manage, and delete files for use with Assistants, fine-tuning, and...\nWhile powerful, the API lacks built-in bulk operations and visual management tools, making file management challenging for developers working with large datasets. This comprehensive guide covers everything you need to know about the OpenAI Files API, including practical code examples, best practices, common issues, and solutions for efficient file management.\nWhile the OpenAI Files API is powerful, managing files through code can be tedious, especially for bulk operations. The API lacks: ... For developers who need a visual interface for OpenAI file management, we've built AI Files - a free macOS application that provides:",
        "favicon": "https://favicons.linkup.so?domain=ragwalla.com",
        "type": "text"
      },
      {
        "name": "OpenAI Fine-Tuning File Upload Size Limit Exceeded \u2014 Fix & Causes",
        "url": "https://theneuralbase.com/openai-fine-tuning/errors/openai-fine-tuning-file-upload-size-limit-exceeded/",
        "content": "The uploaded file for OpenAI fine-tuning exceeds the maximum allowed size limit imposed by the API. ... The 100MB limit cited is outdated - OpenAI fine-tuning API accepts individual files up to 512MB as of April 2024, with total dataset size capped at 2GB across all uploaded files combined.\nOpenAI's fine-tuning API enforces a strict maximum file size limit (typically 100MB) for training data uploads. When the uploaded file exceeds this limit, the API rejects the request with an error.\nFix OpenAI fine-tuning file upload size limit exceeded error fast. Learn why it happens, see broken vs fixed code, and prevent it in production with best practices.\nVerify actual current limits via OpenAI API docs before splitting - many teams unnecessarily fragment datasets that fit in a single 512MB file. The validation code is correct in principle but add: also validate that total dataset size across all batches won't exceed 2GB, and implement exponential backoff since file uploads can timeout on slow connections.\nCheck the file size before uploading by inspecting the file's byte size in your code and log or raise an error if it exceeds the documented limit to avoid API rejection. ... The training data JSONL file exceeds OpenAI's 100MB upload size limit.",
        "favicon": "https://favicons.linkup.so?domain=theneuralbase.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": "The OpenAI Assistants API v2 (Files API) has hard limits on individual file uploads and supported formats. Each file uploaded to an Assistant for use with file_search cannot exceed 20MB, and only certain formats are supported: PDF, TXT, DOCX, PPTX, XLSX, JSON, CSV, and images (PNG, JPEG, GIF, WEBP).\nThe OpenAI Assistants API v2 (Files API) has hard limits on individual file uploads and supported formats. Each file uploaded to an Assistant for use with file_search cannot exceed 20MB, and only certain formats are supported: PDF, TXT, DOCX, PPTX, XLSX, JSON, CSV, and images (PNG, JPEG, GIF, WEBP).\nUse this knowledge to add client-side validation before calling client.beta.assistants.files.create(). For multi-file workflows, batch-check sizes and formats first, then upload in parallel. For documents larger than 20MB, split them by chapters or sections, upload each as a separate file, and reference all uploaded file IDs in a single Assistant. ... import os from pathlib import Path from openai import OpenAI client = OpenAI(api_key=os.environ.get('OPENAI_API_KEY')) file_path = Path('example_document.pdf') if not file_path.exists(): raise FileNotFoundError(f'{file_path} not found') file_size\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.\nEnsure OPENAI_API_KEY is set in your environment before instantiating the OpenAI client. The SDK reads this at client creation time, not at method call time. ... The unique identifier for this file attachment.",
        "favicon": "https://favicons.linkup.so?domain=theneuralbase.com",
        "type": "text"
      },
      {
        "name": "OpenAi.Files \u2014 OpenAI REST API Client v1.0.2",
        "url": "https://oapi-open-ai.hexdocs.pm/OpenAi.Files.html",
        "content": "# [View Source](https://github.com/wois-org/open-api-open-ai/blob/master/lib/operations/files.ex#L1) OpenAi.Files (OpenAI REST API Client v1.0.2)  \nProvides API endpoints related to files\n# create\\_file(body, opts \\\\\\\\ \\[])  \n[View Source](https://github.com/wois-org/open-api-open-ai/blob/master/lib/operations/files.ex#L22)  \n```\n@spec create_file(body :: OpenAi.File.CreateRequest.t(), opts :: keyword()) ::\n{:ok, OpenAi.File.t()} | {:error, OpenAi.Error.error()}\n```  \nUpload a file that can be used across various endpoints. Individual files can be up to 512 MB, and the size of all files uploaded by one organization can be up to 100 GB.  \nThe Assistants API supports files up to 2 million tokens and of specific file types. See the [Assistants Tools guide](/docs/assistants/tools) for details.  \nThe Fine-tuning API only supports `.jsonl` files. The input also has certain required formats for fine-tuning [chat](/docs/api-reference/fine-tuning/chat-input) or [completions](/docs/api-reference/fine-tuning/completions-input) models.  \nThe Batch API only supports `.jsonl` files up to 200 MB in size. The input also has a specific required [format](/docs/api-reference/batch/request-input).  \nPlease [contact us](https://help.openai.com/) if you need to increase these storage limits.  \n[Link to this function](#delete_file/2)\n# list\\_files(opts \\\\\\\\ \\[])  \n[View Source](https://github.com/wois-org/open-api-open-ai/blob/master/lib/operations/files.ex#L89)  \n```\n@spec list_files(opts :: keyword()) ::\n{:ok, OpenAi.File.ListResponse.t()} | {:error, OpenAi.Error.error()}\n```  \nReturns a list of files.",
        "favicon": "https://favicons.linkup.so?domain=oapi-open-ai.hexdocs.pm",
        "type": "text"
      },
      {
        "name": "Upload file | OpenAI API Reference",
        "url": "https://developers.openai.com/api/reference/resources/files/methods/create",
        "content": "Individual files can be up to 512 MB, and each project can store up to 2.5 TB of files in total. There is no organization-wide storage limit. Uploads to this endpoint are rate-limited to 1,000 requests per minute per authenticated user. The Assistants API supports files up to 2 million tokens ...\nIndividual files can be up to 512 MB, and each project can store up to 2.5 TB of files in total. There is no organization-wide storage limit. Uploads to this endpoint are rate-limited to 1,000 requests per minute per authenticated user. The Assistants API supports files up to 2 million tokens and of specific file types.\nThe file identifier, which can be referenced in the API endpoints. ... The size of the file, in bytes.\nThe Batch API only supports .jsonl files up to 200 MB in size.\nFor details on why a fine-tuning training file failed validation, see the error field on fine_tuning.job. ... curl https://api.openai.com/v1/files \\ -H \"Authorization: Bearer $OPENAI_API_KEY\" \\ -F purpose=\"fine-tune\" \\ -F file=\"@mydata.jsonl\" -F expires_after[anchor]=\"created_at\" -F expires_after[seconds]=2592000",
        "favicon": "https://favicons.linkup.so?domain=developers.openai.com",
        "type": "text"
      },
      {
        "name": "OpenAI File Size Limit and Batch API result files - API - OpenAI Developer Community",
        "url": "https://community.openai.com/t/openai-file-size-limit-and-batch-api-result-files/897738",
        "content": "I am using Batch API to embed large amount of documents. OpenAI has a total file size limit per organization of 100 GB, which affects the amount of data I can upload at any time for processing them. How about the result\u2026\nI am using Batch API to embed large amount of documents. OpenAI has a total file size limit per organization of 100 GB, which affects the amount of data I can upload at any time for processing them. How about the result\u2026",
        "favicon": "https://favicons.linkup.so?domain=community.openai.com",
        "type": "text"
      },
      {
        "name": "20 files per assistant clarification - API - OpenAI Developer Community",
        "url": "https://community.openai.com/t/20-files-per-assistant-clarification/479659",
        "content": "\u201cYou can attach a maximum of 20 files per Assistant, and they can be at most 512 MB each.\u201d Can someone clarify this for me? I should technically be able to have one assistant with the same instruction and model power t\u2026\n\u201cYou can attach a maximum of 20 files per Assistant, and they can be at most 512 MB each.\u201d Can someone clarify this for me? I should technically be able to have one assistant with the same instruction and model power thousands of threads. If anything, I\u2019d think the file limit would be at the thread level, not the assistant.\n\u201cYou can attach a maximum of 20 files per Assistant, and they can be at most 512 MB each.\u201d Can someone clarify this for me? I should technically be able to have one assistant with the same instruction and model power t\u2026",
        "favicon": "https://favicons.linkup.so?domain=community.openai.com",
        "type": "text"
      }
    ]
  }
}
Open the JSON file ↗
Proof 2Captured file (JSON)
JSON search record: deep-mode results without OpenAI’s Files API reference page
Cited values2 values from this file
mode
deep
results › * › url
[ "https://hub.windmill.dev/scripts/openai/6977/create-file-openai", "https://ragwalla.com/docs/guides/openai-files-api-complete-guide-to-upload-manage-delete-files", "https://platform.openai.com/docs/guides/retrieval", "https://platform.openai.com/docs/api-reference/uploads/create", "https://platform.openai.com/docs/api-reference/uploads/add-part", "https://platform.openai.com/docs/guides/pdf-files", "https://platform.openai.com/docs/guides/batch", "https://theneuralbase.com/openai-assistants/learn/intermediate/file-size-and-format-limits/", "https://fast.io/resources/chatgpt-attachment-limit/", "https://platform.openai.com/docs/api-reference/files/list" ]
Show the whole file (32 KB)
JSON
{
  "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"
      }
    ]
  }
}
Open the JSON file ↗
Why this result

Any page that genuinely answered the question qualified; no particular link was required. Linkup’s standard search returned OpenAI’s own reference page stating the required 512 MB per-file limit, meeting that requirement.

Also observed in this test case

Deep-mode results. The deep-mode search did not return OpenAI’s Files API reference page; four of its ten results contained the 512 MB figure.

Tested by Aman · evidence dated 23 September 2026

Configuration and setup

How this tool was set up for the run and what the test needed in place. Each row is a fact from the run's records; a fact the records do not hold is left out, not guessed.

Software that produced the output
Linkup
Build or version
Not exposed by the hosted product
Surface
API
Set up before the run
OpenAI’s public Files API reference had to clearly answer a factual question about the maximum size of an individual file upload, with its answer reconfirmed on the search date.
Search
standard mode · no domain restriction
Tested
23 September 2026 · Aman

How this scenario is graded

How we decide Pass, Fail and Not gradable. The same rules apply to every tool tested on this scenario.

How results are decided

Each test case gets one result per tool: Pass, Fail or Not gradable. A test case we haven't run yet shows Untested. There are no partial results.

The rules
  • Pass: the tool did everything the test expected, and nothing it said contradicts the correct answer.
  • Fail: at least one expected behaviour clearly didn't happen; the test case's result says which one and quotes the tool.
  • Not gradable: our evidence couldn't settle the outcome (for example a record we needed is missing). It is never counted as a fail, and the test case's result says what's missing.

Where this sits in the benchmark

This page is one cell of a larger study: one tool, one scenario. Only this benchmark's frame appears here.

LevelNameScope
BenchmarkWeb Search for AI →10 scenarios · 12 tools
CapabilityWeb Retrieval →
ScenarioA page on the web answers the question →
ToolLinkup →

History of this result

What has happened to this result since it was first published. Runs and grades are never overwritten: a retest or a re-grade publishes a new result and keeps the earlier one readable.

from the publication record
12 November 2026First publishedWeb Search for AI v1

Act on this result

Nothing filed here edits the run or the grade. A challenge opens a review, and a review can produce a new run or a re-grade — which becomes the current result and leaves this one in the history.

This matches what I see

You run the same kind of test against your own setup and get the same behaviour.

Agree →
This does not match

Yours behaves differently. Tell us what you got, with a screenshot if you have one.

Disagree →
Point out an issue

Something here is wrong — a reference value, a transcription, a grade.

Report an issue →
Request a retest

On a newer build, a larger dataset, or your own setup.

Request a retest →
We have fixed this

Tell us what changed and we schedule a rerun of the failing test case. The old result stays as history.

Vendor notice →
Filed against this evidenceNothing yet. Challenges, counter-evidence and fix notices appear here with their outcome, and stay on the page after they are resolved.
Cite this result
aidemos.com/benchmarks/web-search-for-ai/results/linkup/a-page-on-the-web-answers-the-question · 1 pass · 0 fail · coverage 1/1 · graded 2026-10-11

The same record is available as structured data through the AI Demos MCP server, with the counts, the coverage and every per-test-case reason carried as fields.

Verify the proof files

These files support this result. Open a file to inspect the original evidence.

Proof 1 · Captured file (JSON) ↗application/json · 37 KB
Proof 2 · Captured file (JSON) ↗application/json · 32 KB
File fingerprints (SHA-256)

A fingerprint identifies the exact file used for this result.

Proof 1 · Captured file (JSON)8b4433b037ee63fcd52ca5275c412765c1336e5bbc30b8d7f14e1e418c0e5b60
Proof 2 · Captured file (JSON)521de80e7400c6fc9ce32dd13ebce1dd1c8d9d0205d349023783bfb608fcda45