ZapSign electronic signature API via curl. Use this skill to create documents for signature, manage signers, and track signing status.
/plugin marketplace add vm0-ai/api0/plugin install api0@api0This skill inherits all available tools. When active, it can use any tool Claude has access to.
Use ZapSign via direct curl calls to create and manage electronic signatures with legal validity.
Official docs:
https://docs.zapsign.com.br/english
Use this skill when you need to:
export ZAPSIGN_API_TOKEN="your-api-token"
| Environment | API Endpoint | Legal Validity |
|---|---|---|
| Sandbox | https://sandbox.api.zapsign.com.br | No |
| Production | https://api.zapsign.com.br | Yes |
Important: When using
$VARin a command that pipes to another command, wrap the command containing$VARinbash -c '...'. Due to a Claude Code bug, environment variables are silently cleared when pipes are used directly.bash -c 'curl -s "https://api.example.com" -H "Authorization: Bearer $API_KEY"' | jq .
All examples use the sandbox environment. For production, replace sandbox.api.zapsign.com.br with api.zapsign.com.br.
Create a document for signature from a public PDF URL:
bash -c 'curl -s -X POST "https://sandbox.api.zapsign.com.br/api/v1/docs/" -H "Authorization: Bearer ${ZAPSIGN_API_TOKEN}" -H "Content-Type: application/json" -d '"'"'{
"name": "Employment Contract",
"url_pdf": "https://example.com/contract.pdf",
"lang": "en",
"signers": [
{
"name": "John Doe",
"email": "john@example.com",
"auth_mode": "assinaturaTela",
"send_automatic_email": true
}
]
}'"'"' | jq '"'"'{token, status, sign_url: .signers[0].sign_url}'"'"''
Create a document from base64-encoded PDF:
# First, encode your PDF to base64
BASE64_PDF=$(base64 -i document.pdf)
curl -s -X POST "https://sandbox.api.zapsign.com.br/api/v1/docs/" -H "Authorization: Bearer ${ZAPSIGN_API_TOKEN}" -H "Content-Type: application/json" -d "{
\"name\": \"Contract\",
\"base64_pdf\": \"${BASE64_PDF}\",
\"signers\": [
{
\"name\": \"Jane Smith\",
\"email\": \"jane@example.com\"
}
]
}" | jq '{token, status, signers}'
Create a document directly from Markdown text (great for AI integrations):
bash -c 'curl -s -X POST "https://sandbox.api.zapsign.com.br/api/v1/docs/" -H "Authorization: Bearer ${ZAPSIGN_API_TOKEN}" -H "Content-Type: application/json" -d '"'"'{
"name": "Service Agreement",
"markdown_text": "# Service Agreement\n\nThis agreement is between **Company A** and **Client B**.\n\n## Terms\n\n1. Service will be provided for 12 months\n2. Payment is due monthly\n\n---\n\nSignature: ________________",
"signers": [
{
"name": "Client Name",
"email": "client@example.com"
}
]
}'"'"' | jq '"'"'{token, status, original_file}'"'"''
Create a document with signing order:
bash -c 'curl -s -X POST "https://sandbox.api.zapsign.com.br/api/v1/docs/" -H "Authorization: Bearer ${ZAPSIGN_API_TOKEN}" -H "Content-Type: application/json" -d '"'"'{
"name": "Multi-party Contract",
"url_pdf": "https://example.com/contract.pdf",
"signature_order_active": true,
"signers": [
{
"name": "First Signer",
"email": "first@example.com",
"order_group": 1,
"send_automatic_email": true
},
{
"name": "Second Signer",
"email": "second@example.com",
"order_group": 2,
"send_automatic_email": true
}
]
}'"'"' | jq .'
Create a document with a deadline for signing:
bash -c 'curl -s -X POST "https://sandbox.api.zapsign.com.br/api/v1/docs/" -H "Authorization: Bearer ${ZAPSIGN_API_TOKEN}" -H "Content-Type: application/json" -d '"'"'{
"name": "Limited Time Offer",
"url_pdf": "https://example.com/offer.pdf",
"date_limit_to_sign": "2025-12-31T23:59:59Z",
"signers": [
{
"name": "Customer",
"email": "customer@example.com"
}
]
}'"'"' | jq '"'"'{token, status, date_limit_to_sign}'"'"''
Retrieve document status and signer information:
DOC_TOKEN="your-document-token"
bash -c 'curl -s -X GET "https://sandbox.api.zapsign.com.br/api/v1/docs/${DOC_TOKEN}/" -H "Authorization: Bearer ${ZAPSIGN_API_TOKEN}"' | jq '{name, status, original_file, signed_file, signers: [.signers[] | {name, status, signed_at}]}
Add a new signer to an existing document:
DOC_TOKEN="your-document-token"
bash -c 'curl -s -X POST "https://sandbox.api.zapsign.com.br/api/v1/docs/${DOC_TOKEN}/add-signer/" -H "Authorization: Bearer ${ZAPSIGN_API_TOKEN}" -H "Content-Type: application/json" -d '"'"'{
"name": "Additional Signer",
"email": "additional@example.com",
"auth_mode": "assinaturaTela",
"send_automatic_email": true
}'"'"' | jq '"'"'{token, sign_url, status}'"'"''
Send signing link via WhatsApp (costs credits):
bash -c 'curl -s -X POST "https://sandbox.api.zapsign.com.br/api/v1/docs/" -H "Authorization: Bearer ${ZAPSIGN_API_TOKEN}" -H "Content-Type: application/json" -d '"'"'{
"name": "Contract via WhatsApp",
"url_pdf": "https://example.com/contract.pdf",
"signers": [
{
"name": "Mobile User",
"phone_country": "1",
"phone_number": "5551234567",
"send_automatic_whatsapp": true,
"auth_mode": "tokenWhatsapp"
}
]
}'"'"' | jq .'
Require facial recognition during signing:
bash -c 'curl -s -X POST "https://sandbox.api.zapsign.com.br/api/v1/docs/" -H "Authorization: Bearer ${ZAPSIGN_API_TOKEN}" -H "Content-Type: application/json" -d '"'"'{
"name": "High Security Contract",
"url_pdf": "https://example.com/contract.pdf",
"signers": [
{
"name": "Verified Signer",
"email": "verified@example.com",
"selfie_validation_type": "liveness-document-match",
"require_document_photo": true
}
]
}'"'"' | jq .'
Delete a document:
DOC_TOKEN="your-document-token"
bash -c 'curl -s -X DELETE "https://sandbox.api.zapsign.com.br/api/v1/docs/${DOC_TOKEN}/" -H "Authorization: Bearer ${ZAPSIGN_API_TOKEN}"' | jq .
| Mode | Description | Cost |
|---|---|---|
assinaturaTela | On-screen signature (default) | Free |
tokenEmail | Email verification token | Free |
assinaturaTela-tokenEmail | Signature + email token | Free |
tokenSms | SMS verification token | Free |
assinaturaTela-tokenSms | Signature + SMS token | Free |
tokenWhatsapp | WhatsApp verification token | $0.10 |
assinaturaTela-tokenWhatsapp | Signature + WhatsApp token | $0.10 |
| Type | Description | Cost |
|---|---|---|
liveness-document-match | Face + document match | $0.50 |
identity-verification | Full identity verification (CO, MX, CL, PE) | $1.00 |
identity-verification-global | Global identity verification | $0.90 |
| Status | Description |
|---|---|
pending | Document is awaiting signatures |
signed | All signers have signed |
| Status | Description |
|---|---|
new | Signer created, hasn't viewed |
link-opened | Signer opened the link |
signed | Signer completed signing |
| Field | Description |
|---|---|
token | Document unique identifier |
status | Document status (pending/signed) |
original_file | URL to original PDF (expires in 60 min) |
signed_file | URL to signed PDF (expires in 60 min) |
signers[].token | Signer unique identifier |
signers[].sign_url | Direct signing link for signer |
signers[].signed_at | Timestamp when signer signed |
token and signers[].token for future API callsoriginal_file and signed_file URLs expire in 60 minutes