Referencia del API REST de Chaindoc
Guía completa de endpoints para el API REST de Chaindoc. Cubre autenticación, documentos, firmas, subida de archivos, sesiones embebidas y verificación blockchain.
Descripción general
El API te da acceso programático a todo lo que hay en Chaindoc: documentos, firmas, verificación blockchain y gestión de equipos. Está diseñado para uso servidor-a-servidor y soporta tanto API keys públicas como secretas.
- Documentos — crea, actualiza y verifica documentos en blockchain
- Firmas — envía solicitudes de firma y rastrea su finalización
- Media — sube PDFs, imágenes y videos (máximo 10 por petición)
- Sesiones embebidas — crea sesiones de firma para tu frontend (usa el Embed SDK)
- KYC — comparte y verifica datos de identidad mediante integración con Sumsub
Autenticación
Cada petición necesita una API key en el header Authorization. Existen dos tipos:
Tipos de keys
- Public key (`pk_`) — solo lectura, segura para código frontend
- Secret key (`sk_`) — lectura/escritura completa, solo backend. Nunca la expongas en código del lado del cliente.
Obtener tus keys
1Suscríbete al plan BusinessSolo los usuarios del plan Business pueden crear API keys
2Navega a Acceso al APIVe a Configuración → Acceso al API en tu dashboard
3Crea la API keyHaz clic en el botón Crear API Key
4Almacena de forma seguraGuarda la secret key de forma segura (se muestra solo una vez)
Usar las API keys
Incluye tu API key en el header Authorization con autenticación Bearer:
curl -X GET https://api.chaindoc.io/api/v1/me \
-H "Authorization: Bearer sk_live_xxxxxxxxxxxxx"Rate limiting
Los endpoints del API tienen límites de peticiones para prevenir abusos. Los límites varían según el tipo de endpoint.
- Endpoints generales: 3 peticiones cada 10 segundos
- Subida de archivos: 3 peticiones cada 10 segundos
- Verificación OTP: 5 peticiones cada 60 segundos
- Operaciones de lectura: 10 peticiones cada 60 segundos
- Creación de firmas: 20 peticiones cada 3 segundos
Cuando se excede el límite, recibirás una respuesta 429 Too Many Requests. Los headers de rate limit se incluyen en las respuestas:
X-RateLimit-Limit: 3
X-RateLimit-Remaining: 2
X-RateLimit-Reset: 1640000000Manejo de errores
Códigos de estado HTTP
- 200 - Éxito
- 201 - Recurso creado correctamente
- 400 - Petición incorrecta (error de validación)
- 401 - No autorizado (API key inválida o faltante)
- 403 - Prohibido (permisos insuficientes)
- 404 - Recurso no encontrado
- 429 - Demasiadas peticiones (límite excedido)
- 500 - Error interno del servidor
Formato de respuesta de error
{
"statusCode": 400,
"message": "Validation failed",
"error": "Bad Request",
"details": [
{
"field": "name",
"message": "name must be a string"
}
]
}API General
Obtener información de la API key
Obtiene información sobre la API key actual.
GET /me
Authorization: Bearer sk_live_xxxxxHealth check
Verifica la conectividad con el API y la validez de la key.
GET /health
Authorization: Bearer sk_live_xxxxxAPI de Documentos
Crear documento
Crea un documento nuevo con verificación blockchain. Cuando el estado se establece como 'published', el documento se verifica automáticamente en blockchain.
POST /documents
Headers:
Authorization: Bearer sk_live_xxxxx
Content-Type: application/jsonActualizar documento
Actualiza un documento creando una nueva versión. Las versiones anteriores se preservan para el historial de auditoría.
PUT /documents/:documentId
Authorization: Bearer sk_live_xxxxx
Content-Type: application/jsonActualizar permisos del documento
Actualiza la configuración de control de acceso del documento.
PUT /documents/:documentId/rights
Authorization: Bearer sk_live_xxxxx
Content-Type: application/jsonVerificar documento
Verifica la autenticidad del documento usando blockchain. Devuelve el estado de verificación con el hash de transacción y el ID de cadena.
POST /documents/verify
{
"versionHash": "0x123abc...",
"certificateHash": "0x456def..."
}Obtener estado de verificación
Obtiene el estado de verificación blockchain para una versión de documento.
GET /documents/versions/:versionId/verification
Authorization: Bearer sk_live_xxxxxAPI de Firmas
Crear solicitud de firma
Crea una solicitud de firma para uno o más destinatarios. Activa el flujo embebido para integración con el frontend.
curl -X POST https://api.chaindoc.io/api/v1/signatures/requests \
-H "Authorization: Bearer sk_live_xxxxx" \
-H "Content-Type: application/json" \
-d '{
"versionId": "f0b7721f-0399-4035-9b69-7b95d3a367f0",
"recipients": [{"email": "signer@example.com"}],
"deadline": "2024-12-31T23:59:59Z",
"embeddedFlow": true
}'Obtener estado de la solicitud de firma
Verifica el estado de una solicitud de firma y consulta qué firmantes han completado el proceso.
GET /signatures/requests/:requestId/status
Authorization: Bearer sk_live_xxxxxFirmar documento
Firma un documento (si el dueño de la API key es firmante).
POST /signatures/sign
Authorization: Bearer sk_live_xxxxx
Content-Type: application/jsonObtener firmas del usuario
Obtiene todas las firmas del usuario autenticado.
GET /signatures
Authorization: Bearer sk_live_xxxxxObtener solicitudes de firma
Obtiene todas las solicitudes de firma del usuario autenticado con soporte para paginación.
GET /signatures/requests?pageNumber=1&pageSize=10
Authorization: Bearer sk_live_xxxxxAPI de Subida de Archivos
Sube archivos para usar en la creación de documentos. Soporta PDF, imágenes y videos. Máximo 10 archivos por petición.
curl -X POST https://api.chaindoc.io/api/v1/media/upload \
-H "Authorization: Bearer sk_live_xxxxx" \
-F "media=@contract.pdf"API de KYC
Compartir datos KYC
Comparte datos KYC (Know Your Customer) con destinatarios para verificación de identidad.
POST /kyc/share
Authorization: Bearer sk_live_xxxxx
Content-Type: application/jsonAPI de Sesiones Embebidas
Crea sesiones embebidas para la firma de documentos en tu aplicación frontend. Las sesiones son válidas por 10 minutos.
POST /embedded/sessions
Authorization: Bearer sk_live_xxxxx
Content-Type: application/jsonPróximos pasos
- Integración del API — patrones comunes, mejores prácticas y ejemplos completos de flujos de trabajo
- SDKs — Server SDK y Embed SDK con guías específicas para frameworks
- Webhooks — configura notificaciones de eventos en tiempo real
- Instalación — configuración de npm para todos los frameworks soportados
- Seguridad — gestión de API keys y cumplimiento