https://api.veriko.mx/v1/validations/{id}Obtener una validación
Guía de uso →Devuelve el registro completo de una validación, con su veredicto, los datos normalizados y el estado de los reintentos.
El recorrido desde la solicitud hasta el veredicto está descrito en el flujo de validación.
| Parámetro | Ubicación | Tipo | Obligatorio | Descripción |
|---|---|---|---|---|
id* | path | string (uuid) | obligatorio | Identificador (UUID) de la validación |
If-None-Match | header | string | opcional | ETag recibido en una respuesta anterior, tal cual (débil "9b2d4c7e1f0a3b6d8e5c2a7f4b1d9e0c3a6f8b2d" |
curl -X GET 'https://api.veriko.mx/v1/validations/{id}' \
-H 'Authorization: Bearer veriko_••••'Ejemplo en Python — próximamente.
Ejemplo en JavaScript — próximamente.
Ejemplo en PHP — próximamente.
| Campo | Tipo | Descripción |
|---|---|---|
type* | string | Tipo de recurso JSON:API. Siempre validation |
id* | string (uuid) | Identificador único de la validación (UUID v4). p. ej.3fa85f64-5717-4562-b3fc-2c963f66afa6 |
attributes* | object | Datos canónicos de la validación. |
validation_type | string | Modalidad de validación — direct |
is_playground | boolean |
false |
status | string | Estado del ciclo de vida — valid |
banxico_status | string | nullanulable | Veredicto reportado por Banxico. Puede ser: valid |
processing_time_ms | integer | nullanulable | Tiempo (en milisegundos) empleados en procesar la validación. p. ej.1320 |
request_data | object | Copia de los campos de la petición original. |
client_ref | string | Referencia propia que se envió en la petición ( orden-4812 |
created_at | string (date-time) | Fecha y hora, en ISO 8601 UTC, de creación de la validación. p. ej.2025-03-15T14:22:10Z |
completed_at | string | nullanulable | Fecha y hora de la finalización, en ISO 8601 UTC. 2025-03-15T14:22:11Z |
enqueued_at | string | nullanulable | Fecha y hora, en ISO 8601 UTC, de entrada a la cola. p. ej.2026-04-30T10:15:00Z |
processing_started_at | string | nullanulable | Fecha y hora, en ISO 8601 UTC, de inicio del procesamiento. p. ej.2026-04-30T10:15:00Z |
expires_at | string | nullanulable | Fecha y hora, en ISO 8601 UTC, de expiración para validaciones en cola. Tras esta marca, la validación pasa a 2026-04-30T10:15:00Z |
etag_version | integer | nullanulable | Versión incremental (usada con 1 |
image_path | string | nullanulable | Referencia relativa del comprobante, imagen o PDF (solo si comprobantes/3fa85f64-5717-4562-b3fc-2c963f66afa6.jpg |
image_retained | boolean |
true |
purged_at | string (date-time) | Fecha y hora, en ISO 8601 UTC, en que la validación se purgó con 2026-10-02T09:30:00Z |
ocr_result | object | nullanulable | Campos extraídos del comprobante (solo si |
ocr_confidence | number | nullanulable | Puntaje de la extracción OCR 0–1 (solo si 0.94 |
normalized_data | object | nullanulable | Campos normalizados después de la extracción OCR (si |
normalization_warnings | array | nullanulable | Advertencias de normalización presentes. Permiten explicar un resultado |
duplicate_of | object | Validación previa que ya había confirmado esta misma transferencia en la misma cuenta. Solo aparece cuando existe una validación |
id* | string (uuid) | Identificador de la validación previa. p. ej.3fa85f64-5717-4562-b3fc-2c963f66afa6 |
created_at* | string (date-time) | Fecha y hora, en ISO 8601 UTC, de creación de la validación previa. p. ej.2026-10-01T15:04:05Z |
account_conflict | object | Conflicto entre la cuenta enviada y la que muestra la imagen. Solo aparece en validaciones de tipo |
sent_last4* | string | Últimos 4 dígitos de la cuenta enviada en 5678 |
read_last4* | string | Últimos 4 dígitos de la cuenta que muestra la imagen (los visibles, 3 o 4, si está enmascarada). p. ej.9012 |
candidate_match | object | Cuál de las |
index* | integer | Posición (desde 0) de la cuenta ganadora en el arreglo 1 |
account_last4* | string | Últimos 4 dígitos de la cuenta ganadora. p. ej.7771 |
is_masked | boolean | nullanulable | Indica si la cuenta beneficiaria viene enmascarada en el comprobante cargado, sea una CLABE, una tarjeta o un celular. Solo se incluye cuando vale |
banxico_result | object | nullanulable | Datos devueltos por Banxico. Las propiedades tipadas abajo son las 20 que declara el esquema oficial del complemento SPEI.
|
operationDate | string | Día hábil SPEI que Banxico asignó a la operación, tal como lo reporta el CEP ( 2025-03-15 |
processingTime | string | Hora de la operación tal como la reporta el CEP ( 14:22:10 |
speiKey | string | Clave de la operación dentro del sistema SPEI ( |
trackingKey | string | Clave de rastreo de la operación SPEI — la misma que se envía en la petición de validación. p. ej.MBAN01002503151422ABCDEF |
digitalSignature | string | Sello digital del CEP ( |
certificateNumber | string | Número del certificado digital que Banxico usó para sellar el CEP. |
cadenaCda | string | Cadena original de la operación ( |
senderBank | string | Banco emisor de la operación, tal como lo identifica el CEP. p. ej.BBVA |
senderName | string | Nombre del ordenante de la operación, tal como lo reporta el CEP. |
senderAccountType | string | Tipo de cuenta del ordenante (por ejemplo, CLABE o tarjeta), tal como lo reporta el CEP. |
senderAccount | string | Cuenta del ordenante, tal como la reporta el CEP, sin enmascarar en este recurso (consulta privada, propia del dueño de la validación). |
senderRfc | string | RFC del ordenante, tal como lo reporta el CEP. |
receiverBank | string | Banco receptor de la operación, tal como lo identifica el CEP. p. ej.STP |
beneficiaryName | string | Nombre del beneficiario de la operación, tal como lo reporta el CEP. |
beneficiaryAccountType | string | Tipo de cuenta del beneficiario (por ejemplo, CLABE o tarjeta), tal como lo reporta el CEP. |
beneficiaryAccount | string | Cuenta del beneficiario, tal como la reporta el CEP, sin enmascarar en este recurso (consulta privada, propia del dueño de la validación). Los webhooks salientes sí la enmascaran a los últimos 4 dígitos en |
beneficiaryRfc | string | RFC del beneficiario, tal como lo reporta el CEP. |
amount | number (float) | Monto de la operación que Banxico confirmó por el CEP, en pesos. p. ej.1500 |
iva | number (float) | IVA de la operación reportado por el CEP, en pesos. |
paymentConcept | string | Concepto de pago de la operación, tal como lo reporta el CEP. |
error_message | string | nullanulable | Mensaje legible del error terminal (si aplica). p. ej.Banxico no respondió tras tres intentos. |
error_code | ValidationErrorCode | null | Código estable del error terminal (si aplica).
Tras |
batch_id | integer | nullanulable | Identificador del trabajo de importación masiva (si aplica). p. ej.318 |
batch_position | integer | nullanulable | Posición dentro del trabajo (comenzando en 1). p. ej.12 |
retry_state | object | Estado completo del ciclo de reintentos (siempre presente). Si la validación no tiene reintentos activos, |
enabled | boolean |
true |
max_retries | integer | nullanulable | Número máximo de reintentos configurado; 3 |
interval_seconds | integer | nullanulable | Intervalo en segundos entre reintentos, de 600 |
outcomes | array | nullanulable | Resultados que originan un reintento: ["not_found","cep_unavailable","error"] |
attempts_completed | integer | Cantidad de reintentos completados hasta el momento. p. ej.1 |
next_attempt_at | TimestampUTC | null | Fecha del próximo reintento; |
resolved_at | TimestampUTC | null | Fecha en que un reintento obtuvo |
exhausted_at | TimestampUTC | null | Fecha en que se agotaron los intentos; |
cancelled_at | TimestampUTC | null | Fecha de cancelación del ciclo; |
terminal_state | string | nullanulable | Situación del ciclo: pending |
links | object | Enlaces relacionados (JSON:API |
self | string | Enlace canónico al detalle de la validación. p. ej./v1/validations/3fa85f64-5717-4562-b3fc-2c963f66afa6 |
cep_xml | string | nullanulable | URL del CEP en formato XML. Solo aparece cuando /v1/validations/a1b2c3d4-e5f6-4890-abcd-ef0123456789/cep?format=xml |
cep_pdf | string | nullanulable | URL del CEP en formato PDF. Solo aparece cuando /v1/validations/a1b2c3d4-e5f6-4890-abcd-ef0123456789/cep?format=pdf |
| Código | Clase | Descripción | Cuerpo |
|---|---|---|---|
| 200 | 2xx | Detalle de la validación. En estados pre-terminales (queued, processing) incluye la cabecera Retry-After y el campo meta.next_poll_after_seconds del cuerpo. | Validation |
| 304 | 3xx | El etag_version y status no cambiaron desde el If-None-Match enviado. La respuesta no tiene cuerpo.
| Sin cuerpo |
| 401 | 4xx | Se requiere autenticación o las credenciales son inválidas | ErrorResponse |
| 403 | 4xx | Permisos insuficientes | ErrorResponse |
| 404 | 4xx | Validación no encontrada o ajena a la cuenta de usuario (not_found). | ErrorResponse |
| 422 | 4xx | UUID inválido en la ruta (invalid_uuid). | ErrorResponse |
| Cabecera | Tipo | Descripción |
|---|---|---|
ETag | string | ETag débil que cambia en cada transición de estado. Sigue el formato W/"{etag_version}-{status}" y puede incluirse en If-None-Match para recibir un estado HTTP 304 si nada ha cambiado. |
Retry-After | integer | Segundos de espera antes de la siguiente petición. Solo está presente en queued y processing. |
| Código | Clave | Ejemplo |
|---|---|---|
| 401 | unauthorized | Credenciales de autenticación ausentes o inválidas. Envelope
|
| 403 | permission_denied | No tienes permiso para acceder a este recurso. Envelope
|