Hanzo

Hanzo Sign

Document signing and e-signature platform

Hanzo Sign

Hanzo Sign is a document signing platform for creating, sending, and managing legally binding electronic signatures. Built for teams that need secure, compliant e-signatures integrated with the Hanzo ecosystem.

Features

  • PDF Signing: Upload and sign PDF documents with legally binding e-signatures
  • Templates: Create reusable document templates with pre-defined signing fields
  • Signing Fields: Text, signature, initials, date, checkbox, dropdown, and more
  • Teams & Organizations: Multi-tenant workspace management
  • Webhooks: Real-time notifications for signing events
  • Per-Org OIDC: Organization-scoped SSO portals
  • Hanzo IAM SSO: Single sign-on via Hanzo identity

Endpoints

EnvironmentURL
Productionhttps://sign.hanzo.ai
APIhttps://sign.hanzo.ai/api/v1

Architecture

+---------------------------------------------------------------+
|                       HANZO SIGN                               |
+---------------------------------------------------------------+
|                                                                |
|  +-----------------------+  +-------------------------------+  |
|  |    Documents          |  |       Templates               |  |
|  |  +------+  +-------+  |  |  +--------+  +-------------+  |  |
|  |  | PDF  |  | Fields|  |  |  | Layout |  | Variables   |  |  |
|  |  +------+  +-------+  |  |  +--------+  +-------------+  |  |
|  +-----------------------+  +-------------------------------+  |
|                                                                |
|  +-----------------------+  +-------------------------------+  |
|  |    Recipients         |  |       Signing                 |  |
|  |  +------+  +-------+  |  |  +--------+  +-------------+  |  |
|  |  |Email |  | Order |  |  |  |Workflow|  | Completion  |  |  |
|  |  +------+  +-------+  |  |  +--------+  +-------------+  |  |
|  +-----------------------+  +-------------------------------+  |
|                                                                |
+---------------------------------------------------------------+

Quick Start

Create a Document

Upload a PDF and add recipients:

const response = await fetch('https://sign.hanzo.ai/api/v1/documents', {
  method: 'POST',
  headers: {
    'Authorization': `Bearer ${apiToken}`,
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    title: 'Service Agreement',
    recipients: [
      { email: 'signer@example.com', name: 'Jane Doe', role: 'SIGNER' },
      { email: 'cc@example.com', name: 'John Doe', role: 'CC' }
    ]
  })
})

Add Signing Fields

await fetch(`https://sign.hanzo.ai/api/v1/documents/${docId}/fields`, {
  method: 'POST',
  headers: { 'Authorization': `Bearer ${apiToken}` },
  body: JSON.stringify({
    fields: [
      { type: 'SIGNATURE', page: 1, x: 100, y: 500, width: 200, height: 50 },
      { type: 'DATE', page: 1, x: 350, y: 500, width: 150, height: 30 },
      { type: 'TEXT', page: 1, x: 100, y: 560, width: 300, height: 30 }
    ]
  })
})

Send for Signing

await fetch(`https://sign.hanzo.ai/api/v1/documents/${docId}/send`, {
  method: 'POST',
  headers: { 'Authorization': `Bearer ${apiToken}` }
})

Field Types

TypeDescription
SIGNATUREElectronic signature
INITIALSSigner initials
TEXTFree text input
DATEDate picker
CHECKBOXBoolean checkbox
DROPDOWNSelect from options
NUMBERNumeric input
RADIORadio button group

Webhooks

Configure Webhook

await fetch('https://sign.hanzo.ai/api/v1/webhooks', {
  method: 'POST',
  headers: { 'Authorization': `Bearer ${apiToken}` },
  body: JSON.stringify({
    url: 'https://myapp.com/webhooks/sign',
    events: [
      'DOCUMENT_SENT',
      'DOCUMENT_SIGNED',
      'DOCUMENT_COMPLETED'
    ]
  })
})

Webhook Events

EventDescription
DOCUMENT_CREATEDDocument uploaded
DOCUMENT_SENTSent for signing
DOCUMENT_OPENEDRecipient opened document
DOCUMENT_SIGNEDA recipient signed
DOCUMENT_COMPLETEDAll recipients signed
DOCUMENT_REJECTEDRecipient rejected

Authentication

Hanzo Sign supports multiple authentication methods:

  • Hanzo IAM: SSO via https://hanzo.id (recommended)
  • Google OAuth: Sign in with Google
  • Email Magic Link: Passwordless email login
  • Passkeys: WebAuthn/FIDO2 authentication

IAM Integration

# Environment variables
HANZO_IAM_URL=https://hanzo.id
HANZO_IAM_CLIENT_ID=app-sign
HANZO_IAM_CLIENT_SECRET=<from-kms>

Self-Hosting

Docker

docker run -d \
  --name hanzo-sign \
  -p 3000:3000 \
  -e DATABASE_URL=postgres://... \
  -e HANZO_IAM_URL=https://hanzo.id \
  -e HANZO_IAM_CLIENT_ID=app-sign \
  ghcr.io/hanzoai/sign:latest

Environment Variables

VariableDescription
DATABASE_URLPostgreSQL connection string
NEXT_PUBLIC_WEBAPP_URLPublic URL of the application
HANZO_IAM_URLHanzo IAM server URL
HANZO_IAM_CLIENT_IDIAM application client ID
HANZO_IAM_CLIENT_SECRETIAM application client secret
NEXT_PRIVATE_ENCRYPTION_KEYDocument encryption key
NEXT_PRIVATE_ENCRYPTION_SECONDARY_KEYSecondary encryption key
NEXT_PRIVATE_SMTP_HOSTSMTP server host
NEXT_PRIVATE_SMTP_PORTSMTP server port

API Reference

Documents

  • POST /api/v1/documents - Create document
  • GET /api/v1/documents - List documents
  • GET /api/v1/documents/:id - Get document
  • POST /api/v1/documents/:id/send - Send for signing
  • DELETE /api/v1/documents/:id - Delete document

Templates

  • POST /api/v1/templates - Create template
  • GET /api/v1/templates - List templates
  • POST /api/v1/templates/:id/use - Create document from template

Recipients

  • POST /api/v1/documents/:id/recipients - Add recipients
  • DELETE /api/v1/documents/:id/recipients/:recipientId - Remove recipient

Next Steps

Secure document sharing and analytics

Equity management platform

Identity and access management

How is this guide?

Last updated on

On this page