# Límites y límites de solicitudes
Su plan define límites: llamadas por minuto, cuánto puede leer una consulta, tamaño de subida, claves de API activas y más. Léalos desde el código para acertar a la primera.
## Lea sus límites [#lea-sus-límites]
### En Python [#en-python]
```python title="limits.py"
from klarety import Nexus
with Nexus.connect() as nexus:
limits = nexus.limits()
print("Plan family:", limits.family)
for knob in limits.knobs:
value = knob.fixed if knob.fixed is not None else knob.default
print(f"{knob.name}: {value} {knob.unit or ''} ({knob.description})")
```
`nexus.limits()` devuelve un objeto `Limits`:
| Campo | Significado |
| --- | --- |
| `family` | La familia de su plan. |
| `knobs` | Cada límite, como un `Knob`. |
| `studio_sizes` | Cada tamaño de Studio que ofrece su plan, con `cores` y `memory_gb`. |
Busque un límite por nombre con `limits.knob("api_key.max_active")`. Lanza `KeyError` cuando no existe ese límite.
### Qué contiene un knob [#qué-contiene-un-knob]
| Campo | Significado |
| --- | --- |
| `name` | El nombre del límite. |
| `description` | Qué limita, en palabras. |
| `kind`, `unit` | Su tipo y su unidad. |
| `fixed` | El valor, cuando su plan lo fija. |
| `default`, `minimum`, `maximum` | El valor por defecto y el rango, cuando un proyecto puede elegir dentro de él. |
| `choices` | Los valores permitidos, para un límite que es una elección. |
| `settable_on_project` | Si un proyecto puede definir su propio valor. |
### Por HTTP [#por-http]
```bash
curl -s https://api.klarety.ai/v1/limits -H "Authorization: Bearer $TOKEN"
```
### En la app [#en-la-app]
Abra para ver sus créditos, su gasto y los límites de su plan.
`limits()` describe su plan. El servidor igual revisa cada solicitud, así que maneje los rechazos de todos modos.
## Límites fijos [#límites-fijos]
Son iguales en todos los planes:
| Límite | Valor |
| --- | --- |
| Cuerpo de la solicitud | 1 MiB. Los datos más grandes van por una subida, no en la solicitud. |
| Enlace de subida | Dura una hora. |
| `max_rows` en una sentencia SQL | De 1 a 10.000, y nunca más que la página de filas de su plan. |
| Parámetros SQL | Hasta 256 por sentencia. |
| Filas cambiadas por un `edit_rows()` | Hasta 500. |
| Sentencias en un trabajo por lotes | De 1 a 50. |
| Aristas enviadas en un `assert_edges()` | Hasta 1.000. |
## Cuando llega a un límite [#cuando-llega-a-un-límite]
| Qué pasa | Estado | Excepción del SDK | Qué hacer |
| --- | --- | --- | --- |
| Demasiadas llamadas por minuto | `429` con `Retry-After` | `RateLimitedError` | El SDK espera y reintenta. Haga su ciclo más lento. |
| Todos los espacios de sentencias ocupados | `429` | `OverBudgetError` | El SDK espera y reintenta. Envíela más tarde. |
| Una consulta leería demasiado | `413` | `OverBudgetError` | Acótela; verifique con `nexus.estimate()`. |
| Cuerpo de más de 1 MiB | `413` | `OverBudgetError` | Envíe menos, o suba un archivo. |
| Sin créditos | `402` | `InsufficientCreditsError` | Agregue créditos. |
| Otro límite del plan | `403` o `422` | `RefusedError` | El campo `limit` del error lo nombra. |
El límite que rechaza se nombra en el campo `limit` del error, para que pueda pedir aumentarlo. Vea [Errores](/docs/es/developers/errors).
## Próximos pasos [#próximos-pasos]
- [Errores](/docs/es/developers/errors) para el formato completo de errores.
- [Ejecutar SQL](/docs/es/developers/sql) para estimar una consulta antes de ejecutarla.
- [Autenticación](/docs/es/developers/authentication) para administrar las claves activas.