Saltar al contenido
Almanac.ar

Desarrolladores · Referencia

Todos los errores, en un solo lugar

Cada error de la API viene con la forma { error, message } (algunos usan mensaje en vez de message — documentado tal cual es, no lo escondemos). Hoy esta página cubre los endpoints del Informe por CUIT (/v1/reports, /v1/reports/quote, /v1/balance) — a medida que sumemos APIs nuevas al catálogo, se va a extender acá mismo. El detalle de cada endpoint vive además en su propia página.

400 — Bad Request

400cuit_requerido

Falta el CUIT en el body o la query.

400cuit_invalido

El CUIT/CUIL no tiene 11 dígitos, el tipo (primeros 2 dígitos) no es válido, o el dígito verificador no cierra. Trae reason: formato | tipo | digito_verificador.

400body_invalido

El body de POST /v1/reports no es JSON válido.

401 — Unauthenticated

401unauthenticated

Ningún endpoint autenticado de esta sección acepta requests sin sesión ni API key.

402 — Payment Required

402saldo_insuficiente

Sólo en POST /v1/reports, y sólo con el modelo de saldo habilitado. Trae tipo_accion, costo_unidades, saldo actual y los packs disponibles para comprar.

403 — Forbidden

403account_suspended

La cuenta está suspendida.

403channel_disabled

Tu plan no tiene habilitado el canal API REST (plan_prices.api_rest_enabled) — requiere Ultimate, Team o Enterprise. Trae upgrade_url. NO aplica a la consola de esta doc (corre con sesión, no con API key).

403forbidden

Sólo en POST /v1/reports por sesión: origen no confiable (protección CSRF). No aplica si autenticás con API key.

404 — Not Found

404not_found

Sólo en GET /v1/reports/{id}: el informe no existe, o pertenece a otra cuenta (nunca revela cuál de las dos).

409 — Conflict

409generacion_en_curso

Sólo en POST /v1/reports: ya hay una generación en curso para este CUIT y esta cuenta (deduplicación de requests concurrentes). Trae el header Retry-After.

429 — Too Many Requests

429rate_limited

Ritmo de consultas por encima del límite del endpoint (ver Límites). Trae Retry-After.

429daily_limit_exceeded

Sólo en POST /v1/reports, sólo en el modelo SIN saldo (tope diario de producto). Trae limit con el tope del día.

500 — Internal

500internal

Error inesperado. El mensaje siempre es genérico — nunca se propaga el detalle de la excepción.

500informe_no_persistido

Sólo en POST /v1/reports: el Motor corrió pero el informe no se pudo guardar. No se cobró nada.

Errores — Desarrolladores — Almanac · Almanac