> ## Documentation Index
> Fetch the complete documentation index at: https://docs.tokenlab.sh/llms.txt
> Use this file to discover all available pages before exploring further.

# Recuperar contenido del archivo

> Descarga el contenido original de un archivo subido.

## Resumen

Este endpoint sirve principalmente a la recuperación de contenido de archivos de la API Batch compatible con OpenAI de TokenLab.

Cuando la solicitud entra en modo de compatibilidad con Anthropic Files, la misma ruta también puede hacer proxy del contenido original almacenado del archivo para el workspace enlazado.

Sin encabezados Anthropic, esta ruta descarga contenido de archivos de lote o proxifica contenido de un archivo de imagen/referencia vinculado cuando el proveedor lo permite.

## Notas

* Los archivos de entrada del lote deben usar `purpose=batch`.
* `completion_window` es actualmente `24h`.
* El orden de salida no está garantizado; siempre empareja por `custom_id`.
* No se admite streaming dentro de elementos del lote.

## Ejemplo

<RequestExample>
  ```bash cURL theme={null}
  curl -X GET "https://api.tokenlab.sh/v1/files/file_abc123/content" \
    -H "Authorization: Bearer sk-your-api-key" \
    --output batch-output.jsonl
  ```
</RequestExample>

## Solicitud / Respuesta

Usa el panel OpenAPI interactivo de arriba para ver el esquema exacto.

## Consejos operativos

* Usa `custom_id` para reconciliación descendente idempotente.
* Espera `output_file_id` y `error_file_id` solo después de que el worker finalice el lote.
* El precio del lote puede diferir del síncrono porque se aplican las reglas de descuento `isBatchRequest=true`.

## Ejemplo de respuesta

<ResponseExample>
  ```jsonl 200 OK theme={null}
  {"custom_id":"request-1","response":{"status_code":200,"body":{"id":"chatcmpl_abc123"}}}
  {"custom_id":"request-2","error":{"code":"invalid_request_error","message":"Invalid model"}}
  ```
</ResponseExample>

## Campos importantes

<ResponseField name="body" type="binary|string">Cuerpo bruto de la respuesta. Guárdalo directamente sin parsearlo como JSON.</ResponseField>
<ResponseField name="custom_id" type="string">Identificador para llamadas posteriores y soporte.</ResponseField>
