Documentation

Démarrage rapide API

L’API crée des contrats depuis votre propre application et vous renvoie leur avancement. Voici le chemin le plus court ; la référence complète est en anglais.

Créer une clé

Créez une clé d’API dans vos paramètres. Elle commence par canu_ et va dans l’en-tête de chaque requête. La limite est de 60 requêtes par minute.

Authorization: Bearer canu_votre_cle

Créer un contrat

Envoyez votre PDF en base64 (jusqu’à 3 Mo) et placez les champs en pourcentage de la page, mesuré depuis le coin supérieur gauche. Une personne avec une adresse e-mail dans signers reçoit son lien personnel.

PDF_B64=$(base64 < commande.pdf | tr -d '\n')
curl -X POST https://canusign.com/api/v1/contracts \
  -H "Authorization: Bearer canu_votre_cle" \
  -H "Content-Type: application/json" \
  -d "{
    \"title\": \"Commande 4711\",
    \"language\": \"fr\",
    \"document\": { \"name\": \"commande.pdf\", \"pdf\": \"$PDF_B64\" },
    \"signatureFields\": [
      { \"label\": \"Client\", \"page\": 1, \"x\": 10, \"y\": 80 },
      { \"label\": \"Prestataire\", \"page\": 1, \"x\": 60, \"y\": 80 }
    ],
    \"signers\": [{ \"label\": \"Client\", \"email\": \"client@example.com\" }],
    \"finalize\": true
  }"

Lire la réponse

La réponse contient id, signUrl pour le lien partagé, publicId et verifyUrl pour la page de vérification. Sans crédit et sans Pro, le contrat attend le paiement : requiresPayment vaut alors true et signUrl reste vide.

Attendre les signatures

Abonnez un webhook à contract.completed, ou interrogez GET /api/v1/contracts/{id}.

curl -X POST https://canusign.com/api/v1/webhooks \
  -H "Authorization: Bearer canu_votre_cle" \
  -H "Content-Type: application/json" \
  -d '{ "url": "https://votre-application.example/hooks/canusign", "events": ["contract.completed"] }'

Télécharger le PDF

Tant que tout le monde n’a pas signé, l’endpoint répond 409.

curl -o signe.pdf https://canusign.com/api/v1/contracts/{id}/pdf \
  -H "Authorization: Bearer canu_votre_cle"