Platica

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");
}

¿Dudas o algo no funciona? Escríbenos a [email protected]

Actualizado el 18 de octubre de 2026