# Límites

Toda API de Inovacc acota el tamaño de lo que envías, cuánto puede tardar una llamada y con qué frecuencia puedes llamar. Esta guía lista esos límites por API y explica qué ocurre cuando alcanzas cada uno, para que tu código pueda mantenerse por debajo de ellos o manejar el rechazo. Los valores marcados "por organización" los configura Inovacc para tu organización; los demás son fijos.

## Cómo responden los límites

| Alcanzas | Respuesta | Qué hacer |
|---|---|---|
| Un límite de tamaño (cuerpo, archivo, registro, elemento) | `413` (`request_too_large`, `payload_too_large`, `url_too_large`), o `400` para un campo o documento demasiado grande | Envía menos, o usa la carga por partes |
| Un límite de cantidad (documentos por llamada, operaciones por lote, elementos por colección) | `400 invalid_body`, `400 batch_too_large` o `409 collection_full` | Divide la llamada; inicia una colección nueva |
| Un límite de tasa | `429 rate_limited`, con `Retry-After` en la API de IA | Espera y luego reintenta |
| Una asignación de tokens, costo o concurrencia (IA) | `429 quota_exceeded` o `429 concurrency_limited`, sin `Retry-After` | Reduce el ritmo durante minutos, o aumenta la asignación |
| Un presupuesto diario (IA) | `429 budget_exhausted`, `Retry-After` hasta las 00:00 UTC | Espera al siguiente día UTC |
| Un tope de entrada por solicitud (IA) | `400 input_too_large` | Acorta la entrada |

Una llamada rechazada en un límite se rechaza antes de que empiece su trabajo: no se llama a nada en tu nombre y no se escribe nada.

## IA

| Límite | Valor |
|---|---|
| Cuerpo de solicitud (chat, embeddings, run) | 1 MiB por defecto; por organización, de 1 KiB a 20 MiB |
| Tokens de entrada por solicitud | por organización (`400 input_too_large`) |
| Tokens de salida por solicitud | el menor entre el techo de la ruta y el de tu organización; un `max_tokens` mayor se reduce, no se rechaza |
| Tiempo hasta que el modelo empieza a responder | 60 segundos (`504 timeout_error`); no en `/v1/run` |
| Imágenes en una solicitud de chat | 20 |
| Costo de entrada estimado de una imagen | 1,600 tokens |
| Respuesta almacenada para una repetición idempotente | 24 horas |
| Una llamada mantenida como en curso | 5 minutos |
| Vector Database: documentos por ingesta, ids por eliminación | 100 |
| Vector Database: un documento (`id` + `text` + `metadata`) | 10 KiB |
| Vector Database: cuerpo de la solicitud | 1 MiB |
| Consulta vectorial: texto; `top_k` | 8,000 caracteres; 50 |
| Elemento de colección en el cuerpo de una solicitud, o por URL | 16 MiB |
| Colección | 100 elementos; 1 GiB de archivos enviados en solicitudes; 20 GiB de video por carga |
| Parte de una carga | 64 MiB, todas las partes menos la última |
| Carga que no es video (transcripción, notas) | 16 MiB |
| Carga de grabación | por organización |
| Resultado de un trabajo de conocimiento | se conserva 24 horas |
| Lecturas de actividad y de uso | hasta 366 días y 92 días por llamada |

**Cuotas por organización.** Cada una de estas se configura para tu organización, y es ilimitada cuando no se configura:

| Asignación | Ventana | Cuando se alcanza |
|---|---|---|
| Solicitudes | por minuto de reloj UTC, por día UTC | `429 rate_limited`, `Retry-After` hasta el siguiente minuto o día |
| Tokens | por día UTC, por mes UTC | `429 quota_exceeded` |
| Costo | por día UTC, por mes UTC | `429 quota_exceeded` |
| Llamadas concurrentes | en cualquier momento | `429 concurrency_limited` |
| Presupuesto diario, por proveedor y opcionalmente por aplicación | por día UTC | `429 budget_exhausted`, `Retry-After` hasta las 00:00 UTC |

Una solicitud cuenta contra los límites de solicitudes por minuto y por día en cuanto se admite, aunque falle después. Los límites de tokens y costo permiten una llamada que alcanza exactamente el límite. Desde el nivel de aviso de un presupuesto (80% por defecto), las respuestas llevan `X-Budget-Warning` antes de que se empiecen a rechazar las llamadas.

## Datos y Archivos

| Límite | Valor |
|---|---|
| Cuerpo de solicitud JSON | 1 MiB (`413 payload_too_large`) |
| Un registro | 900 KiB (`400 record_too_large`) |
| Un campo `json` | 64 KiB |
| Campos por colección; colecciones por base de datos | 64; 64 |
| Registros por página | 200 (por defecto 50) |
| Operaciones por lote | 100, una transacción |
| Filtro | 2,048 caracteres, 40 valores, profundidad de anidamiento 8 |
| Cadena de consulta | 16 KiB (`400 invalid_query`) |
| Archivo o blob en una solicitud | 100 MiB, con `Content-Length` (`411` sin él) |
| Archivo o blob por partes | 5 GiB; partes de 5 MiB a 100 MiB, numeradas de 1 a 10,000 |
| Ruta de archivo; prefijo de listado; metadatos de archivo | 1,024 bytes; 256 bytes; 2 KiB |
| Oyentes en tiempo real por colección; un evento | 1,000; 512 KiB |
| Página del Registro de actividad | 1 a 500 (por defecto 100) |
| Tasa | 600 solicitudes por minuto por titular de credencial, por ubicación (`429 rate_limited`) |

El límite de tasa se cuenta por ubicación y es un freno, no un conteo exacto.

## Eventos

| Límite | Valor |
|---|---|
| Cuerpo de la solicitud | 5 MiB (`413 payload_too_large`) |
| Eventos por publicación | 100 |
| `data` por evento | 16 KiB (`basic`, `reliable`), 32 KiB (`advanced`) |
| Ventana de deduplicación de un `idempotency_key` | 168 horas |
| Suscripciones por espacio de trabajo; patrones por suscripción | 50; 20 |
| Mensajes por pull; arrendamiento del pull | 100; de 5 a 300 segundos |
| Tiempo de respuesta del webhook | 10 segundos |
| Reintentos del webhook | desde 10 segundos, duplicándose hasta 10 minutos; tope de 5 |
| Mensajes muertos conservados | 30 días |
| Tasa | 600 llamadas por minuto por credencial, por ubicación (`429 rate_limited`) |

## Cómo mantenerte por debajo de los límites

- **Agrupa en lotes**: envía hasta 100 documentos, operaciones o eventos por llamada en lugar de uno cada vez.
- **Carga los archivos grandes por partes** en lugar de aumentar los tamaños de cuerpo.
- **Espera ante `429`**: respeta `Retry-After`, y agrega variación aleatoria para que muchos clientes no reintenten en el mismo instante.
- **Configura `max_tokens`** en las llamadas de chat: reduce lo que cada llamada reserva contra tus cuotas.
- **Vigila `X-Budget-Warning`** y el resumen de uso de IA para ver venir una asignación antes de que se agote.

## Ver también

- [Errores](/es/guides/errors/): cada código y la política de reintentos.
- [Autenticación](/es/guides/authentication/): credenciales e idempotencia.
- Cada página de producto lista sus propios límites completos.
