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

# CPF — Cargar Excel

> Carga un Excel .xlsx de CPF para la instancia Gu1 actual. No se cobra como consulta.

## Request

```http theme={null}
POST /api/integration-services/ar_gueno_cpf_service/corpus/upload
```

`multipart/form-data` con un solo campo:

| Campo | Regla |
| - | - |
| `file` | `.xlsx`, máximo 32 MB. El nombre del archivo es el del objeto guardado y no puede incluir una ruta. |

Gu1 elige la instancia que guarda el archivo. No envíes un campo tenant. El mismo nombre con otro contenido se rechaza hasta que uses otro nombre. Un libro cuyo contenido ya estaba cargado se conserva y se informa como ya presente. No hace falta una llamada posterior para procesarlo.

**Facturación:** no se cobra como consulta. Requiere el servicio CPF activo en la organización, `services:execute` y `services:upload`. Las consultas siguen en `services:execute`.

## Éxito

`200` con `data.status` `loaded` significa que el libro quedó guardado. `recordCount` es la cantidad de operaciones insertadas. Si `duplicateContent` es `true`, el archivo quedó guardado y las operaciones ya estaban (`recordCount` es `0`).

`200` con `data.status` `already_loaded` significa que esta instancia ya tenía ese mismo archivo. No se reescribió.

```json theme={null}
{
  "success": true,
  "data": {
    "integrationCode": "ar_gueno_cpf_service",
    "status": "loaded",
    "tenant": "bna",
    "r2Key": "bna/cpf/incoming/operaciones.xlsx",
    "fileName": "operaciones.xlsx",
    "fileHash": "<sha256>",
    "recordCount": 1200,
    "duplicateContent": false
  }
}
```

## En cola

`202` con `data.status` `accepted_pending` significa que el archivo quedó guardado y el procesamiento espera. `reason` es `holders_busy`, `holders_day_pending` o `lock_held`.

## Errores

| HTTP | `error.code` | Cuándo |
| - | - | - |
| 400 | `missing_file` | Falta el campo `file` |
| 400 | `invalid_name` | El nombre no es `.xlsx` o incluye una ruta |
| 400 | `file_too_large` | Pesa más de 32 MB |
| 400 | `invalid_tenant` | Esta instancia no puede guardar el archivo |
| 409 | `conflict` | Ese nombre ya existe con otro contenido |
| 422 | `invalid_format` | El libro no es el formato CPF. `error.message` dice qué columna falta |
| 503 | `TENANT_SLUG_REQUIRED` | Esta instancia no está configurada para guardar el archivo |
| 503 | `SERVICE_UNAVAILABLE` | El servicio no está disponible |


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