Démarrage rapide
Envoyez votre premier document pour signature en un seul appel d'API.
Avant de commencer
- Un espace de travail eSora Sign dont vous êtes administrateur.
- Une clé d'API : dans l'application, ouvrez Paramètres, Développeurs et choisissez Créer une clé. Elle commence par sk_live_ et n'est affichée qu'une fois.
- Un PDF à envoyer (jusqu'à 50 Mo).
- curl, Node 18 ou version ultérieure, ou Python 3.9 ou version ultérieure.
Chaque appel est réel : les personnes ajoutées reçoivent de vrais courriels. Utilisez vos propres adresses pendant le développement.
export ESORA_API_KEY="sk_live_…"1. Créer et envoyer un document en un seul appel
POST /documents reçoit le fichier, les personnes, les champs qu'elles remplissent, et send: true. Téléversez le fichier en multipart/form-data et mettez tout le reste en JSON dans une partie nommée data.
Les positions des champs sont des fractions de la page : x et y depuis le coin supérieur gauche, la largeur et la hauteur, toutes entre 0 et 1. Les pages sont numérotées à partir de 1.
curl -X POST "https://api.esorasign.com/v1/documents" \
-H "Authorization: Bearer $ESORA_API_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-F "file=@service-agreement.pdf;type=application/pdf" \
-F 'data={
"title": "Service agreement - Northwind",
"message": "Please review and sign by Friday.",
"recipients": [
{ "key": "client", "name": "Maya Chen", "email": "maya.chen@example.com" },
{ "name": "Jordan Okafor", "email": "jordan.okafor@example.com", "role": "cc" }
],
"fields": [
{ "recipient": "client", "type": "signature", "page": 6, "x": 0.12, "y": 0.71, "width": 0.3, "height": 0.06 },
{ "recipient": "client", "type": "date_signed", "page": 6, "x": 0.55, "y": 0.73, "width": 0.2, "height": 0.04 }
],
"labels": ["sales"],
"metadata": { "crm_deal_id": "D-10442" },
"send": true
}'
// Node 18 or later: plain fetch and FormData, no dependencies.
import { readFile } from 'node:fs/promises';
import { randomUUID } from 'node:crypto';
const form = new FormData();
form.append('file', new Blob([await readFile('service-agreement.pdf')], { type: 'application/pdf' }), 'service-agreement.pdf');
form.append('data', JSON.stringify({
title: 'Service agreement - Northwind',
recipients: [{ key: 'client', name: 'Maya Chen', email: 'maya.chen@example.com' }],
fields: [{ recipient: 'client', type: 'signature', page: 6, x: 0.12, y: 0.71, width: 0.3, height: 0.06 }],
metadata: { crm_deal_id: 'D-10442' },
send: true,
}));
const res = await fetch('https://api.esorasign.com/v1/documents', {
method: 'POST',
headers: { Authorization: `Bearer ${process.env.ESORA_API_KEY}`, 'Idempotency-Key': randomUUID() },
body: form,
});
const doc = await res.json();
if (!res.ok) throw new Error(`${doc.error.code}: ${doc.error.message}`);
console.log(doc.id, doc.status); // doc_… sent
# Python 3.9 or later with requests (pip install requests).
import json, os, uuid
import requests
data = {
"title": "Service agreement - Northwind",
"recipients": [{"key": "client", "name": "Maya Chen", "email": "maya.chen@example.com"}],
"fields": [{"recipient": "client", "type": "signature", "page": 6, "x": 0.12, "y": 0.71, "width": 0.3, "height": 0.06}],
"metadata": {"crm_deal_id": "D-10442"},
"send": True,
}
with open("service-agreement.pdf", "rb") as f:
res = requests.post(
"https://api.esorasign.com/v1/documents",
headers={"Authorization": f"Bearer {os.environ['ESORA_API_KEY']}", "Idempotency-Key": str(uuid.uuid4())},
files={"file": ("service-agreement.pdf", f, "application/pdf")},
data={"data": json.dumps(data)},
timeout=60,
)
doc = res.json()
res.raise_for_status()
print(doc["id"], doc["status"]) # doc_... sent
2. Suivez sa progression
Chaque signataire reçoit un courriel avec son propre lien. Il confirme un code à 6 chiffres envoyé à la même adresse, accepte de signer électroniquement, puis signe. Il n'a jamais besoin de compte.
Consultez le statut quand vous voulez, ou ajoutez un webhook pour document.completed afin d'être averti tout de suite.
curl "https://api.esorasign.com/v1/documents/doc_3y9Pf34qY6Nb3wWD25RQ4F" \
-H "Authorization: Bearer $ESORA_API_KEY"3. Téléchargez le dossier signé
Quand le statut est completed, téléchargez le PDF scellé, son certificat d'achèvement et le dossier de preuves (le manifeste signé de tout ce qui s'est passé).
curl "https://api.esorasign.com/v1/documents/doc_3y9Pf34qY6Nb3wWD25RQ4F/download" \
-H "Authorization: Bearer $ESORA_API_KEY" -o signed.pdfSuivant
- Modèles : renvoyez le même document à d'autres personnes.
- Webhooks : réagissez aux signatures dans vos systèmes.
- Signature intégrée : faites signer les gens dans votre propre site.