API Documentation
Create and manage electronic signature documents programmatically with the ItaSign REST API
Perché le Nostre API?
API RESTful
Endpoint REST semplici e prevedibili con metodi HTTP standard
Documentazione Completa
Documentazione API interattiva con esempi di codice live
SDK Multipli
SDK ufficiali per Python, Node.js, PHP e .NET
Supporto Webhook
Notifiche in tempo reale per eventi sui documenti
Nessun Limite
Chiamate API illimitate per tutti i clienti
Gratis per Sviluppo
Testa con firme SES/AdES gratuite prima di andare in produzione
Guida Rapida
Guida Rapida
Create an API Key
Go to your Organization Settings and create a new API key with 'documents:create' and 'documents:read' permissions
Upload Your PDF
Convert your PDF to base64 or upload it to storage first
Create & Send Document
Use POST /api/v1/documents with your PDF and signers. Set send: true to send immediately, or send: false to save as draft
Monitor Status
Poll the /api/v1/documents/{id}/status endpoint to track signing progress
API Endpoints
Browse all available API endpoints
https://itasign.comAuthentication
All API requests require authentication using an API key. Include your API key in the request headers:
Generate API keys from your organization settings page.
Documenti
/api/v1/documentsCreate a document with auto-signature (no predefined signature fields). Signers draw their signature when they open the document.
Parameters
titlestring (required) - Document titlefilestring (required) - Base64 encoded PDF or storage pathfile_typestring (optional) - "base64" (default) or "storage_path"signersarray (required) - Array of signer objects (at least one)signers[].namestring (required) - Signer full namesigners[].emailstring (optional) - Email address for notificationssigners[].signing_ordernumber (optional) - Order of signingsendboolean (optional) - true to send immediately, false for draft (default)messagestring (optional) - Custom message for signerssignature_levelstring (optional) - "ses" (default), "ades", "ades_t"verification_modestring (optional) - "standard", "email_otp", "sms_otp", "in_person"external_referencestring (optional) - Your external reference IDredirect_urlstring (optional) - URL to redirect after signingExample
// Create and send immediately
{
"title": "Service Agreement",
"file": "JVBERi0xLjQK...", // base64 PDF
"signers": [
{
"name": "Mario Rossi",
"email": "[email protected]"
}
],
"send": true,
"message": "Please sign this agreement."
}
// Response:
{
"success": true,
"document": {
"id": "abc-123",
"title": "Service Agreement",
"status": "pending"
},
"signers": [{
"id": "signer-1",
"name": "Mario Rossi",
"email": "[email protected]",
"signing_url": "https://itasign.com/sign/xyz789"
}]
}/api/v1/documents/{id}/sendSend a draft document for signing. Notifies all signers via email.
Parameters
idstring (required) - Document IDExample
Response:
{
"success": true,
"document": {
"id": "abc-123",
"status": "pending"
},
"notified_count": 2
}/api/v1/documents/from-templateCreate a new document from a template with pre-filled data
Parameters
template_slugstring (required) - Template slug identifiertitlestring (optional) - Document titleexternal_referencestring (optional) - Your external reference IDsignersarray (required) - Array of signer objects. Each signer requires at least ONE identifier, but multiple identifiers are RECOMMENDEDsigners[].rolestring (required) - Role name from templatesigners[].namestring (required) - Signer full namesigners[].emailstring (optional) - Email address (recommended for notifications)signers[].phone_numberstring (optional) - Phone number (requires country_code)signers[].country_codestring (optional) - ISO country code (e.g., +39, +1)signers[].unique_identifierstring (optional) - Tax code, DB ID, or other identifiersigners[].identifier_typestring (optional) - Type of unique identifier (e.g., tax_code, db_id)dataobject (optional) - Key-value pairs for field substitutionredirect_urlstring (optional) - URL to redirect after signingExample
{
"template_slug": "privacy-consent",
"title": "Privacy Consent - Mario Rossi",
"external_reference": "patient-123",
"signers": [
{
"role": "patient",
"name": "Mario Rossi",
"email": "[email protected]",
"phone_number": "3401234567",
"country_code": "+39",
"unique_identifier": "RSSMRA80A01H501U",
"identifier_type": "tax_code"
},
{
"role": "witness",
"name": "Luigi Bianchi",
"phone_number": "3331234567",
"country_code": "+39"
},
{
"role": "guardian",
"name": "Anna Verdi",
"email": "[email protected]",
"unique_identifier": "VRDNNA85M45F205K",
"identifier_type": "tax_code"
}
],
"data": {
"firstName": "Mario",
"lastName": "Rossi",
"address": "Via Roma 1, Milano"
},
"redirect_url": "https://yourapp.com/success"
}/api/v1/documents/{id}/statusGet document status and signer progress
Parameters
idstring (required) - Document IDExample
Response:
{
"success": true,
"documentId": "abc-123",
"status": "partially_signed",
"signerStatuses": [
{
"id": "signer-1",
"name": "Mario Rossi",
"email": "[email protected]",
"phone_number": "3401234567",
"country_code": "+39",
"unique_identifier": "RSSMRA80A01H501U",
"identifier_type": "tax_code",
"status": "signed",
"signingOrder": 1,
"signedTime": "2025-12-26T10:00:00Z"
},
{
"id": "signer-2",
"name": "Luigi Bianchi",
"phone_number": "3331234567",
"country_code": "+39",
"status": "viewed",
"signingOrder": 2
},
{
"id": "signer-3",
"name": "Anna Verdi",
"email": "[email protected]",
"unique_identifier": "VRDNNA85M45F205K",
"identifier_type": "tax_code",
"status": "pending",
"signingOrder": 3
}
],
"createdAt": "2025-12-26T09:00:00Z",
"expiresAt": "2025-12-27T09:00:00Z"
}/api/v1/documents/{id}/voidVoid/cancel a document to prevent further signing
Parameters
idstring (required) - Document IDreasonstring (optional) - Reason for voidingExample
Request:
{
"reason": "Document no longer needed"
}
Response:
{
"success": true,
"document": {
"id": "abc-123",
"status": "voided",
"voided_at": "2025-12-26T12:00:00Z"
}
}/api/v1/documents/{id}/downloadDownload signed document in PAdES (PDF) or CAdES (P7M) format. Only available for completed documents.
Parameters
idstring (required) - Document IDformatstring (optional) - "pades" (default) returns PDF, "cades" returns P7MExample
# Download as PAdES (PDF)
curl -H "X-API-Key: itasign_xxx" \
"https://itasign.com/api/v1/documents/abc-123/download" \
-o document.pdf
# Download as CAdES (P7M)
curl -H "X-API-Key: itasign_xxx" \
"https://itasign.com/api/v1/documents/abc-123/download?format=cades" \
-o document.pdf.p7m
# Response Headers (PAdES):
Content-Type: application/pdf
Content-Disposition: attachment; filename="Document Title.pdf"
# Response Headers (CAdES):
Content-Type: application/x-pkcs7-mime
Content-Disposition: attachment; filename="Document Title.pdf.p7m"Templates
/api/v1/templatesList all active templates in your organization
Example
Response:
{
"success": true,
"templates": [
{
"id": "template-1",
"name": "Privacy Consent",
"slug": "privacy-consent",
"description": "Patient privacy consent form",
"is_active": true,
"created_at": "2025-12-01T10:00:00Z"
}
]
}/api/v1/templates/{slug}Get template details by slug
Parameters
slugstring (required) - Template slug identifierExample
Response:
{
"success": true,
"template": {
"id": "template-1",
"name": "Privacy Consent",
"slug": "privacy-consent",
"description": "Patient privacy consent form",
"signers": [
{
"role_name": "patient",
"signing_order": 1
},
{
"role_name": "organization",
"signing_order": 2
}
],
"fields": [
{
"field_type": "text",
"label": "First Name",
"default_value": "{{firstName}}",
"is_required": true
}
]
}
}Reference
Common values and enumerations
Document Status Values
draftDocument created but not sent for signingpendingSent and waiting for first signaturepartially_signedAt least one signer has signedcompletedAll signers have signeddeclinedA signer declined to signexpiredDocument expired before completionvoidedDocument cancelled by creatorSigner Status Values
pendingCreated but not yet notifiednotifiedEmail sent to signerviewedSigner opened the signing linksignedSigner completed signingdeclinedSigner refused to signField Types
signatureSignature capture fieldinitialInitial/paraph capture fieldtextText input fielddateDate input fieldSigner Identifiers
Each signer must have at least one identifier, but providing multiple identifiers is strongly recommended:
emailEmail address for notification and identificationphone_number + country_codePhone number with ISO country code (e.g., +39, +1)unique_identifierTax code, DB ID, national ID, or other unique identifierBest Practice:
Provide all available identifiers (email + phone + unique_identifier) for each signer. This enables multiple contact methods, better tracking, and fallback options if one method fails.
Note: If providing phone_number, country_code is required. If providing country_code, phone_number is required.
Template Placeholders
Use placeholders in template field default values to substitute with data from your API request:
# Template field default_value:
"{{firstName}} {{lastName}}"
# API request data:
{"firstName": "Mario", "lastName": "Rossi"}
# Result:
"Mario Rossi"Tipi di Firma
Scegli il livello di firma giusto per la tua integrazione
Firma Elettronica Semplice
Free unlimited signatures
Firma Elettronica Avanzata
Free with cryptographic certificates
AdES with Timestamp
€0.25/doc - Long-term validity
Firma Elettronica Qualificata
€0.35/doc - Maximum legal value
Hai Bisogno di Aiuto?
Consulta la nostra documentazione o contatta il nostro team di supporto.