API REST pública v1

Certifica archivos con NOM-151 desde cualquier lenguaje

Una llamada HTTP basta para sellar un PDF, imagen, audio o video con sello de tiempo NOM-151 (RFC 3161) y anclaje en blockchain pública. Sin SDK, sin firma electrónica de por medio: prueba de existencia e integridad para tus integraciones.

Base URL: https://certificatepz.com
Bearer auth
JSON / multipart
OpenAPI 3

Una llamada

POST con tu archivo y listo. Sin webhooks complejos.

Validez legal

NOM-151 emitida por PSC acreditado en México.

Cualquier stack

cURL, Node, Python, PHP, Go, Ruby, .NET, Java.

OpenAPI 3

Importa en Postman, Insomnia, Scalar.

Ejemplos en 60 segundos

cURL — multipart
curl -X POST https://certificatepz.com/api/public/v1/certificates \
  -H "Authorization: Bearer $TEPZ_API_KEY" \
  -F "file=@./contrato.pdf" \
  -F "title=Contrato 2026" \
  -F "document_type=contrato"
Node.js (fetch nativo)
import { readFileSync } from "node:fs";

const form = new FormData();
form.set("file", new Blob([readFileSync("contrato.pdf")]), "contrato.pdf");
form.set("title", "Contrato 2026");

const r = await fetch("https://certificatepz.com/api/public/v1/certificates", {
  method: "POST",
  headers: { Authorization: `Bearer ${process.env.TEPZ_API_KEY}` },
  body: form,
});
const { certificate } = await r.json();
console.log(certificate.id, certificate.qr_verification_url);
Python (requests)
import os, requests

with open("contrato.pdf", "rb") as f:
    r = requests.post(
        "https://certificatepz.com/api/public/v1/certificates",
        headers={"Authorization": f"Bearer {os.environ['TEPZ_API_KEY']}"},
        files={"file": ("contrato.pdf", f, "application/pdf")},
        data={"title": "Contrato 2026"},
    )
print(r.json()["certificate"]["id"])
PHP (cURL)
<?php
$ch = curl_init("https://certificatepz.com/api/public/v1/certificates");
curl_setopt_array($ch, [
  CURLOPT_POST => true,
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_HTTPHEADER => ["Authorization: Bearer " . getenv("TEPZ_API_KEY")],
  CURLOPT_POSTFIELDS => [
    "file"  => new CURLFile("contrato.pdf"),
    "title" => "Contrato 2026",
  ],
]);
echo curl_exec($ch);

Endpoints principales

MétodoEndpointDescripción
POST/api/public/v1/certificatesSube y certifica un archivo
GET/api/public/v1/certificatesLista paginada
GET/api/public/v1/certificates/{id}Detalle de un certificado
GET/api/public/v1/certificates/{id}/proofDescarga NOM-151 / blockchain
GET/api/public/v1/verify/{hash}Verifica un SHA-256

Documentación completa en /docs/api o spec OpenAPI en /api/public/v1/openapi.

Casos de uso

  • • Certificar contratos firmados desde tu ERP o CRM
  • • Sellar expedientes de RH al momento de la contratación
  • • Probar la integridad de evidencia en sistemas legales
  • • Anclar versiones de código, datasets o modelos de IA
  • • Conservar facturas, CFDI y soportes contables (NOM-151)
  • • Sellar fotografías y video como evidencia periodística

Empieza con 5 certificados gratis

Crea tu cuenta, genera una API key en segundos y prueba la integración. Sin tarjeta.