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

# Cargar documentos de RFI

> Carga un archivo para una pregunta de solicitud de información y obtén el fileId que envías con submitRfi.

## Descripción general

Las preguntas de tipo `MULTI_UPLOAD`, `BANK_LINK_OR_STATEMENT` y `ADDRESS_VERIFICATION_OR_DOCUMENT` se responden con archivos. Carga primero cada archivo en este endpoint, para la pregunta que responde, y luego pasa los valores de `fileId` devueltos a [submitRfi](https://docs.fluz.app/submit-rfi).

Cargar un archivo no responde la pregunta por sí solo. No se guarda nada en el RFI hasta que llames a `submitRfi`.

## Scopes requeridos

| Propiedad | Valor |
| - | - |
| Endpoint | REST — `POST /api/v1/file-upload/rfi-document` |
| Autenticación | OAuth Bearer Token. No se acepta Basic auth |
| Content-Type | `multipart/form-data` |
| Scopes requeridos | `MANAGE_RFI` |

El token debe ser el del mismo cliente cuyo token usas para leer el RFI. Consulta [Quién puede responder un RFI](https://docs.fluz.app/rfi-overview#who-can-answer-an-rfi).

| Entorno | URL |
| - | - |
| Staging | `POST https://transactional-graph.staging.fluzapp.com/api/v1/file-upload/rfi-document` |
| Producción | `POST https://transactional-graph.fluzapp.com/api/v1/file-upload/rfi-document` |

## Parámetros

Se envían como campos `multipart/form-data`:

| Campo | Tipo | Requerido | Descripción |
| - | - | - | - |
| `file` | `File` | Sí | Un archivo. Tamaño máximo de 5 MB. Consulta [Tipos de archivo aceptados](#accepted-file-types) |
| `rfiId` | `UUID` | Sí | El RFI al que pertenece el archivo |
| `questionId` | `String` | Sí | La pregunta que responde el archivo, tomada de `RfiQuestion.questionId` |

Carga un archivo por llamada. Para una pregunta que admite varios archivos, llama al endpoint una vez por archivo y conserva cada `fileId`.

### Tipos de archivo aceptados

El tipo se detecta a partir del contenido del archivo, no de su nombre ni del `Content-Type` que envíes.

| Tipo de pregunta | Aceptados |
| - | - |
| `MULTI_UPLOAD` | PDF, PNG, JPEG, GIF, WebP, CSV, TXT, DOC, DOCX, XLS, XLSX |
| `BANK_LINK_OR_STATEMENT` | PDF, PNG, JPEG, GIF, WebP |
| `ADDRESS_VERIFICATION_OR_DOCUMENT` | PDF, PNG, JPEG, GIF, WebP |

## Ejemplo con cURL

```bash theme={null}
curl -X POST https://transactional-graph.staging.fluzapp.com/api/v1/file-upload/rfi-document \
  -H "Authorization: Bearer <ACCESS_TOKEN>" \
  -F "file=@/path/to/articles-of-organization.pdf" \
  -F "rfiId=7c1e2a90-4b3d-4f6e-9a18-3d5b2c7e8f01" \
  -F "questionId=q_formation"
```

## Detalles de la respuesta

### Éxito — `200 OK`

| Campo | Tipo | Descripción |
| - | - | - |
| `fileId` | `UUID` | Pásalo a `submitRfi` en la respuesta de la pregunta |
| `fileName` | `String` | El nombre original del archivo cargado |

```json theme={null}
{
  "fileId": "b52f0e4a-1c7d-4a9b-8e36-0f2d9c4a7b15",
  "fileName": "articles-of-organization.pdf"
}
```

Luego responde la pregunta con los IDs de archivo:

```json theme={null}
{
  "questionId": "q_formation",
  "value": [
    { "fileId": "b52f0e4a-1c7d-4a9b-8e36-0f2d9c4a7b15" }
  ]
}
```

Un `fileId` solo se puede usar para la pregunta para la que se cargó, y solo una vez.

## Códigos de error

| HTTP | Código | Descripción | Cómo resolverlo |
| - | - | - | - |
| `401` | `AUTH-0008` | No hay token Bearer de usuario, o se usó Basic auth | Llama con el token Bearer del cliente |
| `403` | `AUTH-0031` | Al token le falta `MANAGE_RFI` | Agrega el scope y genera el token de nuevo |
| `400` | `ARG-0002` | No se incluyó ningún `file` | Envía el archivo como un campo `multipart/form-data` llamado `file` |
| `400` | `ARG-0001` | `rfiId` no es un UUID, falta `questionId` o es demasiado largo, o el tipo de archivo no se acepta para esta pregunta | Revisa los campos y los [tipos de archivo aceptados](#accepted-file-types) |
| `403` | `G-0003` | El RFI no existe, o no está dirigido al usuario y la cuenta del token | Usa el token con el que leíste el RFI |
| `400` | `UNKNOWN_QUESTION` | El RFI no tiene ninguna pregunta respondible con este `questionId` | Usa un `questionId` de las preguntas actuales del RFI |
| `400` | `NOT_A_FILE_QUESTION` | La pregunta no se responde con archivos | Respóndela en `submitRfi` con el valor que espera su tipo |
| `400` | `ALREADY_SUBMITTED` | La pregunta ya tiene una respuesta guardada, incluido un vínculo bancario guardado con `completeRfiPlaidLink` | No hay nada que cargar. Las respuestas guardadas no se pueden cambiar |
| `409` | `RFI_NOT_OPEN` | El RFI no está esperando respuestas | Lee el RFI para ver su estado |
| `409` | `RFI_EXPIRED` | El RFI ha expirado | Dirige al cliente a soporte |

Los archivos de más de 5 MB se rechazan antes de procesarse. Verifica el tamaño en tu interfaz antes de cargarlos.

## Notas

* Carga justo antes de enviar, para que los archivos y las respuestas pertenezcan a la misma sesión.
* Los archivos se almacenan en el RFI en cuanto se cargan, pero no forman parte de la respuesta del cliente hasta que `submitRfi` incluya su `fileId`.
* Nombra los archivos con claridad (por ejemplo `operating-agreement.pdf`). No es obligatorio, pero agiliza la revisión.

## Páginas relacionadas

> [card] [Enviar un RFI](https://docs.fluz.app/submit-rfi)
>
> Dónde se envían los valores de `fileId` devueltos.

> [card] [Responder con un vínculo bancario](https://docs.fluz.app/complete-rfi-plaid-link)
>
> Para preguntas de estado de cuenta bancario y comprobante de domicilio, sin archivo.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.