Errores y límites
Cuando algo falla, la API responde con un código HTTP y un JSON que explica el motivo en español.
Formato de un error
Todos los errores comparten la misma forma. message es apto para mostrarlo a una persona; para decidir qué hacer en tu código usa statusCode.
Respuesta 400
{
"statusCode": 400,
"message": "amountMinor must be an integer number",
"timestamp": "2026-10-18T14:30:00.000Z",
"path": "/api/platica/accounts/6f1c2a9e-8b4d-4c1e-9a7f-2d5e8b3c1a40/movements"
}Códigos de estado
Respuestas posibles
200 / 201OK / Created- La petición salió bien.
204No Content- Borrado correcto. La respuesta no trae cuerpo.
400Bad Request- Algún dato no es válido. El mensaje dice qué campo falla.
401Unauthorized- Falta la key, está mal copiada, venció o fue revocada.
402Payment Required- La ruta requiere Platica Pro.
403Forbidden- La key no tiene permiso para esta acción.
404Not Found- El recurso no existe o no es tuyo.
409Conflict- La acción choca con el estado actual, por ejemplo un id repetido.
429Too Many Requests- Superaste el límite de peticiones o tu cupo del mes.
5xxServer Error- Falla de nuestro lado. Reintenta en unos segundos.
Límites de uso
- Hasta 120 peticiones por minuto desde una misma dirección IP.
- Algunas rutas costosas tienen un límite propio más bajo, como 10 por minuto.
- Las funciones con inteligencia artificial (asistente, comprobantes, importador) gastan el mismo cupo mensual de tu plan que en la app.
Varias integraciones en el mismo servidor
El límite de 120 por minuto se cuenta por IP. Si corres varias integraciones desde la misma máquina, comparten ese margen.
Reintentar tras un 429
Cuando superas el límite por minuto, la respuesta trae retryAfterSeconds. Espera ese tiempo antes de reintentar.
Respuesta 429
{
"statusCode": 429,
"message": "Vas muy rápido. Espera 42 segundos y vuelve a intentarlo.",
"code": "RATE_LIMITED",
"retryAfterSeconds": 42,
"timestamp": "2026-10-18T14:30:00.000Z",
"path": "/api/platica/accounts"
}async function platica(url, options = {}) {
for (let intento = 0; intento < 3; intento++) {
const res = await fetch(url, options);
if (res.status !== 429) return res;
const { retryAfterSeconds = 60 } = await res.json();
await new Promise((r) => setTimeout(r, retryAfterSeconds * 1000));
}
throw new Error("Platica sigue limitando las peticiones");
}