Generar constancia NOM-151
Este endpoint emite una constancia de conservación NOM-151 sobre la huella SHA-256 de un documento. La constancia la firma un Prestador de Servicios de Certificación (PSC) autorizado y prueba que el documento existía, íntegro, en la fecha en que se emitió.
Descripción
Sección titulada «Descripción»- Solo envías la huella SHA-256 del documento, nunca el archivo. Ver cómo calcularla.
- La respuesta es síncrona: la constancia llega en Base64 en el campo
constancia. - Consume 5 tokens, solo si la constancia se emite y corresponde a la huella enviada.
Método: POST
Endpoint
Sección titulada «Endpoint»https://api.verificamex.com/identity/v1/miscellaneous/nom151/constanciaEncabezados de la Solicitud
Sección titulada «Encabezados de la Solicitud»| Encabezado | Valor | Descripción |
|---|---|---|
| Accept | application/json | Tipo de contenido de la solicitud. |
| Content-Type | application/json | Formato del cuerpo de la solicitud. |
| Authorization | Bearer {tu_token} | Token generado para autenticar al usuario. |
Cuerpo de la Solicitud
Sección titulada «Cuerpo de la Solicitud»| Parámetro | Tipo | Descripción |
|---|---|---|
| hash | String | Requerido. Huella SHA-256 del documento: 64 caracteres en hexadecimal o 44 en Base64. |
| referencia | String | Opcional. Referencia propia para identificar el documento, por ejemplo un número de contrato. Máximo 255 caracteres. |
Ejemplo de Solicitud
Sección titulada «Ejemplo de Solicitud»{ "hash": "de57da9462866cfe28619e9eb9567e6e825c71deacfd84fa0ef33929607db7ef", "referencia": "Contrato 2026-118"}HASH=$(shasum -a 256 contrato.pdf | cut -d' ' -f1)
curl -X POST https://api.verificamex.com/identity/v1/miscellaneous/nom151/constancia \ -H "Authorization: Bearer {TU_TOKEN}" \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -d "{\"hash\": \"$HASH\", \"referencia\": \"Contrato 2026-118\"}"$hash = (Get-FileHash .\contrato.pdf -Algorithm SHA256).Hash$body = @{ hash = $hash; referencia = "Contrato 2026-118" } | ConvertTo-Json
$r = Invoke-RestMethod -Method Post ` -Uri "https://api.verificamex.com/identity/v1/miscellaneous/nom151/constancia" ` -Headers @{ Authorization = "Bearer {TU_TOKEN}"; Accept = "application/json" } ` -ContentType "application/json" -Body $body
# Guarda la constancia tal como llega[IO.File]::WriteAllBytes("$PWD\constancia.asn1", [Convert]::FromBase64String($r.constancia))Respuesta del Endpoint
Sección titulada «Respuesta del Endpoint» { "uuid": "5b0f8a2e-9d43-4a7e-9c1b-3f2d6e8a1c55", "status": "OK", "referencia": "Contrato 2026-118", "hash": "de57da9462866cfe28619e9eb9567e6e825c71deacfd84fa0ef33929607db7ef", "fecha_constancia": "2026-10-22T18:04:11+00:00", "psc": { "nombre": "Autoridad de Constancias de Conservacion de mensajes de datos de PSC WORLD", "serie": "11c" }, "politica": "2.16.484.101.10.316.100.2.1.2.1.1", "constancia": "MIIJ...", "created_at": "2026-10-22T12:04:10-06:00" } { "message": "El hash debe ser un SHA-256: 64 caracteres en hexadecimal o 44 en Base64.", "errors": { "hash": ["El hash debe ser un SHA-256: 64 caracteres en hexadecimal o 44 en Base64."] } } { "uuid": "5b0f8a2e-9d43-4a7e-9c1b-3f2d6e8a1c55", "status": "ERROR", "message": "PSC World respondió HTTP 500 al pedir la constancia NOM-151." } { "message": "No tokens available", "errors": [] } { "message": "Las transacciones del usuario se han terminado" } { "message": "Unauthorized" }El cuerpo de la respuesta exitosa contiene los siguientes campos:
| Campo | Tipo | Descripción |
|---|---|---|
| uuid | String | Identificador de la constancia. Guárdalo para consultarla después. |
| status | String | OK cuando la constancia se emitió. |
| referencia | String | La referencia que enviaste, o null. |
| hash | String | La huella sellada, siempre en hexadecimal en minúsculas (aunque la hayas enviado en Base64). |
| fecha_constancia | String | Fecha oficial de la constancia asignada por el PSC, en UTC (ISO-8601). |
| psc.nombre | String | Nombre del PSC que emitió la constancia, tomado de su certificado. |
| psc.serie | String | Número de serie del certificado del PSC, en hexadecimal. Puede variar entre solicitudes, porque el PSC opera con más de un certificado vigente. |
| politica | String | Identificador (OID) de la política del PSC con la que se emitió. |
| constancia | String | La constancia en Base64. Decodificada es un archivo .asn1 (respuesta RFC 3161 completa). |
| created_at | String | Fecha en que se registró la solicitud (ISO-8601). |
| Código | Cuándo ocurre | ¿Se cobra? |
|---|---|---|
201 | La constancia se emitió. | Sí, 5 tokens. |
422 | La huella no es un SHA-256 válido. | No. |
503 | El PSC no respondió o no emitió una constancia válida. Puedes reintentar. | No. |
417 | Tienes saldo, pero menos de los 5 tokens que cuesta. | No. |
403 | Ya no tienes tokens disponibles. | No. |
401 | Falta el token de autenticación o no es válido. | No. |