La compatibilidad con archivos de entrada depende del punto de acceso de la API. La API de Responses acepta los tipos de archivo que se indican más adelante como elementos input_file. Chat Completions solo acepta archivos PDF como partes de contenido de tipo file.
| Método de entrada | API de Responses | Chat Completions |
|---|---|---|
Datos del archivo codificados en Base64 (file_data) |
Tipos de archivo compatibles que se indican más adelante | Solo PDF |
ID del archivo cargado (file_id) |
Tipos de archivo compatibles que se indican más adelante | Solo PDF |
URL externa del archivo (file_url) |
Tipos de archivo compatibles que se indican más adelante | No compatible |
Usa la API de Responses para enviar archivos de entrada en formatos distintos de PDF. Para usar el texto de un archivo en Chat Completions, lee el archivo en tu aplicación y envía su contenido como una parte de contenido de tipo text.
Cómo funciona
En la API de Responses, el procesamiento de input_file depende del tipo de archivo:
- Archivos PDF: con modelos que tienen capacidades de visión, como
gpt-4oy los modelos posteriores, la API extrae tanto el texto como las imágenes de las páginas y envía ambos al modelo. - Documentos en formatos distintos de PDF y archivos de texto (por ejemplo,
.docx,.pptx,.txty archivos de código): la API extrae solo el texto. - Hojas de cálculo (por ejemplo,
.xlsx,.csvy.tsv): la API aplica un proceso de enriquecimiento específico para hojas de cálculo que se describe más adelante.
Usa estas herramientas cuando se ajusten mejor a tu tarea:
- Usa la búsqueda de archivos para recuperar información de archivos grandes en lugar de enviarlos directamente como
input_file. - Usa la Terminal alojada en la nube para tareas que requieren un análisis detallado de hojas de cálculo, como calcular valores agregados, combinar tablas, crear gráficos o realizar cálculos personalizados.
Limitaciones de las imágenes y los gráficos en archivos que no son PDF
En los archivos que no son PDF, la API de Responses no extrae las imágenes ni los gráficos incrustados para incluirlos en el contexto del modelo.
Para conservar la fidelidad de los gráficos y diagramas, primero convierte el archivo a PDF y luego envía el PDF como input_file.
Cómo funciona el enriquecimiento de las hojas de cálculo
Para los archivos con estructura de hoja de cálculo (como .xlsx, .xls, .csv, .tsv y .iif), la API de Responses usa un proceso de enriquecimiento específico.
En lugar de enviar hojas enteras al modelo, la API analiza como máximo las primeras 1000 filas de cada hoja y agrega metadatos generados por el modelo que incluyen un resumen e información sobre los encabezados. Así, el modelo puede trabajar con una representación más compacta y estructurada de los datos.
Niveles de detalle para archivos PDF
Para los archivos PDF de entrada en la API de Responses, configura el campo opcional detail de un elemento input_file en auto, low o high para controlar cómo procesa la API las imágenes de las páginas. Si omites detail, el valor predeterminado es auto. En GPT-5.6 y los modelos posteriores, auto usa high. En los modelos anteriores, usa low. Usa low para consumir menos tokens de entrada o high si necesitas más detalle visual, por ejemplo, en gráficos con mucha información, texto pequeño o diagramas.
El ajuste detail solo afecta el procesamiento de las imágenes de las páginas del PDF. El texto extraído del PDF se incluye de todos modos. Los archivos de entrada de Chat Completions no admiten detail.
Este ejemplo mínimo muestra cómo especificar un nivel de detalle alto en el cuerpo de una solicitud a la API de Responses:
{
"model": "gpt-4.1",
"input": [
{
"role": "user",
"content": [
{
"type": "input_file",
"filename": "document.pdf",
"file_data": "data:application/pdf;base64,...",
"detail": "high"
},
{
"type": "input_text",
"text": "Summarize this document."
}
]
}
]
}
Tipos de archivo admitidos
La siguiente tabla muestra los tipos de archivo más comunes que la API de Responses acepta como elementos input_file. Más adelante en esta página encontrarás la lista completa de extensiones y tipos MIME. Chat Completions solo admite .pdf (application/pdf) tanto para file_data como para file_id.
| Categoría | Extensiones comunes |
|---|---|
| Archivos PDF | .pdf |
| Texto y código | .txt, .md, .json, .html, .xml, archivos de código |
| Documentos con formato | .doc, .docx, .rtf, .odt |
| Presentaciones | .ppt, .pptx |
| Hojas de cálculo | .csv, .xls, .xlsx |
URL de archivos
Puedes proporcionar archivos de entrada mediante sus URL externas.
curl "https://api.openai.com/v1/responses" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"model": "gpt-6-astra",
"input": [
{
"role": "user",
"content": [
{
"type": "input_text",
"text": "Analyze the letter and provide a summary of the key points."
},
{
"type": "input_file",
"file_url": "https://www.berkshirehathaway.com/letters/2024ltr.pdf"
}
]
}
]
}'Chat Completions no admite URL de archivos. Para usar esta opción, utiliza la API de Responses.
Carga de archivos
En el siguiente ejemplo se carga un archivo con la API de Files y luego se usa su ID en una solicitud al modelo.
curl https://api.openai.com/v1/files \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-F purpose="user_data" \
-F file="@draconomicon.pdf"
curl "https://api.openai.com/v1/responses" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"model": "gpt-6-astra",
"input": [
{
"role": "user",
"content": [
{
"type": "input_file",
"file_id": "file-6F2ksmvXxt4VdoqmHRw6kL"
},
{
"type": "input_text",
"text": "What is the first dragon in the book?"
}
]
}
]
}'curl https://api.openai.com/v1/files \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-F purpose="user_data" \
-F file="@draconomicon.pdf"
curl "https://api.openai.com/v1/chat/completions" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"model": "gpt-6-astra",
"messages": [
{
"role": "user",
"content": [
{
"type": "file",
"file": {
"file_id": "file-6F2ksmvXxt4VdoqmHRw6kL"
}
},
{
"type": "text",
"text": "What is the first dragon in the book?"
}
]
}
]
}'Archivos codificados en Base64
También puedes enviar archivos de entrada como datos codificados en Base64.
curl "https://api.openai.com/v1/responses" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"model": "gpt-6-astra",
"input": [
{
"role": "user",
"content": [
{
"type": "input_file",
"filename": "draconomicon.pdf",
"file_data": "...base64 encoded PDF bytes here..."
},
{
"type": "input_text",
"text": "What is the first dragon in the book?"
}
]
}
]
}'curl "https://api.openai.com/v1/chat/completions" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"model": "gpt-6-astra",
"messages": [
{
"role": "user",
"content": [
{
"type": "file",
"file": {
"filename": "draconomicon.pdf",
"file_data": "...base64 encoded bytes here..."
}
},
{
"type": "text",
"text": "What is the first dragon in the book?"
}
]
}
]
}'Consideraciones de uso
Ten en cuenta estas restricciones al usar archivos de entrada:
- Consumo de tokens: al procesar un PDF, la API incluye en el contexto tanto el texto extraído como las imágenes de las páginas, lo que puede aumentar el consumo de tokens. En la API de Responses, configura
detailenauto(el valor predeterminado),lowohighpara controlar el nivel de detalle visual de las imágenes de las páginas del PDF. Antes de implementar a gran escala, revisa los precios y evalúa el consumo de tokens. Más información sobre los precios. - Límites de tamaño de los archivos: puedes incluir varios archivos en una misma solicitud, pero cada archivo debe tener un tamaño inferior a 50 MB. El tamaño total de los archivos de la solicitud no puede superar los 50 MB.
- Modelos compatibles: para procesar tanto el texto como las imágenes de las páginas de un PDF, se necesita un modelo con capacidades de visión, como
gpt-4oo un modelo posterior. - Propósito de la carga: puedes cargar archivos con cualquier propósito admitido, pero usa
user_datapara los archivos que planeas enviar como entrada al modelo.
Lista completa de tipos de archivo admitidos
Esta lista corresponde a la API de Responses. Chat Completions solo admite .pdf (application/pdf) tanto para file_data como para file_id.
| Categoría | Extensiones | Tipos MIME |
|---|---|---|
| Archivos PDF | Archivos PDF (.pdf) |
application/pdf |
| Hojas de cálculo | Hojas de Excel (.xla, .xlb, .xlc, .xlm, .xls, .xlsx, .xlt, .xlw) |
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel |
| Hojas de cálculo | CSV / TSV / IIF (.csv, .tsv, .iif), Hojas de cálculo de Google |
text/csv, application/csv, text/tsv, text/x-iif, application/x-iif, application/vnd.google-apps.spreadsheet |
| Documentos con formato | Documentos de Word, ODT y RTF (.doc, .docx, .dot, .odt, .rtf), Pages, Documentos de Google |
application/vnd.openxmlformats-officedocument.wordprocessingml.document, application/msword, application/rtf, text/rtf, application/vnd.oasis.opendocument.text, application/vnd.apple.pages, application/vnd.google-apps.document, application/vnd.apple.iwork |
| Presentaciones | Diapositivas de PowerPoint (.pot, .ppa, .pps, .ppt, .pptx, .pwz, .wiz), Keynote, Presentaciones de Google |
application/vnd.openxmlformats-officedocument.presentationml.presentation, application/vnd.ms-powerpoint, application/vnd.apple.keynote, application/vnd.google-apps.presentation, application/vnd.apple.iwork |
| Texto y código | Formatos de texto y código (.asm, .bat, .c, .cc, .conf, .cpp, .css, .cxx, .def, .dic, .eml, .h, .hh, .htm, .html, .ics, .ifb, .in, .js, .json, .ksh, .list, .log, .markdown, .md, .mht, .mhtml, .mime, .mjs, .nws, .pl, .py, .rst, .s, .sql, .srt, .text, .txt, .vcf, .vtt, .xml) |
application/javascript, application/typescript, text/xml, text/x-shellscript, text/x-rst, text/x-makefile, text/x-lisp, text/x-asm, text/vbscript, text/css, message/rfc822, application/x-sql, application/x-scala, application/x-rust, application/x-powershell, text/x-diff, text/x-patch, application/x-patch, text/plain, text/markdown, text/x-java, text/x-script.python, text/x-python, text/x-c, text/x-c++, text/x-golang, text/html, text/x-php, application/x-php, application/x-httpd-php, application/x-httpd-php-source, text/x-ruby, text/x-sh, text/x-bash, application/x-bash, text/x-zsh, text/x-tex, text/x-csharp, application/json, text/x-typescript, text/javascript, text/x-go, text/x-rust, text/x-scala, text/x-kotlin, text/x-swift, text/x-lua, text/x-r, text/x-R, text/x-julia, text/x-perl, text/x-objectivec, text/x-objectivec++, text/x-erlang, text/x-elixir, text/x-haskell, text/x-clojure, text/x-groovy, text/x-dart, text/x-awk, application/x-awk, text/jsx, text/tsx, text/x-handlebars, text/x-mustache, text/x-ejs, text/x-jinja2, text/x-liquid, text/x-erb, text/x-twig, text/x-pug, text/x-jade, text/x-tmpl, text/x-cmake, text/x-dockerfile, text/x-gradle, text/x-ini, text/x-properties, text/x-protobuf, application/x-protobuf, text/x-sql, text/x-sass, text/x-scss, text/x-less, text/x-hcl, text/x-terraform, application/x-terraform, text/x-toml, application/x-toml, application/graphql, application/x-graphql, text/x-graphql, application/x-ndjson, application/json5, application/x-json5, text/x-yaml, application/toml, application/x-yaml, application/yaml, text/x-astro, text/srt, application/x-subrip, text/x-subrip, text/vtt, text/x-vcard, text/calendar |
Próximos pasos
Puedes explorar alguno de estos recursos: