Firme dal tuo software.
Crea richieste di firma dalla tua applicazione, fai firmare i tuoi firmatari sulla tua pagina con il tuo brand e ricevi il PDF sigillato con il suo audit trail via webhook. Un'API REST con chiavi di idempotenza, eventi firmati e codici di errore stabili.
Chiavi API e webhook sono inclusi nel piano Enterprise. Documentazione pubblica, specifica OpenAPI 3.1, nessun SDK da installare.
curl https://api.wesign.now/v1/signing-requests \
-H "Authorization: Bearer $WSK_KEY" \
-H "Idempotency-Key: case-4711/poa" \
-F "file=@power-of-attorney.pdf" \
-F 'signers=[{"email":"anna@example.ch","role":"client","name":"Anna Muster"}]' \
-F "placement=anchors" \
-F 'metadata={"case_id":"4711"}'
# → 201 Created
# {
# "documentId": "8a1e4f9a-…",
# "status": "pending",
# "signers": [{ "role": "client", "signingUrl": "https://yourco.wesign.now/en/sign/…", "emailed": true, … }], …
# }Quattro passi dal tuo codice al PDF sigillato.
Niente da installare: HTTPS, JSON e multipart. Ogni passo rimanda alla pagina della documentazione che ne è il contratto.
- Passo 1
Crea la richiesta
Un
Nella documentazionePOST /v1/signing-requestscon il PDF, i firmatari e il posizionamento dei campi:anchorstrova i marcatori[[ls:signature:client]]nel PDF,explicitprende coordinate,auto_appendaggiunge una pagina firma. La risposta contiene ildocumentIde unasigningUrlper firmatario.curl https://api.wesign.now/v1/templates/$TEMPLATE_ID/instantiate \ -H "Authorization: Bearer $WSK_KEY" \ -H "Idempotency-Key: case-4711/mandate" \ -H "Content-Type: application/json" \ -d '{ "recipients": [{ "slot": 1, "email": "anna@example.ch", "name": "Anna Muster" }], "field_values": { "company.legal_name": "Muster AG", "company.tax_id": "CHE-123.456.789" }, "metadata": { "case_id": "4711" } }'Lo stesso invio da un modello bloccato:
POST /v1/templates/{id}/instantiateunisce i tuoifield_valuesnei{{placeholder}}e invita i destinatari. - Passo 2
Il tuo firmatario firma
Inviamo l'invito nella lingua del firmatario dal tuo sottodominio con il tuo brand — oppure consegni tu il link con
Nella documentazionesend_emails: false. Aggiungi un numero di cellulare erequire_sms_verification, e il firmatario inserisce prima un codice monouso: una firma elettronica avanzata (AES) invece del livello link e-mail (SES)."signers": [{ "email": "anna@example.ch", "role": "client", "name": "Anna Muster", "locale": "de", "phone_e164": "+41791112233", "require_sms_verification": true }] # The invitation goes out in German from your branded subdomain. # Anna asks for the code on the signing page; the signature is AES once verified. # Deliver the link yourself instead: send_emails=false - Passo 3
Ricevi l'evento
Registra un webhook una volta per il workspace, oppure passa
Nella documentazionecallback_urlper richiesta. Ogni consegna è firmata HMAC-SHA256, ritentata con backoff esponenziale e registrata in un log di consegna da cui puoi riconsegnare.document.completedarriva una volta per documento consigned_pdf_url,audit_trail_urle losha256del file.POST https://your-app.example/wesign/callback X-WeSign-Event: document.completed X-WeSign-Signature: t=1757404800,v1=9c3b…a2f1 { "event": "document.completed", "document_id": "8a1e4f9a-…", "metadata": { "case_id": "4711" }, "signed_pdf_url": "https://api.wesign.now/v1/documents/8a1e4f9a-…/signed", "audit_trail_url": "https://api.wesign.now/v1/documents/8a1e4f9a-…/audit-trail", "sha256": "4f9a…d21c", … } - Passo 4
Scarica i file
Nella documentazioneGET /v1/documents/{id}/signedrestituisce il PDF sigillato PAdES, tutte le firme sotto un unico sigillo;/audit-trailgenera il registro eventi — SHA-256, marca temporale, IP mascherati — come PDF, sempre in inglese. Entrambi richiedono la tua chiave. Confronta l'hash e conserva entrambi i file da parte tua.curl -LOJ -H "Authorization: Bearer $WSK_KEY" \ https://api.wesign.now/v1/documents/$DOC_ID/signed curl -OJ -H "Authorization: Bearer $WSK_KEY" \ https://api.wesign.now/v1/documents/$DOC_ID/audit-trail # Compare the file's SHA-256 with the event's sha256, then store both files on your side.
Ogni risposta porta un X-Request-Id, e Impostazioni → API conserva per 30 giorni un log API di ogni chiamata — stato, codice di errore, documento interessato; i corpi non vengono mai salvati. Una Idempotency-Key rende sicuro un invio o un instantiate ritentato. Ogni chiave può fare 60 richieste al minuto.
Tutto ciò che l'API fa oggi.
Scrivi un contratto una volta con {{placeholder}}, bloccalo, e instantiate lo compila da field_values. GET /v1/templates/{id} pubblica lo schema di input; il registro dei campi del workspace tiene stabili chiavi e valori di esempio.
Metti marcatori [[ls:signature:client]] nel tuo PDF generato e i campi finiscono dove c'è il testo — senza coordinate. I marcatori vengono mascherati prima che il firmatario veda la pagina.
phone_e164 e require_sms_verification: un codice monouso prima che il documento venga mostrato o al momento della firma. Lega la firma a un telefono — una firma elettronica avanzata.
signing_mode: sequential invita un firmatario dopo l'altro; il parallelo è il default. Osservatori e webhook seguono ogni rilascio.
observer_emails: destinatari in copia che non firmano mai. Avvisati all'invio e quando tutti hanno firmato, con il PDF finale e il certificato.
Più firmatari firmano un PDF sotto un unico sigillo. Una busta di più file è più documenti: ognuno si completa da solo e genera il proprio document.completed.
Emetti una sessione breve per un firmatario e mostra la vista di firma nella tua pagina — iframe o webview mobile, il tuo brand, nessuna chiave API nel browser. Enterprise.
Firmati, ritentati con backoff esponenziale, payload completo o minimo (senza dati personali), un log di consegna con riconsegna e rotazione del secret che mantiene valido il vecchio per 24 ore.
Ogni PDF firmato porta un sigillo PAdES; la marca temporale RFC 3161 resta nei nostri registri. Chiunque può caricare il file su /verify e ottenere un verdetto: autentico, manomesso o sconosciuto.
Ogni workspace fissa i propri documenti in una regione: UE (default), Svizzera o USA. I documenti restano dove sono stati creati.
Firme inquadrate da eIDAS e dalla ZertES svizzera come SES e AES (niente QES). Documentazione pubblica, specifica OpenAPI 3.1 e 90 giorni di preavviso prima di ogni modifica incompatibile.
Software che mette un contratto davanti a un cliente.
Software fiscale e fiduciario
Lettere di incarico, procure e autorizzazioni al deposito direttamente dal fascicolo: il modello porta il testo dello studio, la tua piattaforma compila i dati di cliente e azienda, il cliente firma sulla pagina con il brand dello studio. L'audit trail risponde alla richiesta dell'autorità fiscale.
Piattaforme HR e di recruiting
Offerte, contratti e accordi di somministrazione generati per candidato e inviati in sequenza — prima il candidato, poi il datore di lavoro — con il PDF firmato di ritorno nella scheda del candidato.
Onboarding fintech
Accordi di onboarding e documenti per investitori eseguiti nel tuo flusso, integrati o via link, con un secondo fattore SMS dove il rischio lo richiede, e un PDF sigillato verificabile tramite hash per la compliance.
Agenzie e generatori di documenti
Il tuo strumento produce il PDF, le ancore posizionano i campi, il cliente firma senza account. `metadata` porta il tuo id progetto in ogni evento fino al tuo sistema.
Chiavi API e webhook arrivano con Enterprise.
I workspace Teams esistenti mantengono chiavi API e webhook. L'invio di modelli tramite API (instantiate, generate, confirm) e la firma integrata sono solo Enterprise. Ogni chiave può fare 60 richieste al minuto.
Vedi piani e prezziDomande
Esiste una sandbox o una chiave di test?
Non ancora: ogni chiave è reale. send_emails: false crea il documento e i link senza inviare e-mail a nessuno; validate_only: true verifica un instantiate senza creare nulla; review: true mette un documento in attesa perché una persona lo confermi o lo scarti.
Quale livello di firma produce l'API?
Una firma elettronica semplice (SES) via link e-mail, oppure una firma elettronica avanzata (AES) quando il firmatario verifica un codice SMS monouso. Nessuna firma qualificata (QES).
Come so che un webhook arriva da voi?
Ogni consegna porta X-WeSign-Signature: t=<time>,v1=<hmac> — HMAC-SHA256 su marca temporale e corpo grezzo con il secret dell'hook. Verificala prima di fidarti del corpo; la documentazione ha verificatori in Node e PHP.
Cosa succede se il mio endpoint è giù?
Ritentiamo con backoff esponenziale e teniamo un log di consegna per hook; una consegna può essere rimandata dal log. Puoi anche interrogare GET /v1/signing-requests/{id} in qualsiasi momento.
Posso ritentare un invio senza inviare due volte?
Sì. Invia una Idempotency-Key con POST /v1/signing-requests o instantiate: la stessa chiave con lo stesso corpo restituisce la prima risposta entro 24 ore; la stessa chiave con un corpo diverso viene rifiutata.
Dove vengono salvati i documenti?
Nella regione fissata dal workspace: UE (default), Svizzera o USA. Cifrati in transito e a riposo. Un PDF firmato può essere eliminato dopo un periodo di conservazione che imposti tu: conserva la tua copia a document.completed.
Firme dal tuo software.
Dicci cosa stai collegando. La documentazione è pubblica — leggila prima, se vuoi.











