# Límites de tarifas y simultaneidad
Tripo API aplica límites de velocidad y límites de concurrencia para garantizar la estabilidad del servicio y el uso justo.
## Límites de tarifas
Los límites de tarifas restringen la cantidad de solicitudes API que puede realizar dentro de un período de tiempo.
### Reglas de límite
- Los límites de tarifas se calculan en el nivel **API Key**
- Los límites varían según el punto final. Los puntos finales de generación, como `/v3/generation/*`, tienen límites más bajos, mientras que los puntos finales de consulta, como `/v3/tasks/*`, tienen límites más altos.
- Cuando se excede un límite, API devuelve HTTP `429 Too Many Requests` con el código de error `1007`.
### Encabezados de respuesta
Cada respuesta API incluye encabezados de respuesta relacionados con el límite de velocidad:
| Encabezado de respuesta | Descripción |
| :-: | :-: |
| `X-RateLimit-Limit` | Número máximo de solicitudes permitidas en la ventana de tiempo actual |
| `X-RateLimit-Remaining` | Número de solicitudes restantes disponibles en el período de tiempo actual |
| `X-RateLimit-Reset` | Marca de tiempo de Unix, en segundos, cuando se restablece la ventana de límite de velocidad |
### Respuesta cuando la tasa es limitada
```json
{
"code": 1007,
"message": "Rate limit exceeded, you've generated too many requests in a short amount of time",
"suggestion": "Please wait for a while and try again"
}
```
---
## Límites de simultaneidad
Los límites de simultaneidad restringen la cantidad de tareas que se pueden ejecutar **simultáneamente** en su cuenta. Esto es diferente de los límites de velocidad: los límites de velocidad limitan la frecuencia de solicitud, mientras que los límites de concurrencia limitan las tareas de ejecución paralela.
### Cómo funciona
- La simultaneidad se calcula a nivel de **cuenta** (no según API Key)
- Se aplican límites **por categoría de tarea**: cada categoría tiene su propio grupo de simultaneidad independiente.
- Cuando la simultaneidad de una categoría está llena, la creación de una nueva tarea para esa categoría devuelve HTTP `429` con el código de error `2000`.
- Las tareas de otras categorías **no se ven afectadas**: aún puedes crear tareas en categorías que tengan espacios disponibles
### Límites predeterminados
Todos los usuarios comienzan con una simultaneidad predeterminada de **10** por categoría; algunas categorías tienen límites diferentes (consulte la tabla a continuación).
| categoría | Tipos de tareas incluidas | Simultaneidad predeterminada |
| :-: | :-: | :-: |
| Generación 3D: Serie H | texto a modelo (H), imagen a modelo (H), vista múltiple a modelo (H) | 10 |
| Generación 3D: Serie P | texto a modelo (P), imagen a modelo (P), vista múltiple a modelo (P) | 5 |
| Generación de imágenes | texto a imagen, imagen a imagen, imagen a vista múltiple, edición de vista múltiple | 1 |
| Animación | auto-rig, rig-check, animación-retarget | 10 |
| Procesamiento de modelos | textura, convertir formato, refinar | 5 |
| Operaciones de malla | segmentación, finalización, retopología | 10 |
> **Nota:** Las tareas dentro de la misma categoría comparten el grupo de simultaneidad. Por ejemplo, si tiene 10 tareas de texto a modelo de la serie H en ejecución, no puede iniciar una tarea de imagen a modelo de la serie H hasta que se complete una. Sin embargo, aún puede iniciar tareas de generación de imágenes o de la serie P.
### Respuesta cuando se excede la simultaneidad
```json
{
"code": 2000,
"message": "You have exceeded the limit of generation",
"suggestion": "Try again later. You can also check `Retry-After` header."
}
```
La respuesta incluye un encabezado `Retry-After` que indica cuántos segundos esperar antes de volver a intentarlo.
### Aumento de la simultaneidad
Para solicitar límites de concurrencia más altos, comuníquese con nuestro equipo a través del canal de soporte. La simultaneidad personalizada se puede configurar por categoría según sus necesidades de uso.
---
## Manejando 429 respuestas
### Python
```python
import time
import requests
def request_with_backoff(method, url, headers, json=None, max_retries=5):
for attempt in range(max_retries):
response = requests.request(method, url, headers=headers, json=json)
if response.status_code != 429:
return response
retry_after = response.headers.get("Retry-After")
reset_at = response.headers.get("X-RateLimit-Reset")
if retry_after:
wait = int(retry_after)
elif reset_at:
wait = max(int(reset_at) - int(time.time()), 1)
else:
wait = 2 ** attempt
print(f"429 triggered. Waiting {wait} seconds (attempt {attempt + 1})...")
time.sleep(wait)
raise Exception("Maximum retry attempts exhausted")
```
### JavaScript
```javascript
async function requestWithBackoff(url, options, maxRetries = 5) {
for (let attempt = 0; attempt < maxRetries; attempt++) {
const response = await fetch(url, options);
if (response.status !== 429) {
return response;
}
const retryAfter = response.headers.get("Retry-After");
const resetAt = response.headers.get("X-RateLimit-Reset");
const wait = retryAfter
? Number(retryAfter)
: resetAt
? Math.max(Number(resetAt) - Math.floor(Date.now() / 1000), 1)
: 2 ** attempt;
console.log(`429 triggered. Waiting ${wait} seconds (attempt ${attempt + 1})...`);
await new Promise(resolve => setTimeout(resolve, wait * 1000));
}
throw new Error("Maximum retry attempts exhausted");
}
```
## Mejores prácticas
- **Implementar reintentos de retroceso exponencial**: Espere 1 segundo inicialmente, duplique la espera cada vez y limite la espera máxima a 32 segundos.
- **Prefiera los encabezados `Retry-After` y `X-RateLimit-Reset`**: espere exactamente hasta que se restablezca la ventana de límite
- **Diseño para simultaneidad a nivel de categoría**: distribuya las cargas de trabajo entre categorías cuando sea posible; la generación de imágenes y la generación 3D tienen grupos separados
- **Utilice lotes API**: utilice `POST /v3/tasks/list` en lugar de varias solicitudes `GET /v3/tasks/{task_id}`
- **Encuesta con prudencia**: cuando esperes a que se complete la tarea, realiza una encuesta a intervalos razonables (cada 1 o 2 segundos) en lugar de inundar el punto final de la consulta.
Límites de tarifas y simultaneidad
Tripo API aplica límites de velocidad y límites de concurrencia para garantizar la estabilidad del servicio y el uso justo.
Límites de tarifas
Los límites de tarifas restringen la cantidad de solicitudes API que puede realizar dentro de un período de tiempo.
Reglas de límite
Los límites de tarifas se calculan en el nivel API Key
Los límites varían según el punto final. Los puntos finales de generación, como /v3/generation/*, tienen límites más bajos, mientras que los puntos finales de consulta, como /v3/tasks/*, tienen límites más altos.
Cuando se excede un límite, API devuelve HTTP 429 Too Many Requests con el código de error 1007.
Encabezados de respuesta
Cada respuesta API incluye encabezados de respuesta relacionados con el límite de velocidad:
Encabezado de respuesta
Descripción
X-RateLimit-Limit
Número máximo de solicitudes permitidas en la ventana de tiempo actual
X-RateLimit-Remaining
Número de solicitudes restantes disponibles en el período de tiempo actual
X-RateLimit-Reset
Marca de tiempo de Unix, en segundos, cuando se restablece la ventana de límite de velocidad
Respuesta cuando la tasa es limitada
JSON
{
"code":1007,
"message":"Rate limit exceeded, you've generated too many requests in a short amount of time",
"suggestion":"Please wait for a while and try again"}
Límites de simultaneidad
Los límites de simultaneidad restringen la cantidad de tareas que se pueden ejecutar simultáneamente en su cuenta. Esto es diferente de los límites de velocidad: los límites de velocidad limitan la frecuencia de solicitud, mientras que los límites de concurrencia limitan las tareas de ejecución paralela.
Cómo funciona
La simultaneidad se calcula a nivel de cuenta (no según API Key)
Se aplican límites por categoría de tarea: cada categoría tiene su propio grupo de simultaneidad independiente.
Cuando la simultaneidad de una categoría está llena, la creación de una nueva tarea para esa categoría devuelve HTTP 429 con el código de error 2000.
Las tareas de otras categorías no se ven afectadas: aún puedes crear tareas en categorías que tengan espacios disponibles
Límites predeterminados
Todos los usuarios comienzan con una simultaneidad predeterminada de 10 por categoría; algunas categorías tienen límites diferentes (consulte la tabla a continuación).
categoría
Tipos de tareas incluidas
Simultaneidad predeterminada
Generación 3D: Serie H
texto a modelo (H), imagen a modelo (H), vista múltiple a modelo (H)
10
Generación 3D: Serie P
texto a modelo (P), imagen a modelo (P), vista múltiple a modelo (P)
5
Generación de imágenes
texto a imagen, imagen a imagen, imagen a vista múltiple, edición de vista múltiple
1
Animación
auto-rig, rig-check, animación-retarget
10
Procesamiento de modelos
textura, convertir formato, refinar
5
Operaciones de malla
segmentación, finalización, retopología
10
Nota: Las tareas dentro de la misma categoría comparten el grupo de simultaneidad. Por ejemplo, si tiene 10 tareas de texto a modelo de la serie H en ejecución, no puede iniciar una tarea de imagen a modelo de la serie H hasta que se complete una. Sin embargo, aún puede iniciar tareas de generación de imágenes o de la serie P.
Respuesta cuando se excede la simultaneidad
JSON
{
"code":2000,
"message":"You have exceeded the limit of generation",
"suggestion":"Try again later. You can also check `Retry-After` header."}
La respuesta incluye un encabezado Retry-After que indica cuántos segundos esperar antes de volver a intentarlo.
Aumento de la simultaneidad
Para solicitar límites de concurrencia más altos, comuníquese con nuestro equipo a través del canal de soporte. La simultaneidad personalizada se puede configurar por categoría según sus necesidades de uso.
Implementar reintentos de retroceso exponencial: Espere 1 segundo inicialmente, duplique la espera cada vez y limite la espera máxima a 32 segundos.
Prefiera los encabezados Retry-After y X-RateLimit-Reset: espere exactamente hasta que se restablezca la ventana de límite
Diseño para simultaneidad a nivel de categoría: distribuya las cargas de trabajo entre categorías cuando sea posible; la generación de imágenes y la generación 3D tienen grupos separados
Utilice lotes API: utilice POST /v3/tasks/list en lugar de varias solicitudes GET /v3/tasks/{task_id}
Encuesta con prudencia: cuando esperes a que se complete la tarea, realiza una encuesta a intervalos razonables (cada 1 o 2 segundos) en lugar de inundar el punto final de la consulta.