Aller au contenu
signatik

Mandats et lots

Mandats de signature et cachets d’organisation en lot. 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.signatik.com/api/v1 · authentification Authorization: Bearer sk_… · erreurs { "error": { "code", "message" } }.

post/api/v1/signing-mandates

Créer un mandat de signature

Le représentant légal signe l’acte de mandat en signature avancée (identité attestée requise). Une fois activé, les mandataires peuvent cacheter en lot les documents du périmètre. Scope mandates:manage.

POST /signing-mandates
curl -X POST https://preprod.signatik.com/api/v1/signing-mandates \
  -H "Authorization: Bearer sk_test_…" \
  -H "Content-Type: application/json" \
  -d '{
  "principal": {
    "legal_name": "ACME SAS",
    "representative": {
      "name": "Contrat de mission n°1234",
      "email": "jean.dupont@exemple.fr",
      "phone": "+33612345678"
    }
  },
  "agents": [
    {
      "name": "Contrat de mission n°1234",
      "email": "jean.dupont@exemple.fr",
      "phone": "+33612345678"
    }
  ],
  "scope": [
    "cmad"
  ],
  "valid_from": "2026-01-12",
  "valid_until": "2027-01-11",
  "message": "Merci de signer avant vendredi."
}'
201 — exemple de réponse
{
  "id": "8f2c1d4e-0b7a-4c1e-9f0d-6a3b2c1d0e9f",
  "status": "pending",
  "principal": {
    "legal_name": "ACME SAS",
    "siren": "812345678",
    "is_merchant": true,
    "representative": {
      "name": "Contrat de mission n°1234",
      "role": "gérant",
      "email": "jean.dupont@exemple.fr"
    }
  },
  "agents": [
    {
      "id": "8f2c1d4e-0b7a-4c1e-9f0d-6a3b2c1d0e9f",
      "name": "Contrat de mission n°1234",
      "email": "jean.dupont@exemple.fr"
    }
  ],
  "scope": [
    "…"
  ],
  "valid_from": "2026-01-12",
  "valid_until": "2027-01-11",
  "envelope_id": "8f2c1d4e-0b7a-4c1e-9f0d-6a3b2c1d0e9f",
  "document_sha256": "…",
  "activated_at": "2026-09-02T14:33:07Z",
  "revoked_at": "2026-09-02T14:33:07Z",
  "created_at": "…"
}
Corps de la requête
ChampTypeDescription
principalrequisobject
legal_namerequisstring≤ 200 car.
sirenstring
is_merchantbooleandéfaut : true
representativerequisobject
namerequisstring≤ 200 car.
rolestring≤ 100 car.
emailrequisstring
phonerequisstring≤ 30 car.
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
agentsrequisobject[]1–20 éléments
namerequisstring≤ 200 car.
emailrequisstring
phonerequisstring≤ 30 car.
scoperequis"cmad" | "contrat_mission" | "avenant" | "releve_heures" | "autre"[]1–∞ éléments
valid_fromrequisstring
valid_untilrequisstring
messagestring≤ 2000 car.
Réponses
201OK
400Corps invalide
401Clé absente, mal formée ou révoquée (unauthorized)
403Scope manquant sur la clé (forbidden)
422identity_required
429Limitation de débit (rate_limited, en-tête Retry-After)
Réponse 201
ChampTypeDescription
idrequisuuid
statusrequis"pending" | "active" | "revoked" | "expired"
principalrequisobject
legal_namerequisstring
sirenrequisstring | null
is_merchantrequisboolean
representativerequisobject
namerequisstring
rolerequisstring | null
emailrequisstring
agentsrequisobject[]
idrequisuuid
namerequisstring
emailrequisstring
scoperequisstring[]
valid_fromrequisstring
valid_untilrequisstring
envelope_idrequisuuid | nullEnveloppe de l’acte de mandat, signée en avancé par le représentant
document_sha256requisstring | null
activated_atrequisdate-time | null
revoked_atrequisdate-time | null
created_atrequisstring
get/api/v1/signing-mandates

Lister les mandats

GET /signing-mandates
curl -X GET https://preprod.signatik.com/api/v1/signing-mandates \
  -H "Authorization: Bearer sk_test_…"
200 — exemple de réponse
{
  "data": [
    {
      "id": "8f2c1d4e-0b7a-4c1e-9f0d-6a3b2c1d0e9f",
      "status": "pending",
      "principal": {
        "legal_name": "ACME SAS",
        "siren": "812345678",
        "is_merchant": true,
        "representative": {
          "name": "Contrat de mission n°1234",
          "role": "gérant",
          "email": "jean.dupont@exemple.fr"
        }
      },
      "agents": [
        {
          "id": "8f2c1d4e-0b7a-4c1e-9f0d-6a3b2c1d0e9f",
          "name": "Contrat de mission n°1234",
          "email": "jean.dupont@exemple.fr"
        }
      ],
      "scope": [
        "…"
      ],
      "valid_from": "2026-01-12",
      "valid_until": "2027-01-11",
      "envelope_id": "8f2c1d4e-0b7a-4c1e-9f0d-6a3b2c1d0e9f",
      "document_sha256": "…",
      "activated_at": "2026-09-02T14:33:07Z",
      "revoked_at": "2026-09-02T14:33:07Z",
      "created_at": "…"
    }
  ]
}
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
datarequisSigningMandate[]
idrequisuuid
statusrequis"pending" | "active" | "revoked" | "expired"
principalrequisobject
legal_namerequisstring
sirenrequisstring | null
is_merchantrequisboolean
representativerequisobject
namerequisstring
rolerequisstring | null
emailrequisstring
agentsrequisobject[]
idrequisuuid
namerequisstring
emailrequisstring
scoperequisstring[]
valid_fromrequisstring
valid_untilrequisstring
envelope_idrequisuuid | nullEnveloppe de l’acte de mandat, signée en avancé par le représentant
document_sha256requisstring | null
activated_atrequisdate-time | null
revoked_atrequisdate-time | null
created_atrequisstring
get/api/v1/signing-mandates/{id}

Lire un mandat

GET /signing-mandates/{id}
curl -X GET https://preprod.signatik.com/api/v1/signing-mandates/env_8f2c… \
  -H "Authorization: Bearer sk_test_…"
200 — exemple de réponse
{
  "id": "8f2c1d4e-0b7a-4c1e-9f0d-6a3b2c1d0e9f",
  "status": "pending",
  "principal": {
    "legal_name": "ACME SAS",
    "siren": "812345678",
    "is_merchant": true,
    "representative": {
      "name": "Contrat de mission n°1234",
      "role": "gérant",
      "email": "jean.dupont@exemple.fr"
    }
  },
  "agents": [
    {
      "id": "8f2c1d4e-0b7a-4c1e-9f0d-6a3b2c1d0e9f",
      "name": "Contrat de mission n°1234",
      "email": "jean.dupont@exemple.fr"
    }
  ],
  "scope": [
    "…"
  ],
  "valid_from": "2026-01-12",
  "valid_until": "2027-01-11",
  "envelope_id": "8f2c1d4e-0b7a-4c1e-9f0d-6a3b2c1d0e9f",
  "document_sha256": "…",
  "activated_at": "2026-09-02T14:33:07Z",
  "revoked_at": "2026-09-02T14:33:07Z",
  "created_at": "…"
}
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
429Limitation de débit (rate_limited, en-tête Retry-After)
Réponse 200
ChampTypeDescription
idrequisuuid
statusrequis"pending" | "active" | "revoked" | "expired"
principalrequisobject
legal_namerequisstring
sirenrequisstring | null
is_merchantrequisboolean
representativerequisobject
namerequisstring
rolerequisstring | null
emailrequisstring
agentsrequisobject[]
idrequisuuid
namerequisstring
emailrequisstring
scoperequisstring[]
valid_fromrequisstring
valid_untilrequisstring
envelope_idrequisuuid | nullEnveloppe de l’acte de mandat, signée en avancé par le représentant
document_sha256requisstring | null
activated_atrequisdate-time | null
revoked_atrequisdate-time | null
created_atrequisstring
post/api/v1/signing-mandates/{id}/revoke

Révoquer un mandat

POST /signing-mandates/{id}/revoke
curl -X POST https://preprod.signatik.com/api/v1/signing-mandates/env_8f2c…/revoke \
  -H "Authorization: Bearer sk_test_…"
200 — exemple de réponse
{
  "id": "8f2c1d4e-0b7a-4c1e-9f0d-6a3b2c1d0e9f",
  "status": "pending",
  "principal": {
    "legal_name": "ACME SAS",
    "siren": "812345678",
    "is_merchant": true,
    "representative": {
      "name": "Contrat de mission n°1234",
      "role": "gérant",
      "email": "jean.dupont@exemple.fr"
    }
  },
  "agents": [
    {
      "id": "8f2c1d4e-0b7a-4c1e-9f0d-6a3b2c1d0e9f",
      "name": "Contrat de mission n°1234",
      "email": "jean.dupont@exemple.fr"
    }
  ],
  "scope": [
    "…"
  ],
  "valid_from": "2026-01-12",
  "valid_until": "2027-01-11",
  "envelope_id": "8f2c1d4e-0b7a-4c1e-9f0d-6a3b2c1d0e9f",
  "document_sha256": "…",
  "activated_at": "2026-09-02T14:33:07Z",
  "revoked_at": "2026-09-02T14:33:07Z",
  "created_at": "…"
}
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
statusrequis"pending" | "active" | "revoked" | "expired"
principalrequisobject
legal_namerequisstring
sirenrequisstring | null
is_merchantrequisboolean
representativerequisobject
namerequisstring
rolerequisstring | null
emailrequisstring
agentsrequisobject[]
idrequisuuid
namerequisstring
emailrequisstring
scoperequisstring[]
valid_fromrequisstring
valid_untilrequisstring
envelope_idrequisuuid | nullEnveloppe de l’acte de mandat, signée en avancé par le représentant
document_sha256requisstring | null
activated_atrequisdate-time | null
revoked_atrequisdate-time | null
created_atrequisstring
post/api/v1/seal-batch

Cacheter un lot sous mandat

Jusqu’à 500 enveloppes organization_seal du même mandat. Le mandataire reçoit une authorization_url, vérifie la liste et saisit un seul code à usage unique. Le jeton porte sur l’empreinte de la liste des empreintes : ajouter un document invalide le lot (409 batch_mismatch).

POST /seal-batch
curl -X POST https://preprod.signatik.com/api/v1/seal-batch \
  -H "Authorization: Bearer sk_test_…" \
  -H "Content-Type: application/json" \
  -d '{
  "mandate_id": "8f2c1d4e-0b7a-4c1e-9f0d-6a3b2c1d0e9f",
  "agent_email": "marie.leroy@exemple.fr",
  "envelope_ids": [
    "8f2c1d4e-0b7a-4c1e-9f0d-6a3b2c1d0e9f"
  ],
  "expires_in_hours": 72
}'
201 — exemple de réponse
{
  "id": "8f2c1d4e-0b7a-4c1e-9f0d-6a3b2c1d0e9f",
  "status": "pending",
  "mandate_id": "8f2c1d4e-0b7a-4c1e-9f0d-6a3b2c1d0e9f",
  "principal": "…",
  "agent": {
    "name": "Contrat de mission n°1234",
    "email": "jean.dupont@exemple.fr"
  },
  "envelope_ids": [
    "8f2c1d4e-0b7a-4c1e-9f0d-6a3b2c1d0e9f"
  ],
  "batch_sha256": "…",
  "authorization_url": "…",
  "expires_at": "…",
  "authorized_at": "2026-09-02T14:33:07Z",
  "applied_at": "2026-09-02T14:33:07Z",
  "created_at": "…"
}
Corps de la requête
ChampTypeDescription
mandate_idrequisuuid
agent_emailstring
envelope_idsrequisuuid[]1–500 éléments
expires_in_hoursintegerdéfaut : 72 · 1–168
Réponses
201OK
400Corps invalide
401Clé absente, mal formée ou révoquée (unauthorized)
403Scope manquant sur la clé (forbidden)
404Mandat ou enveloppe introuvable
409mandate_not_active, mandate_expired, invalid_status
422agent_not_in_mandate
429Limitation de débit (rate_limited, en-tête Retry-After)
Réponse 201
ChampTypeDescription
idrequisuuid
statusrequis"pending" | "authorized" | "applied" | "expired" | "canceled"
mandate_idrequisuuid
principalrequisstring
agentrequisobject
namerequisstring
emailrequisstring
envelope_idsrequisuuid[]
batch_sha256requisstringEmpreinte de la liste des empreintes : l’ajout d’un document invalide le jeton
authorization_urlrequisstring | null
expires_atrequisstring
authorized_atrequisdate-time | null
applied_atrequisdate-time | null
created_atrequisstring