Skip to content

Errores ​

Los mismos códigos en toda la API. Person Search, la consulta por fuente y las validaciones comparten el formato de error y el significado de cada código; lo único que cambia es qué lo dispara.

El cuerpo sigue la forma de Nest:

json
{ "statusCode": 400, "message": "…", "error": "Bad Request" }

message puede ser un string o un array de strings (validación).

Códigos ​

HTTPSignificadoEjemplos por superficie
200Ejecutado (puede ser total o parcial — ver partial).También los veredictos negativos: email INVALID_SYNTAX, teléfono PROVIDER_ERROR.
400El request no pudo ejecutarse.Sin claves; entityType incompatible; fuente sin sus claves obligatorias; sobre mal formado.
401API Key ausente o inválida.Igual en todas.
403Scopes insuficientes (ALL_OF).Falta person_search:advanced; falta provider:bcra; falta utils:phone:hlr.
404Recurso inexistente o no expuesto.Search Model desconocido; slug de fuente desconocido.
429Rate-limit o cuota (ver abajo).Igual en todas.

"No pude ejecutar" ≠ "no encontré"

Un 400 significa que la consulta no se pudo correr. Una consulta válida que no encuentra nada devuelve 200 con subjects: []. La API nunca colapsa las dos cosas.

Ejemplos ​

400 — sin claves

json
{ "message": ["Se requiere al menos una clave de búsqueda (cuit/dni/name/birthDate)"], "error": "Bad Request", "statusCode": 400 }

400 — la fuente exige una clave que no enviaste

json
{ "message": "Ninguna fuente de descubrimiento del modelo puede ejecutarse con las claves provistas [NAME]. Requisitos mínimos por fuente: BCRA(CUIT)", "error": "Bad Request", "statusCode": 400 }

401 — sin key

json
{ "statusCode": 401, "message": "API Key requerida", "error": "Unauthorized" }

403 — falta scope

json
{ "statusCode": 403, "message": "Scopes insuficientes: person_search:advanced", "error": "Forbidden" }

404 — modelo o fuente inexistente

json
{ "message": "Search Model \"NOPE\" inexistente", "error": "Not Found", "statusCode": 404 }
json
{ "message": "Fuente \"nope\" inexistente o no disponible", "error": "Not Found", "statusCode": 404 }

Los 404 no revelan el catálogo interno: un recurso que existe pero no está expuesto responde igual que uno que no existe.

429 — dos casos distintos ​

No hay cabecera Retry-After

La pista de reintento viaja en el cuerpo (retryAfterMs), no en una cabecera HTTP.

Rate-limit (ventana por minuto) — incluye retryAfterMs (ms hasta el fin de la ventana):

json
{ "statusCode": 429, "message": "Rate limit excedido", "retryAfterMs": 4200 }

Cuota (diaria/mensual por key + producto) — sin pista de retry:

json
{ "statusCode": 429, "message": "Cuota diaria excedida (DAILY, límite 1000)" }

Parcialidad ​

partial: true indica que el resultado es utilizable pero incompleto porque una fuente que se ejecutó falló o se pasó de tiempo (típicamente una fuente LIVE). Las fuentes excluidas por permisos no marcan partial: simplemente no aparecen.

Ver Límites y facturación para los valores y el modelo de cobro.