MoreLogin API aplica límites de tarifas para garantizar un uso justo y la estabilidad del sistema.
| Tipo de API | Límite de tarifa | ventana |
|---|---|---|
| API locales | 120 solicitudes | por minuto |
| API abierta | 120 solicitudes | por minuto |
Cuando excede el límite de tasa, la API devuelve:
Estado HTTP: 429 Too Many Requests
{
"code": 429,
"msg": "Rate limit exceeded",
"data": null,
"requestId": "..."
}import time
import requests
def api_request_with_retry(url, payload, max_retries=3):
for attempt in range(max_retries):
response = requests.post(url, json=payload)
if response.status_code == 429:
wait_time = 2 ** attempt # 1s, 2s, 4s
print(f"Rate limited. Retrying in {wait_time}s...")
time.sleep(wait_time)
continue
return response
raise Exception("Max retries exceeded")En lugar de realizar llamadas API individuales, utilice puntos finales por lotes cuando estén disponibles:
# Bad: 100 individual calls
for env_id in env_ids:
requests.post(f"{BASE}/api/env/start", json={"envId": env_id})
# Good: Use batch endpoints
requests.post(f"{BASE}/api/env/updateGroup/batch", json={
"envIds": env_ids,
"groupId": "target-group"
})Para datos que no cambian con frecuencia (por ejemplo, listas de zonas horarias, listas de plataformas), almacene en caché la respuesta localmente:
# Cache timezone/language data — it rarely changes
timezone_data = requests.post(f"{BASE}/api/env/advanced/timezone").json()
# Reuse timezone_data for subsequent profile creationsRealice un seguimiento de la frecuencia de sus llamadas API. Si se acerca constantemente al límite, considere:
- Distribuir solicitudes de manera uniforme a lo largo del minuto
- Usar webhooks (próximamente) en lugar de realizar encuestas
- Combinar múltiples operaciones en llamadas por lotes