Aller au contenu
signatik

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.

Base : https://preprod-app.signatik.com/api/v1 · authentification Authorization: Bearer sk_… · erreurs { "error": { "code", "message" } }.

post/api/v1/envelopes

Cré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.

POST /envelopes
curl -X POST https://preprod-app.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": []
}'
201 — exemple de réponse
{
  "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": "…"
    }
  ]
}
Corps de la requête
ChampTypeDescription
namerequisstring≤ 200 car.
messagestring≤ 2000 car.
expires_in_daysintegerdéfaut : 30 · 1–90
retention_daysinteger1–90
sendbooleandéfaut : false
signature_level"simple" | "advanced" | "organization_seal"défaut : "simple"
qualified_timestampbooleandéfaut : true
mandate_iduuid
documentsrequisobject[]1–5 éléments
namerequisstring≤ 200 car.
pdf_base64requisstring
signersrequisobject[]1–10 éléments
emailrequisstring
namerequisstring≤ 200 car.
orderintegerdéfaut : 0 · 0–20
phonestring≤ 30 car.
authentication"otp_email" | "otp_sms"[]1–∞ éléments
identity_iduuid
identityobject
methodrequis"partner_attested" | "remote_id_check" | "france_identite"
given_namerequisstring≤ 100 car.
family_namerequisstring≤ 100 car.
birth_datestring
emailstring
phonestring≤ 30 car.
document_type"id_card" | "passport" | "residence_permit" | "driving_licence" | "other"
document_number_hashstring
document_expires_onstring
verified_atdate-time
verified_bystring≤ 200 car.
attestation_refstring≤ 200 car.
external_refstring≤ 200 car.
expires_in_daysinteger1–3650
fieldsobject[]défaut : []
document_indexrequisinteger0–
signer_indexrequisinteger0–
typerequis"signature" | "text" | "date" | "checkbox"
pagerequisinteger1–
xrequisnumber0–100
yrequisnumber0–100
widthrequisnumber0.5–100
heightrequisnumber0.5–100
valuestring≤ 1000 car.
Réponses
201Enveloppe créée, avec sign_url par signataire
400Corps invalide, PDF invalide, index de champ hors limites
401Clé absente, mal formée ou révoquée (unauthorized)
402Crédits insuffisants (libre-service)
403Scope manquant sur la clé (forbidden)
413Corps trop volumineux (5 PDF de 10 Mo max)
422identity_required, phone_required, mandate_required, agent_not_in_mandate
429Limitation de débit (rate_limited, en-tête Retry-After)
Réponse 201
ChampTypeDescription
idrequisuuid
namerequisstring
statusrequis"draft" | "sent" | "completed" | "expired" | "canceled"
moderequis"live" | "test"test = bac à sable (clé sk_test_), jamais facturé
messagerequisstring | null
signature_levelrequis"simple" | "advanced" | "organization_seal"
pades_levelrequisstring | null
qualified_timestamprequisboolean
mandate_idrequisuuid | null
batch_idrequisuuid | null
preparedrequisboolean
created_atrequisstring
expires_atrequisdate-time | null
completed_atrequisdate-time | null
sealed_atrequisdate-time | null
retention_daysrequisinteger
documents_availablerequisboolean
purge_afterrequisdate-time | null
purged_atrequisdate-time | null
documentsrequisobject[]
idrequisuuid
namerequisstring
sha256requisstringEmpreinte du PDF original
sealed_sha256requisstring | nullEmpreinte du PDF scellé
revisionrequisinteger
current_sha256requisstring | null
sealed_download_urlrequisstring | nullLien temporaire (1 h), null avant scellement ou après purge
evidence_download_urlrequisstring | nullDossier de preuve scellé (lien 1 h)
signersrequisobject[]
idrequisuuid
emailrequisstring
namerequisstring
orderrequisinteger
rolerequis"signer" | "agent"
statusrequis"pending" | "notified" | "signed"
signed_atrequisdate-time | null
sign_urlrequisstring | nullURL personnelle de signature (marque blanche : à injecter dans votre produit)
signatureobjectPrésent en signature avancée et cachet d’organisation
levelrequis"advanced" | "organization_seal"
identity_idrequisuuid | null
authenticationrequisstring[]
authentication_usedrequisstring[]
identity_confirmed_atrequisdate-time | null
certificate_serialrequisstring | null
certificate_subjectrequisstring | null
certificate_fingerprint_sha256requisstring | null
applied_atrequisdate-time | null
timestamprequisobject | null
issuerrequisstring | null
serialrequisstring | null
gen_timerequisstring
qualifiedrequisboolean
providerrequisstring | null
get/api/v1/envelopes

Lister les enveloppes

Plus récentes d’abord. Scope envelopes:read.

GET /envelopes
curl -X GET https://preprod-app.signatik.com/api/v1/envelopes \
  -H "Authorization: Bearer sk_test_…"
200 — exemple de réponse
{
  "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
}
Paramètres de requête
limitinteger
offsetinteger | null
Réponses
200OK
401Clé absente, mal formée ou révoquée (unauthorized)
403Scope manquant sur la clé (forbidden)
429Limitation de débit (rate_limited, en-tête Retry-After)
Réponse 200
ChampTypeDescription
datarequisobject[]
idrequisuuid
namerequisstring
statusrequisstring
created_atrequisstring
completed_atrequisdate-time | null
limitrequisinteger
offsetrequisinteger
get/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.

GET /envelopes/{id}
curl -X GET https://preprod-app.signatik.com/api/v1/envelopes/env_8f2c… \
  -H "Authorization: Bearer sk_test_…"
200 — exemple de réponse
{
  "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": "…"
    }
  ]
}
Paramètres de chemin
iduuid
Réponses
200OK
401Clé absente, mal formée ou révoquée (unauthorized)
403Scope manquant sur la clé (forbidden)
404Enveloppe introuvable
429Limitation de débit (rate_limited, en-tête Retry-After)
Réponse 200
ChampTypeDescription
idrequisuuid
namerequisstring
statusrequis"draft" | "sent" | "completed" | "expired" | "canceled"
moderequis"live" | "test"test = bac à sable (clé sk_test_), jamais facturé
messagerequisstring | null
signature_levelrequis"simple" | "advanced" | "organization_seal"
pades_levelrequisstring | null
qualified_timestamprequisboolean
mandate_idrequisuuid | null
batch_idrequisuuid | null
preparedrequisboolean
created_atrequisstring
expires_atrequisdate-time | null
completed_atrequisdate-time | null
sealed_atrequisdate-time | null
retention_daysrequisinteger
documents_availablerequisboolean
purge_afterrequisdate-time | null
purged_atrequisdate-time | null
documentsrequisobject[]
idrequisuuid
namerequisstring
sha256requisstringEmpreinte du PDF original
sealed_sha256requisstring | nullEmpreinte du PDF scellé
revisionrequisinteger
current_sha256requisstring | null
sealed_download_urlrequisstring | nullLien temporaire (1 h), null avant scellement ou après purge
evidence_download_urlrequisstring | nullDossier de preuve scellé (lien 1 h)
signersrequisobject[]
idrequisuuid
emailrequisstring
namerequisstring
orderrequisinteger
rolerequis"signer" | "agent"
statusrequis"pending" | "notified" | "signed"
signed_atrequisdate-time | null
sign_urlrequisstring | nullURL personnelle de signature (marque blanche : à injecter dans votre produit)
signatureobjectPrésent en signature avancée et cachet d’organisation
levelrequis"advanced" | "organization_seal"
identity_idrequisuuid | null
authenticationrequisstring[]
authentication_usedrequisstring[]
identity_confirmed_atrequisdate-time | null
certificate_serialrequisstring | null
certificate_subjectrequisstring | null
certificate_fingerprint_sha256requisstring | null
applied_atrequisdate-time | null
timestamprequisobject | null
issuerrequisstring | null
serialrequisstring | null
gen_timerequisstring
qualifiedrequisboolean
providerrequisstring | null
post/api/v1/envelopes/{id}/send

Envoyer un brouillon

Passe l’enveloppe de draft à sent et notifie les signataires. Réserve les crédits en libre-service.

POST /envelopes/{id}/send
curl -X POST https://preprod-app.signatik.com/api/v1/envelopes/env_8f2c…/send \
  -H "Authorization: Bearer sk_test_…"
200 — exemple de réponse
{
  "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": "…"
    }
  ]
}
Paramètres de chemin
iduuid
Réponses
200OK
401Clé absente, mal formée ou révoquée (unauthorized)
402Crédits insuffisants
403Scope manquant sur la clé (forbidden)
404Introuvable
409invalid_status : déjà envoyée
429Limitation de débit (rate_limited, en-tête Retry-After)
Réponse 200
ChampTypeDescription
idrequisuuid
namerequisstring
statusrequis"draft" | "sent" | "completed" | "expired" | "canceled"
moderequis"live" | "test"test = bac à sable (clé sk_test_), jamais facturé
messagerequisstring | null
signature_levelrequis"simple" | "advanced" | "organization_seal"
pades_levelrequisstring | null
qualified_timestamprequisboolean
mandate_idrequisuuid | null
batch_idrequisuuid | null
preparedrequisboolean
created_atrequisstring
expires_atrequisdate-time | null
completed_atrequisdate-time | null
sealed_atrequisdate-time | null
retention_daysrequisinteger
documents_availablerequisboolean
purge_afterrequisdate-time | null
purged_atrequisdate-time | null
documentsrequisobject[]
idrequisuuid
namerequisstring
sha256requisstringEmpreinte du PDF original
sealed_sha256requisstring | nullEmpreinte du PDF scellé
revisionrequisinteger
current_sha256requisstring | null
sealed_download_urlrequisstring | nullLien temporaire (1 h), null avant scellement ou après purge
evidence_download_urlrequisstring | nullDossier de preuve scellé (lien 1 h)
signersrequisobject[]
idrequisuuid
emailrequisstring
namerequisstring
orderrequisinteger
rolerequis"signer" | "agent"
statusrequis"pending" | "notified" | "signed"
signed_atrequisdate-time | null
sign_urlrequisstring | nullURL personnelle de signature (marque blanche : à injecter dans votre produit)
signatureobjectPrésent en signature avancée et cachet d’organisation
levelrequis"advanced" | "organization_seal"
identity_idrequisuuid | null
authenticationrequisstring[]
authentication_usedrequisstring[]
identity_confirmed_atrequisdate-time | null
certificate_serialrequisstring | null
certificate_subjectrequisstring | null
certificate_fingerprint_sha256requisstring | null
applied_atrequisdate-time | null
timestamprequisobject | null
issuerrequisstring | null
serialrequisstring | null
gen_timerequisstring
qualifiedrequisboolean
providerrequisstring | null
post/api/v1/envelopes/{id}/cancel

Annuler

Possible en draft ou sent. Les liens de signature deviennent inactifs (410 gone) et les crédits réservés sont rendus.

POST /envelopes/{id}/cancel
curl -X POST https://preprod-app.signatik.com/api/v1/envelopes/env_8f2c…/cancel \
  -H "Authorization: Bearer sk_test_…"
200 — exemple de réponse
{
  "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": "…"
    }
  ]
}
Paramètres de chemin
iduuid
Réponses
200OK
401Clé absente, mal formée ou révoquée (unauthorized)
403Scope manquant sur la clé (forbidden)
404Introuvable
409invalid_status
429Limitation de débit (rate_limited, en-tête Retry-After)
Réponse 200
ChampTypeDescription
idrequisuuid
namerequisstring
statusrequis"draft" | "sent" | "completed" | "expired" | "canceled"
moderequis"live" | "test"test = bac à sable (clé sk_test_), jamais facturé
messagerequisstring | null
signature_levelrequis"simple" | "advanced" | "organization_seal"
pades_levelrequisstring | null
qualified_timestamprequisboolean
mandate_idrequisuuid | null
batch_idrequisuuid | null
preparedrequisboolean
created_atrequisstring
expires_atrequisdate-time | null
completed_atrequisdate-time | null
sealed_atrequisdate-time | null
retention_daysrequisinteger
documents_availablerequisboolean
purge_afterrequisdate-time | null
purged_atrequisdate-time | null
documentsrequisobject[]
idrequisuuid
namerequisstring
sha256requisstringEmpreinte du PDF original
sealed_sha256requisstring | nullEmpreinte du PDF scellé
revisionrequisinteger
current_sha256requisstring | null
sealed_download_urlrequisstring | nullLien temporaire (1 h), null avant scellement ou après purge
evidence_download_urlrequisstring | nullDossier de preuve scellé (lien 1 h)
signersrequisobject[]
idrequisuuid
emailrequisstring
namerequisstring
orderrequisinteger
rolerequis"signer" | "agent"
statusrequis"pending" | "notified" | "signed"
signed_atrequisdate-time | null
sign_urlrequisstring | nullURL personnelle de signature (marque blanche : à injecter dans votre produit)
signatureobjectPrésent en signature avancée et cachet d’organisation
levelrequis"advanced" | "organization_seal"
identity_idrequisuuid | null
authenticationrequisstring[]
authentication_usedrequisstring[]
identity_confirmed_atrequisdate-time | null
certificate_serialrequisstring | null
certificate_subjectrequisstring | null
certificate_fingerprint_sha256requisstring | null
applied_atrequisdate-time | null
timestamprequisobject | null
issuerrequisstring | null
serialrequisstring | null
gen_timerequisstring
qualifiedrequisboolean
providerrequisstring | null