Generar sello de tiempo
Este endpoint emite un sello de tiempo RFC 3161 sobre una huella SHA-256. El sello lo firma un Prestador de Servicios de Certificación (PSC) autorizado y prueba que esa huella existía en la fecha del sello.
Descripción
Sección titulada «Descripción»- Su uso principal es incrustarlo dentro de una firma electrónica (PAdES para PDF, CAdES), normalmente uno por firmante. También puedes usarlo como evidencia independiente de que un archivo existía en cierta fecha.
- La respuesta es síncrona: el sello llega en Base64 en el campo
sello. - Consume 5 tokens, solo si el sello se emite y corresponde a la huella enviada.
Método: POST
Endpoint
Sección titulada «Endpoint»https://api.verificamex.com/identity/v1/miscellaneous/sello-tiempoEncabezados 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 a sellar: 64 caracteres en hexadecimal o 44 en Base64. |
| referencia | String | Opcional. Referencia propia para identificar el sello, por ejemplo el firmante o el documento. Máximo 255 caracteres. |
Ejemplo de Solicitud
Sección titulada «Ejemplo de Solicitud»{ "hash": "de57da9462866cfe28619e9eb9567e6e825c71deacfd84fa0ef33929607db7ef", "referencia": "Firma 1 del contrato 2026-118"}curl -X POST https://api.verificamex.com/identity/v1/miscellaneous/sello-tiempo \ -H "Authorization: Bearer {TU_TOKEN}" \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -d '{ "hash": "de57da9462866cfe28619e9eb9567e6e825c71deacfd84fa0ef33929607db7ef", "referencia": "Firma 1 del contrato 2026-118" }' > respuesta.json
# Guarda el sello como archivo .tstjq -r .sello respuesta.json | base64 -d > sello.tst$body = @{ hash = "de57da9462866cfe28619e9eb9567e6e825c71deacfd84fa0ef33929607db7ef" referencia = "Firma 1 del contrato 2026-118"} | ConvertTo-Json
$r = Invoke-RestMethod -Method Post ` -Uri "https://api.verificamex.com/identity/v1/miscellaneous/sello-tiempo" ` -Headers @{ Authorization = "Bearer {TU_TOKEN}"; Accept = "application/json" } ` -ContentType "application/json" -Body $body
[IO.File]::WriteAllBytes("$PWD\sello.tst", [Convert]::FromBase64String($r.sello))Respuesta del Endpoint
Sección titulada «Respuesta del Endpoint» { "uuid": "0c6d3a44-5f1e-4b8a-9d2c-7e1f0a9b3c21", "status": "OK", "referencia": "Firma 1 del contrato 2026-118", "hash": "de57da9462866cfe28619e9eb9567e6e825c71deacfd84fa0ef33929607db7ef", "fecha_sello": "2026-10-22T18:04:11+00:00", "psc": { "nombre": "Autoridad de Sellos digitales de tiempo de PSC WORLD", "serie": "11e" }, "politica": "2.16.484.101.10.316.100.2.1.3.1.1", "sello": "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": "0c6d3a44-5f1e-4b8a-9d2c-7e1f0a9b3c21", "status": "ERROR", "message": "PSC World respondió HTTP 500 al pedir el sello de tiempo." } { "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 del sello. Guárdalo para consultarlo después. |
| status | String | OK cuando el sello 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_sello | String | Fecha oficial del sello asignada por el PSC, en UTC (ISO-8601). |
| psc.nombre | String | Nombre del PSC que emitió el sello, 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ó. |
| sello | String | El sello en Base64. Decodificado es un TimeStampToken (CMS, DER), la estructura que se incrusta en una firma PAdES/CAdES. |
| created_at | String | Fecha en que se registró la solicitud (ISO-8601). |
| Código | Cuándo ocurre | ¿Se cobra? |
|---|---|---|
201 | El sello se emitió. | Sí, 5 tokens. |
422 | La huella no es un SHA-256 válido. | No. |
503 | El PSC no respondió o no emitió un sello válido. 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. |