Enveloppes
Documents à signer, signataires, champs, cycle de vie. Référence générée depuis les schémas de validation de l’API : ce que vous lisez est ce que le serveur vérifie.
- post/envelopes — Créer une enveloppe (et l’envoyer)
- get/envelopes — Lister les enveloppes
- get/envelopes/{id} — Lire une enveloppe
- post/envelopes/{id}/send — Envoyer un brouillon
- post/envelopes/{id}/cancel — Annuler
Base : https://preprod.signatik.com/api/v1 · authentification Authorization: Bearer sk_… · erreurs { "error": { "code", "message" } }.
/api/v1/envelopesCréer une enveloppe (et l’envoyer)
Une enveloppe = une requête : PDF en base64, signataires, champs. send: true envoie immédiatement. Le niveau se choisit par signature_level : simple (défaut), advanced (identité attestée obligatoire, sinon 422 identity_required) ou organization_seal (cachet sous mandat, signé en lot). En libre-service, le coût maximal est réservé à l’envoi (402 insufficient_credits sinon), débité à la complétion, rendu à l’annulation ou à l’expiration. Scope envelopes:write.
curl -X POST https://preprod.signatik.com/api/v1/envelopes \
-H "Authorization: Bearer sk_test_…" \
-H "Content-Type: application/json" \
-d '{
"name": "Contrat de mission n°1234",
"message": "Merci de signer avant vendredi.",
"expires_in_days": 30,
"retention_days": 1,
"send": false,
"signature_level": "simple",
"qualified_timestamp": true,
"mandate_id": "8f2c1d4e-0b7a-4c1e-9f0d-6a3b2c1d0e9f",
"documents": [
{
"name": "Contrat de mission n°1234",
"pdf_base64": "JVBERi0…"
}
],
"signers": [
{
"email": "jean.dupont@exemple.fr",
"name": "Contrat de mission n°1234"
}
],
"fields": []
}'{
"id": "8f2c1d4e-0b7a-4c1e-9f0d-6a3b2c1d0e9f",
"name": "Contrat de mission n°1234",
"status": "draft",
"mode": "live",
"message": "Merci de signer avant vendredi.",
"signature_level": "simple",
"pades_level": "…",
"qualified_timestamp": true,
"mandate_id": "8f2c1d4e-0b7a-4c1e-9f0d-6a3b2c1d0e9f",
"batch_id": "8f2c1d4e-0b7a-4c1e-9f0d-6a3b2c1d0e9f",
"prepared": true,
"created_at": "…",
"expires_at": "2026-09-02T14:33:07Z",
"completed_at": "2026-09-02T14:33:07Z",
"sealed_at": "2026-09-02T14:33:07Z",
"retention_days": 1,
"documents_available": true,
"purge_after": "2026-09-02T14:33:07Z",
"purged_at": "2026-09-02T14:33:07Z",
"documents": [
{
"id": "8f2c1d4e-0b7a-4c1e-9f0d-6a3b2c1d0e9f",
"name": "Contrat de mission n°1234",
"sha256": "9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08",
"sealed_sha256": "…",
"revision": 1,
"current_sha256": "…",
"sealed_download_url": "…"
}
],
"evidence_download_url": "…",
"signers": [
{
"id": "8f2c1d4e-0b7a-4c1e-9f0d-6a3b2c1d0e9f",
"email": "jean.dupont@exemple.fr",
"name": "Contrat de mission n°1234",
"order": 1,
"role": "gérant",
"status": "pending",
"signed_at": "2026-09-02T14:33:07Z",
"sign_url": "…"
}
]
}| Champ | Type | Description |
|---|---|---|
namerequis | string | ≤ 200 car. |
message | string | ≤ 2000 car. |
expires_in_days | integer | défaut : 30 · 1–90 |
retention_days | integer | 1–90 |
send | boolean | défaut : false |
signature_level | "simple" | "advanced" | "organization_seal" | défaut : "simple" |
qualified_timestamp | boolean | défaut : true |
mandate_id | uuid | |
documentsrequis | object[] | 1–5 éléments |
namerequis | string | ≤ 200 car. |
pdf_base64requis | string | |
signersrequis | object[] | 1–10 éléments |
emailrequis | string | |
namerequis | string | ≤ 200 car. |
order | integer | défaut : 0 · 0–20 |
phone | string | ≤ 30 car. |
authentication | "otp_email" | "otp_sms"[] | 1–∞ éléments |
identity_id | uuid | |
identity | object | |
methodrequis | "partner_attested" | "remote_id_check" | "france_identite" | |
given_namerequis | string | ≤ 100 car. |
family_namerequis | string | ≤ 100 car. |
birth_date | string | |
email | string | |
phone | string | ≤ 30 car. |
document_type | "id_card" | "passport" | "residence_permit" | "driving_licence" | "other" | |
document_number_hash | string | |
document_expires_on | string | |
verified_at | date-time | |
verified_by | string | ≤ 200 car. |
attestation_ref | string | ≤ 200 car. |
external_ref | string | ≤ 200 car. |
expires_in_days | integer | 1–3650 |
fields | object[] | défaut : [] |
document_indexrequis | integer | 0– |
signer_indexrequis | integer | 0– |
typerequis | "signature" | "text" | "date" | "checkbox" | |
pagerequis | integer | 1– |
xrequis | number | 0–100 |
yrequis | number | 0–100 |
widthrequis | number | 0.5–100 |
heightrequis | number | 0.5–100 |
value | string | ≤ 1000 car. |
201 | Enveloppe créée, avec sign_url par signataire |
400 | Corps invalide, PDF invalide, index de champ hors limites |
401 | Clé absente, mal formée ou révoquée (unauthorized) |
402 | Crédits insuffisants (libre-service) |
403 | Scope manquant sur la clé (forbidden) |
413 | Corps trop volumineux (5 PDF de 10 Mo max) |
422 | identity_required, phone_required, mandate_required, agent_not_in_mandate |
429 | Limitation de débit (rate_limited, en-tête Retry-After) |
| Champ | Type | Description |
|---|---|---|
idrequis | uuid | |
namerequis | string | |
statusrequis | "draft" | "sent" | "completed" | "expired" | "canceled" | |
moderequis | "live" | "test" | test = bac à sable (clé sk_test_), jamais facturé |
messagerequis | string | null | |
signature_levelrequis | "simple" | "advanced" | "organization_seal" | |
pades_levelrequis | string | null | |
qualified_timestamprequis | boolean | |
mandate_idrequis | uuid | null | |
batch_idrequis | uuid | null | |
preparedrequis | boolean | |
created_atrequis | string | |
expires_atrequis | date-time | null | |
completed_atrequis | date-time | null | |
sealed_atrequis | date-time | null | |
retention_daysrequis | integer | |
documents_availablerequis | boolean | |
purge_afterrequis | date-time | null | |
purged_atrequis | date-time | null | |
documentsrequis | object[] | |
idrequis | uuid | |
namerequis | string | |
sha256requis | string | Empreinte du PDF original |
sealed_sha256requis | string | null | Empreinte du PDF scellé |
revisionrequis | integer | |
current_sha256requis | string | null | |
sealed_download_urlrequis | string | null | Lien temporaire (1 h), null avant scellement ou après purge |
evidence_download_urlrequis | string | null | Dossier de preuve scellé (lien 1 h) |
signersrequis | object[] | |
idrequis | uuid | |
emailrequis | string | |
namerequis | string | |
orderrequis | integer | |
rolerequis | "signer" | "agent" | |
statusrequis | "pending" | "notified" | "signed" | |
signed_atrequis | date-time | null | |
sign_urlrequis | string | null | URL personnelle de signature (marque blanche : à injecter dans votre produit) |
signature | object | Présent en signature avancée et cachet d’organisation |
levelrequis | "advanced" | "organization_seal" | |
identity_idrequis | uuid | null | |
authenticationrequis | string[] | |
authentication_usedrequis | string[] | |
identity_confirmed_atrequis | date-time | null | |
certificate_serialrequis | string | null | |
certificate_subjectrequis | string | null | |
certificate_fingerprint_sha256requis | string | null | |
applied_atrequis | date-time | null | |
timestamprequis | object | null | |
issuerrequis | string | null | |
serialrequis | string | null | |
gen_timerequis | string | |
qualifiedrequis | boolean | |
providerrequis | string | null |
/api/v1/envelopesLister les enveloppes
Plus récentes d’abord. Scope envelopes:read.
curl -X GET https://preprod.signatik.com/api/v1/envelopes \
-H "Authorization: Bearer sk_test_…"{
"data": [
{
"id": "8f2c1d4e-0b7a-4c1e-9f0d-6a3b2c1d0e9f",
"name": "Contrat de mission n°1234",
"status": "…",
"created_at": "…",
"completed_at": "2026-09-02T14:33:07Z"
}
],
"limit": 1,
"offset": 1
}limit | integer | |
offset | integer | null |
200 | OK |
401 | Clé absente, mal formée ou révoquée (unauthorized) |
403 | Scope manquant sur la clé (forbidden) |
429 | Limitation de débit (rate_limited, en-tête Retry-After) |
| Champ | Type | Description |
|---|---|---|
datarequis | object[] | |
idrequis | uuid | |
namerequis | string | |
statusrequis | string | |
created_atrequis | string | |
completed_atrequis | date-time | null | |
limitrequis | integer | |
offsetrequis | integer |
/api/v1/envelopes/{id}Lire une enveloppe
Statut, signataires, documents avec liens de téléchargement temporaires (1 h) une fois scellée. Après purge, les liens sont null mais la preuve reste vérifiable via /verify.
curl -X GET https://preprod.signatik.com/api/v1/envelopes/env_8f2c… \
-H "Authorization: Bearer sk_test_…"{
"id": "8f2c1d4e-0b7a-4c1e-9f0d-6a3b2c1d0e9f",
"name": "Contrat de mission n°1234",
"status": "draft",
"mode": "live",
"message": "Merci de signer avant vendredi.",
"signature_level": "simple",
"pades_level": "…",
"qualified_timestamp": true,
"mandate_id": "8f2c1d4e-0b7a-4c1e-9f0d-6a3b2c1d0e9f",
"batch_id": "8f2c1d4e-0b7a-4c1e-9f0d-6a3b2c1d0e9f",
"prepared": true,
"created_at": "…",
"expires_at": "2026-09-02T14:33:07Z",
"completed_at": "2026-09-02T14:33:07Z",
"sealed_at": "2026-09-02T14:33:07Z",
"retention_days": 1,
"documents_available": true,
"purge_after": "2026-09-02T14:33:07Z",
"purged_at": "2026-09-02T14:33:07Z",
"documents": [
{
"id": "8f2c1d4e-0b7a-4c1e-9f0d-6a3b2c1d0e9f",
"name": "Contrat de mission n°1234",
"sha256": "9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08",
"sealed_sha256": "…",
"revision": 1,
"current_sha256": "…",
"sealed_download_url": "…"
}
],
"evidence_download_url": "…",
"signers": [
{
"id": "8f2c1d4e-0b7a-4c1e-9f0d-6a3b2c1d0e9f",
"email": "jean.dupont@exemple.fr",
"name": "Contrat de mission n°1234",
"order": 1,
"role": "gérant",
"status": "pending",
"signed_at": "2026-09-02T14:33:07Z",
"sign_url": "…"
}
]
}id | uuid |
200 | OK |
401 | Clé absente, mal formée ou révoquée (unauthorized) |
403 | Scope manquant sur la clé (forbidden) |
404 | Enveloppe introuvable |
429 | Limitation de débit (rate_limited, en-tête Retry-After) |
| Champ | Type | Description |
|---|---|---|
idrequis | uuid | |
namerequis | string | |
statusrequis | "draft" | "sent" | "completed" | "expired" | "canceled" | |
moderequis | "live" | "test" | test = bac à sable (clé sk_test_), jamais facturé |
messagerequis | string | null | |
signature_levelrequis | "simple" | "advanced" | "organization_seal" | |
pades_levelrequis | string | null | |
qualified_timestamprequis | boolean | |
mandate_idrequis | uuid | null | |
batch_idrequis | uuid | null | |
preparedrequis | boolean | |
created_atrequis | string | |
expires_atrequis | date-time | null | |
completed_atrequis | date-time | null | |
sealed_atrequis | date-time | null | |
retention_daysrequis | integer | |
documents_availablerequis | boolean | |
purge_afterrequis | date-time | null | |
purged_atrequis | date-time | null | |
documentsrequis | object[] | |
idrequis | uuid | |
namerequis | string | |
sha256requis | string | Empreinte du PDF original |
sealed_sha256requis | string | null | Empreinte du PDF scellé |
revisionrequis | integer | |
current_sha256requis | string | null | |
sealed_download_urlrequis | string | null | Lien temporaire (1 h), null avant scellement ou après purge |
evidence_download_urlrequis | string | null | Dossier de preuve scellé (lien 1 h) |
signersrequis | object[] | |
idrequis | uuid | |
emailrequis | string | |
namerequis | string | |
orderrequis | integer | |
rolerequis | "signer" | "agent" | |
statusrequis | "pending" | "notified" | "signed" | |
signed_atrequis | date-time | null | |
sign_urlrequis | string | null | URL personnelle de signature (marque blanche : à injecter dans votre produit) |
signature | object | Présent en signature avancée et cachet d’organisation |
levelrequis | "advanced" | "organization_seal" | |
identity_idrequis | uuid | null | |
authenticationrequis | string[] | |
authentication_usedrequis | string[] | |
identity_confirmed_atrequis | date-time | null | |
certificate_serialrequis | string | null | |
certificate_subjectrequis | string | null | |
certificate_fingerprint_sha256requis | string | null | |
applied_atrequis | date-time | null | |
timestamprequis | object | null | |
issuerrequis | string | null | |
serialrequis | string | null | |
gen_timerequis | string | |
qualifiedrequis | boolean | |
providerrequis | string | null |
/api/v1/envelopes/{id}/sendEnvoyer un brouillon
Passe l’enveloppe de draft à sent et notifie les signataires. Réserve les crédits en libre-service.
curl -X POST https://preprod.signatik.com/api/v1/envelopes/env_8f2c…/send \
-H "Authorization: Bearer sk_test_…"{
"id": "8f2c1d4e-0b7a-4c1e-9f0d-6a3b2c1d0e9f",
"name": "Contrat de mission n°1234",
"status": "draft",
"mode": "live",
"message": "Merci de signer avant vendredi.",
"signature_level": "simple",
"pades_level": "…",
"qualified_timestamp": true,
"mandate_id": "8f2c1d4e-0b7a-4c1e-9f0d-6a3b2c1d0e9f",
"batch_id": "8f2c1d4e-0b7a-4c1e-9f0d-6a3b2c1d0e9f",
"prepared": true,
"created_at": "…",
"expires_at": "2026-09-02T14:33:07Z",
"completed_at": "2026-09-02T14:33:07Z",
"sealed_at": "2026-09-02T14:33:07Z",
"retention_days": 1,
"documents_available": true,
"purge_after": "2026-09-02T14:33:07Z",
"purged_at": "2026-09-02T14:33:07Z",
"documents": [
{
"id": "8f2c1d4e-0b7a-4c1e-9f0d-6a3b2c1d0e9f",
"name": "Contrat de mission n°1234",
"sha256": "9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08",
"sealed_sha256": "…",
"revision": 1,
"current_sha256": "…",
"sealed_download_url": "…"
}
],
"evidence_download_url": "…",
"signers": [
{
"id": "8f2c1d4e-0b7a-4c1e-9f0d-6a3b2c1d0e9f",
"email": "jean.dupont@exemple.fr",
"name": "Contrat de mission n°1234",
"order": 1,
"role": "gérant",
"status": "pending",
"signed_at": "2026-09-02T14:33:07Z",
"sign_url": "…"
}
]
}id | uuid |
200 | OK |
401 | Clé absente, mal formée ou révoquée (unauthorized) |
402 | Crédits insuffisants |
403 | Scope manquant sur la clé (forbidden) |
404 | Introuvable |
409 | invalid_status : déjà envoyée |
429 | Limitation de débit (rate_limited, en-tête Retry-After) |
| Champ | Type | Description |
|---|---|---|
idrequis | uuid | |
namerequis | string | |
statusrequis | "draft" | "sent" | "completed" | "expired" | "canceled" | |
moderequis | "live" | "test" | test = bac à sable (clé sk_test_), jamais facturé |
messagerequis | string | null | |
signature_levelrequis | "simple" | "advanced" | "organization_seal" | |
pades_levelrequis | string | null | |
qualified_timestamprequis | boolean | |
mandate_idrequis | uuid | null | |
batch_idrequis | uuid | null | |
preparedrequis | boolean | |
created_atrequis | string | |
expires_atrequis | date-time | null | |
completed_atrequis | date-time | null | |
sealed_atrequis | date-time | null | |
retention_daysrequis | integer | |
documents_availablerequis | boolean | |
purge_afterrequis | date-time | null | |
purged_atrequis | date-time | null | |
documentsrequis | object[] | |
idrequis | uuid | |
namerequis | string | |
sha256requis | string | Empreinte du PDF original |
sealed_sha256requis | string | null | Empreinte du PDF scellé |
revisionrequis | integer | |
current_sha256requis | string | null | |
sealed_download_urlrequis | string | null | Lien temporaire (1 h), null avant scellement ou après purge |
evidence_download_urlrequis | string | null | Dossier de preuve scellé (lien 1 h) |
signersrequis | object[] | |
idrequis | uuid | |
emailrequis | string | |
namerequis | string | |
orderrequis | integer | |
rolerequis | "signer" | "agent" | |
statusrequis | "pending" | "notified" | "signed" | |
signed_atrequis | date-time | null | |
sign_urlrequis | string | null | URL personnelle de signature (marque blanche : à injecter dans votre produit) |
signature | object | Présent en signature avancée et cachet d’organisation |
levelrequis | "advanced" | "organization_seal" | |
identity_idrequis | uuid | null | |
authenticationrequis | string[] | |
authentication_usedrequis | string[] | |
identity_confirmed_atrequis | date-time | null | |
certificate_serialrequis | string | null | |
certificate_subjectrequis | string | null | |
certificate_fingerprint_sha256requis | string | null | |
applied_atrequis | date-time | null | |
timestamprequis | object | null | |
issuerrequis | string | null | |
serialrequis | string | null | |
gen_timerequis | string | |
qualifiedrequis | boolean | |
providerrequis | string | null |
/api/v1/envelopes/{id}/cancelAnnuler
Possible en draft ou sent. Les liens de signature deviennent inactifs (410 gone) et les crédits réservés sont rendus.
curl -X POST https://preprod.signatik.com/api/v1/envelopes/env_8f2c…/cancel \
-H "Authorization: Bearer sk_test_…"{
"id": "8f2c1d4e-0b7a-4c1e-9f0d-6a3b2c1d0e9f",
"name": "Contrat de mission n°1234",
"status": "draft",
"mode": "live",
"message": "Merci de signer avant vendredi.",
"signature_level": "simple",
"pades_level": "…",
"qualified_timestamp": true,
"mandate_id": "8f2c1d4e-0b7a-4c1e-9f0d-6a3b2c1d0e9f",
"batch_id": "8f2c1d4e-0b7a-4c1e-9f0d-6a3b2c1d0e9f",
"prepared": true,
"created_at": "…",
"expires_at": "2026-09-02T14:33:07Z",
"completed_at": "2026-09-02T14:33:07Z",
"sealed_at": "2026-09-02T14:33:07Z",
"retention_days": 1,
"documents_available": true,
"purge_after": "2026-09-02T14:33:07Z",
"purged_at": "2026-09-02T14:33:07Z",
"documents": [
{
"id": "8f2c1d4e-0b7a-4c1e-9f0d-6a3b2c1d0e9f",
"name": "Contrat de mission n°1234",
"sha256": "9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08",
"sealed_sha256": "…",
"revision": 1,
"current_sha256": "…",
"sealed_download_url": "…"
}
],
"evidence_download_url": "…",
"signers": [
{
"id": "8f2c1d4e-0b7a-4c1e-9f0d-6a3b2c1d0e9f",
"email": "jean.dupont@exemple.fr",
"name": "Contrat de mission n°1234",
"order": 1,
"role": "gérant",
"status": "pending",
"signed_at": "2026-09-02T14:33:07Z",
"sign_url": "…"
}
]
}id | uuid |
200 | OK |
401 | Clé absente, mal formée ou révoquée (unauthorized) |
403 | Scope manquant sur la clé (forbidden) |
404 | Introuvable |
409 | invalid_status |
429 | Limitation de débit (rate_limited, en-tête Retry-After) |
| Champ | Type | Description |
|---|---|---|
idrequis | uuid | |
namerequis | string | |
statusrequis | "draft" | "sent" | "completed" | "expired" | "canceled" | |
moderequis | "live" | "test" | test = bac à sable (clé sk_test_), jamais facturé |
messagerequis | string | null | |
signature_levelrequis | "simple" | "advanced" | "organization_seal" | |
pades_levelrequis | string | null | |
qualified_timestamprequis | boolean | |
mandate_idrequis | uuid | null | |
batch_idrequis | uuid | null | |
preparedrequis | boolean | |
created_atrequis | string | |
expires_atrequis | date-time | null | |
completed_atrequis | date-time | null | |
sealed_atrequis | date-time | null | |
retention_daysrequis | integer | |
documents_availablerequis | boolean | |
purge_afterrequis | date-time | null | |
purged_atrequis | date-time | null | |
documentsrequis | object[] | |
idrequis | uuid | |
namerequis | string | |
sha256requis | string | Empreinte du PDF original |
sealed_sha256requis | string | null | Empreinte du PDF scellé |
revisionrequis | integer | |
current_sha256requis | string | null | |
sealed_download_urlrequis | string | null | Lien temporaire (1 h), null avant scellement ou après purge |
evidence_download_urlrequis | string | null | Dossier de preuve scellé (lien 1 h) |
signersrequis | object[] | |
idrequis | uuid | |
emailrequis | string | |
namerequis | string | |
orderrequis | integer | |
rolerequis | "signer" | "agent" | |
statusrequis | "pending" | "notified" | "signed" | |
signed_atrequis | date-time | null | |
sign_urlrequis | string | null | URL personnelle de signature (marque blanche : à injecter dans votre produit) |
signature | object | Présent en signature avancée et cachet d’organisation |
levelrequis | "advanced" | "organization_seal" | |
identity_idrequis | uuid | null | |
authenticationrequis | string[] | |
authentication_usedrequis | string[] | |
identity_confirmed_atrequis | date-time | null | |
certificate_serialrequis | string | null | |
certificate_subjectrequis | string | null | |
certificate_fingerprint_sha256requis | string | null | |
applied_atrequis | date-time | null | |
timestamprequis | object | null | |
issuerrequis | string | null | |
serialrequis | string | null | |
gen_timerequis | string | |
qualifiedrequis | boolean | |
providerrequis | string | null |