Émargement
Sessions de formation, créneaux, feuille scellée. 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/attendance-sessions — Créer une session d’émargement
- get/attendance-sessions — Lister les sessions
- get/attendance-sessions/{id} — Lire une session (présences en temps réel)
- post/attendance-sessions/{id}/attendees — Ajouter un inscrit en cours de session
- post/attendance-sessions/{id}/slots/{slotId}/open — Ouvrir un créneau
- post/attendance-sessions/{id}/slots/{slotId}/close — Fermer un créneau
- post/attendance-sessions/{id}/close — Clôturer la session
- get/attendance-sessions/{id}/sheet — Feuille scellée (lien 1 h)
- get/attendance-sessions/{id}/export — Export CSV pour le contrôle de service fait
Base : https://preprod.signatik.com/api/v1 · authentification Authorization: Bearer sk_… · erreurs { "error": { "code", "message" } }.
post
/api/v1/attendance-sessionsCréer une session d’émargement
Aucun PDF en entrée : la feuille est générée par la plateforme. Réponse : sign_url par stagiaire, trainer.url pour le formateur. Scope attendance:write.
●POST /attendance-sessions
curl -X POST https://preprod.signatik.com/api/v1/attendance-sessions \
-H "Authorization: Bearer sk_test_…" \
-H "Content-Type: application/json" \
-d '{
"name": "Contrat de mission n°1234",
"reference": "SESS-2026-0912",
"modality": "onsite",
"location": "Lyon, salle 3",
"trainer": {
"name": "Contrat de mission n°1234"
},
"slots": [
{
"label": "Jour 1 — matin",
"starts_at": "2026-09-15T09:00:00+02:00",
"ends_at": "2026-09-15T12:30:00+02:00"
}
],
"attendees": [
{
"name": "Contrat de mission n°1234"
}
],
"retention_days": 1095,
"notify": true
}'●201 — exemple de réponse
{
"id": "8f2c1d4e-0b7a-4c1e-9f0d-6a3b2c1d0e9f",
"name": "Contrat de mission n°1234",
"reference": "SESS-2026-0912",
"modality": "onsite",
"location": "Lyon, salle 3",
"status": "open",
"trainer": {
"name": "Contrat de mission n°1234",
"email": "jean.dupont@exemple.fr",
"url": "https://votre-app.fr/webhooks/esign"
},
"retention_days": 1,
"created_at": "…",
"closed_at": "2026-09-02T14:33:07Z",
"sealed_at": "2026-09-02T14:33:07Z",
"sheet_sha256": "…",
"sheet_download_url": "…",
"evidence_download_url": "…",
"slots": [
{
"id": "8f2c1d4e-0b7a-4c1e-9f0d-6a3b2c1d0e9f",
"label": "Jour 1 — matin",
"starts_at": "2026-09-15T09:00:00+02:00",
"ends_at": "2026-09-15T12:30:00+02:00",
"module": "…",
"status": "scheduled",
"opened_at": "2026-09-02T14:33:07Z",
"closed_at": "2026-09-02T14:33:07Z",
"trainer_signed_at": "2026-09-02T14:33:07Z",
"present": 1,
"expected": 1,
"rate": 1
}
],
"attendees": [
{
"id": "8f2c1d4e-0b7a-4c1e-9f0d-6a3b2c1d0e9f",
"name": "Contrat de mission n°1234",
"email": "jean.dupont@exemple.fr",
"external_ref": "STG-8891",
"sign_url": "…",
"marks": [
{
"slot_id": "8f2c1d4e-0b7a-4c1e-9f0d-6a3b2c1d0e9f",
"status": "…",
"method": "…",
"signed_at": "…",
"out_of_window": true
}
]
}
],
"marks_count": 1
}Corps de la requête
| Champ | Type | Description |
|---|---|---|
namerequis | string | ≤ 200 car. |
reference | string | ≤ 100 car. |
modality | "onsite" | "remote" | "hybrid" | défaut : "onsite" |
location | string | ≤ 200 car. |
trainerrequis | object | |
namerequis | string | ≤ 200 car. |
email | string | |
slotsrequis | object[] | 1–200 éléments |
labelrequis | string | ≤ 100 car. |
starts_atrequis | date-time | |
ends_atrequis | date-time | |
module | string | ≤ 200 car. |
attendeesrequis | object[] | 1–500 éléments |
namerequis | string | ≤ 200 car. |
email | string | |
external_ref | string | ≤ 100 car. |
retention_days | integer | défaut : 1095 · 30–3650 |
notify | boolean | défaut : true |
Réponses
201 | OK |
400 | Corps invalide |
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) |
Réponse 201
| Champ | Type | Description |
|---|---|---|
idrequis | uuid | |
namerequis | string | |
referencerequis | string | null | |
modalityrequis | "onsite" | "remote" | "hybrid" | |
locationrequis | string | null | |
statusrequis | "open" | "closed" | "sealed" | |
trainerrequis | object | |
namerequis | string | |
emailrequis | string | null | |
urlrequis | string | Espace formateur (ouverture et fermeture des créneaux, QR code) |
retention_daysrequis | integer | |
created_atrequis | string | |
closed_atrequis | date-time | null | |
sealed_atrequis | date-time | null | |
sheet_sha256requis | string | null | |
sheet_download_urlrequis | string | null | |
evidence_download_urlrequis | string | null | |
slotsrequis | object[] | |
idrequis | uuid | |
labelrequis | string | |
starts_atrequis | string | |
ends_atrequis | string | |
modulerequis | string | null | |
statusrequis | "scheduled" | "open" | "closed" | |
opened_atrequis | date-time | null | |
closed_atrequis | date-time | null | |
trainer_signed_atrequis | date-time | null | |
presentrequis | integer | |
expectedrequis | integer | |
raterequis | integer | Taux de présence, en % |
attendeesrequis | object[] | |
idrequis | uuid | |
namerequis | string | |
emailrequis | string | null | |
external_refrequis | string | null | |
sign_urlrequis | string | Lien personnel d’émargement, valable toute la session |
marksrequis | object[] | |
slot_idrequis | uuid | |
statusrequis | string | |
methodrequis | string | |
signed_atrequis | string | |
out_of_windowrequis | boolean | |
marks_countrequis | integer |
get
/api/v1/attendance-sessionsLister les sessions
●GET /attendance-sessions
curl -X GET https://preprod.signatik.com/api/v1/attendance-sessions \
-H "Authorization: Bearer sk_test_…"●200 — exemple de réponse
{
"data": [
{
"id": "8f2c1d4e-0b7a-4c1e-9f0d-6a3b2c1d0e9f",
"name": "Contrat de mission n°1234",
"reference": "SESS-2026-0912",
"status": "…",
"created_at": "…"
}
],
"limit": 1,
"offset": 1
}Paramètres de requête
limit | integer | |
offset | integer | null |
Réponses
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) |
Réponse 200
| Champ | Type | Description |
|---|---|---|
datarequis | object[] | |
idrequis | uuid | |
namerequis | string | |
referencerequis | string | null | |
statusrequis | string | |
created_atrequis | string | |
limitrequis | number | |
offsetrequis | number |
get
/api/v1/attendance-sessions/{id}Lire une session (présences en temps réel)
●GET /attendance-sessions/{id}
curl -X GET https://preprod.signatik.com/api/v1/attendance-sessions/env_8f2c… \
-H "Authorization: Bearer sk_test_…"●200 — exemple de réponse
{
"id": "8f2c1d4e-0b7a-4c1e-9f0d-6a3b2c1d0e9f",
"name": "Contrat de mission n°1234",
"reference": "SESS-2026-0912",
"modality": "onsite",
"location": "Lyon, salle 3",
"status": "open",
"trainer": {
"name": "Contrat de mission n°1234",
"email": "jean.dupont@exemple.fr",
"url": "https://votre-app.fr/webhooks/esign"
},
"retention_days": 1,
"created_at": "…",
"closed_at": "2026-09-02T14:33:07Z",
"sealed_at": "2026-09-02T14:33:07Z",
"sheet_sha256": "…",
"sheet_download_url": "…",
"evidence_download_url": "…",
"slots": [
{
"id": "8f2c1d4e-0b7a-4c1e-9f0d-6a3b2c1d0e9f",
"label": "Jour 1 — matin",
"starts_at": "2026-09-15T09:00:00+02:00",
"ends_at": "2026-09-15T12:30:00+02:00",
"module": "…",
"status": "scheduled",
"opened_at": "2026-09-02T14:33:07Z",
"closed_at": "2026-09-02T14:33:07Z",
"trainer_signed_at": "2026-09-02T14:33:07Z",
"present": 1,
"expected": 1,
"rate": 1
}
],
"attendees": [
{
"id": "8f2c1d4e-0b7a-4c1e-9f0d-6a3b2c1d0e9f",
"name": "Contrat de mission n°1234",
"email": "jean.dupont@exemple.fr",
"external_ref": "STG-8891",
"sign_url": "…",
"marks": [
{
"slot_id": "8f2c1d4e-0b7a-4c1e-9f0d-6a3b2c1d0e9f",
"status": "…",
"method": "…",
"signed_at": "…",
"out_of_window": true
}
]
}
],
"marks_count": 1
}Paramètres de chemin
id | uuid |
Réponses
200 | OK |
401 | Clé absente, mal formée ou révoquée (unauthorized) |
403 | Scope manquant sur la clé (forbidden) |
404 | Introuvable |
429 | Limitation de débit (rate_limited, en-tête Retry-After) |
Réponse 200
| Champ | Type | Description |
|---|---|---|
idrequis | uuid | |
namerequis | string | |
referencerequis | string | null | |
modalityrequis | "onsite" | "remote" | "hybrid" | |
locationrequis | string | null | |
statusrequis | "open" | "closed" | "sealed" | |
trainerrequis | object | |
namerequis | string | |
emailrequis | string | null | |
urlrequis | string | Espace formateur (ouverture et fermeture des créneaux, QR code) |
retention_daysrequis | integer | |
created_atrequis | string | |
closed_atrequis | date-time | null | |
sealed_atrequis | date-time | null | |
sheet_sha256requis | string | null | |
sheet_download_urlrequis | string | null | |
evidence_download_urlrequis | string | null | |
slotsrequis | object[] | |
idrequis | uuid | |
labelrequis | string | |
starts_atrequis | string | |
ends_atrequis | string | |
modulerequis | string | null | |
statusrequis | "scheduled" | "open" | "closed" | |
opened_atrequis | date-time | null | |
closed_atrequis | date-time | null | |
trainer_signed_atrequis | date-time | null | |
presentrequis | integer | |
expectedrequis | integer | |
raterequis | integer | Taux de présence, en % |
attendeesrequis | object[] | |
idrequis | uuid | |
namerequis | string | |
emailrequis | string | null | |
external_refrequis | string | null | |
sign_urlrequis | string | Lien personnel d’émargement, valable toute la session |
marksrequis | object[] | |
slot_idrequis | uuid | |
statusrequis | string | |
methodrequis | string | |
signed_atrequis | string | |
out_of_windowrequis | boolean | |
marks_countrequis | integer |
post
/api/v1/attendance-sessions/{id}/attendeesAjouter un inscrit en cours de session
●POST /attendance-sessions/{id}/attendees
curl -X POST https://preprod.signatik.com/api/v1/attendance-sessions/env_8f2c…/attendees \
-H "Authorization: Bearer sk_test_…" \
-H "Content-Type: application/json" \
-d '{
"name": "Contrat de mission n°1234",
"email": "jean.dupont@exemple.fr",
"external_ref": "STG-8891"
}'●201 — exemple de réponse
{
"id": "8f2c1d4e-0b7a-4c1e-9f0d-6a3b2c1d0e9f",
"name": "Contrat de mission n°1234",
"reference": "SESS-2026-0912",
"modality": "onsite",
"location": "Lyon, salle 3",
"status": "open",
"trainer": {
"name": "Contrat de mission n°1234",
"email": "jean.dupont@exemple.fr",
"url": "https://votre-app.fr/webhooks/esign"
},
"retention_days": 1,
"created_at": "…",
"closed_at": "2026-09-02T14:33:07Z",
"sealed_at": "2026-09-02T14:33:07Z",
"sheet_sha256": "…",
"sheet_download_url": "…",
"evidence_download_url": "…",
"slots": [
{
"id": "8f2c1d4e-0b7a-4c1e-9f0d-6a3b2c1d0e9f",
"label": "Jour 1 — matin",
"starts_at": "2026-09-15T09:00:00+02:00",
"ends_at": "2026-09-15T12:30:00+02:00",
"module": "…",
"status": "scheduled",
"opened_at": "2026-09-02T14:33:07Z",
"closed_at": "2026-09-02T14:33:07Z",
"trainer_signed_at": "2026-09-02T14:33:07Z",
"present": 1,
"expected": 1,
"rate": 1
}
],
"attendees": [
{
"id": "8f2c1d4e-0b7a-4c1e-9f0d-6a3b2c1d0e9f",
"name": "Contrat de mission n°1234",
"email": "jean.dupont@exemple.fr",
"external_ref": "STG-8891",
"sign_url": "…",
"marks": [
{
"slot_id": "8f2c1d4e-0b7a-4c1e-9f0d-6a3b2c1d0e9f",
"status": "…",
"method": "…",
"signed_at": "…",
"out_of_window": true
}
]
}
],
"marks_count": 1
}Paramètres de chemin
id | uuid |
Corps de la requête
| Champ | Type | Description |
|---|---|---|
namerequis | string | ≤ 200 car. |
email | string | |
external_ref | string | ≤ 100 car. |
Réponses
201 | OK |
400 | name requis |
401 | Clé absente, mal formée ou révoquée (unauthorized) |
403 | Scope manquant sur la clé (forbidden) |
404 | Introuvable |
409 | Session close |
429 | Limitation de débit (rate_limited, en-tête Retry-After) |
Réponse 201
| Champ | Type | Description |
|---|---|---|
idrequis | uuid | |
namerequis | string | |
referencerequis | string | null | |
modalityrequis | "onsite" | "remote" | "hybrid" | |
locationrequis | string | null | |
statusrequis | "open" | "closed" | "sealed" | |
trainerrequis | object | |
namerequis | string | |
emailrequis | string | null | |
urlrequis | string | Espace formateur (ouverture et fermeture des créneaux, QR code) |
retention_daysrequis | integer | |
created_atrequis | string | |
closed_atrequis | date-time | null | |
sealed_atrequis | date-time | null | |
sheet_sha256requis | string | null | |
sheet_download_urlrequis | string | null | |
evidence_download_urlrequis | string | null | |
slotsrequis | object[] | |
idrequis | uuid | |
labelrequis | string | |
starts_atrequis | string | |
ends_atrequis | string | |
modulerequis | string | null | |
statusrequis | "scheduled" | "open" | "closed" | |
opened_atrequis | date-time | null | |
closed_atrequis | date-time | null | |
trainer_signed_atrequis | date-time | null | |
presentrequis | integer | |
expectedrequis | integer | |
raterequis | integer | Taux de présence, en % |
attendeesrequis | object[] | |
idrequis | uuid | |
namerequis | string | |
emailrequis | string | null | |
external_refrequis | string | null | |
sign_urlrequis | string | Lien personnel d’émargement, valable toute la session |
marksrequis | object[] | |
slot_idrequis | uuid | |
statusrequis | string | |
methodrequis | string | |
signed_atrequis | string | |
out_of_windowrequis | boolean | |
marks_countrequis | integer |
post
/api/v1/attendance-sessions/{id}/slots/{slotId}/openOuvrir un créneau
Le QR code n’existe qu’entre l’ouverture et la fermeture.
●POST /attendance-sessions/{id}/slots/{slotId}/open
curl -X POST https://preprod.signatik.com/api/v1/attendance-sessions/env_8f2c…/slots/slt_…/open \
-H "Authorization: Bearer sk_test_…"●200 — exemple de réponse
{
"id": "8f2c1d4e-0b7a-4c1e-9f0d-6a3b2c1d0e9f",
"name": "Contrat de mission n°1234",
"reference": "SESS-2026-0912",
"modality": "onsite",
"location": "Lyon, salle 3",
"status": "open",
"trainer": {
"name": "Contrat de mission n°1234",
"email": "jean.dupont@exemple.fr",
"url": "https://votre-app.fr/webhooks/esign"
},
"retention_days": 1,
"created_at": "…",
"closed_at": "2026-09-02T14:33:07Z",
"sealed_at": "2026-09-02T14:33:07Z",
"sheet_sha256": "…",
"sheet_download_url": "…",
"evidence_download_url": "…",
"slots": [
{
"id": "8f2c1d4e-0b7a-4c1e-9f0d-6a3b2c1d0e9f",
"label": "Jour 1 — matin",
"starts_at": "2026-09-15T09:00:00+02:00",
"ends_at": "2026-09-15T12:30:00+02:00",
"module": "…",
"status": "scheduled",
"opened_at": "2026-09-02T14:33:07Z",
"closed_at": "2026-09-02T14:33:07Z",
"trainer_signed_at": "2026-09-02T14:33:07Z",
"present": 1,
"expected": 1,
"rate": 1
}
],
"attendees": [
{
"id": "8f2c1d4e-0b7a-4c1e-9f0d-6a3b2c1d0e9f",
"name": "Contrat de mission n°1234",
"email": "jean.dupont@exemple.fr",
"external_ref": "STG-8891",
"sign_url": "…",
"marks": [
{
"slot_id": "8f2c1d4e-0b7a-4c1e-9f0d-6a3b2c1d0e9f",
"status": "…",
"method": "…",
"signed_at": "…",
"out_of_window": true
}
]
}
],
"marks_count": 1
}Paramètres de chemin
id | uuid | |
slotId | uuid |
Réponses
200 | OK |
401 | Clé absente, mal formée ou révoquée (unauthorized) |
403 | Scope manquant sur la clé (forbidden) |
404 | Introuvable |
409 | slot_closed |
429 | Limitation de débit (rate_limited, en-tête Retry-After) |
Réponse 200
| Champ | Type | Description |
|---|---|---|
idrequis | uuid | |
namerequis | string | |
referencerequis | string | null | |
modalityrequis | "onsite" | "remote" | "hybrid" | |
locationrequis | string | null | |
statusrequis | "open" | "closed" | "sealed" | |
trainerrequis | object | |
namerequis | string | |
emailrequis | string | null | |
urlrequis | string | Espace formateur (ouverture et fermeture des créneaux, QR code) |
retention_daysrequis | integer | |
created_atrequis | string | |
closed_atrequis | date-time | null | |
sealed_atrequis | date-time | null | |
sheet_sha256requis | string | null | |
sheet_download_urlrequis | string | null | |
evidence_download_urlrequis | string | null | |
slotsrequis | object[] | |
idrequis | uuid | |
labelrequis | string | |
starts_atrequis | string | |
ends_atrequis | string | |
modulerequis | string | null | |
statusrequis | "scheduled" | "open" | "closed" | |
opened_atrequis | date-time | null | |
closed_atrequis | date-time | null | |
trainer_signed_atrequis | date-time | null | |
presentrequis | integer | |
expectedrequis | integer | |
raterequis | integer | Taux de présence, en % |
attendeesrequis | object[] | |
idrequis | uuid | |
namerequis | string | |
emailrequis | string | null | |
external_refrequis | string | null | |
sign_urlrequis | string | Lien personnel d’émargement, valable toute la session |
marksrequis | object[] | |
slot_idrequis | uuid | |
statusrequis | string | |
methodrequis | string | |
signed_atrequis | string | |
out_of_windowrequis | boolean | |
marks_countrequis | integer |
post
/api/v1/attendance-sessions/{id}/slots/{slotId}/closeFermer un créneau
Un créneau clos ne peut plus être rempli, jamais.
●POST /attendance-sessions/{id}/slots/{slotId}/close
curl -X POST https://preprod.signatik.com/api/v1/attendance-sessions/env_8f2c…/slots/slt_…/close \
-H "Authorization: Bearer sk_test_…"●200 — exemple de réponse
{
"id": "8f2c1d4e-0b7a-4c1e-9f0d-6a3b2c1d0e9f",
"name": "Contrat de mission n°1234",
"reference": "SESS-2026-0912",
"modality": "onsite",
"location": "Lyon, salle 3",
"status": "open",
"trainer": {
"name": "Contrat de mission n°1234",
"email": "jean.dupont@exemple.fr",
"url": "https://votre-app.fr/webhooks/esign"
},
"retention_days": 1,
"created_at": "…",
"closed_at": "2026-09-02T14:33:07Z",
"sealed_at": "2026-09-02T14:33:07Z",
"sheet_sha256": "…",
"sheet_download_url": "…",
"evidence_download_url": "…",
"slots": [
{
"id": "8f2c1d4e-0b7a-4c1e-9f0d-6a3b2c1d0e9f",
"label": "Jour 1 — matin",
"starts_at": "2026-09-15T09:00:00+02:00",
"ends_at": "2026-09-15T12:30:00+02:00",
"module": "…",
"status": "scheduled",
"opened_at": "2026-09-02T14:33:07Z",
"closed_at": "2026-09-02T14:33:07Z",
"trainer_signed_at": "2026-09-02T14:33:07Z",
"present": 1,
"expected": 1,
"rate": 1
}
],
"attendees": [
{
"id": "8f2c1d4e-0b7a-4c1e-9f0d-6a3b2c1d0e9f",
"name": "Contrat de mission n°1234",
"email": "jean.dupont@exemple.fr",
"external_ref": "STG-8891",
"sign_url": "…",
"marks": [
{
"slot_id": "8f2c1d4e-0b7a-4c1e-9f0d-6a3b2c1d0e9f",
"status": "…",
"method": "…",
"signed_at": "…",
"out_of_window": true
}
]
}
],
"marks_count": 1
}Paramètres de chemin
id | uuid | |
slotId | uuid |
Réponses
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) |
Réponse 200
| Champ | Type | Description |
|---|---|---|
idrequis | uuid | |
namerequis | string | |
referencerequis | string | null | |
modalityrequis | "onsite" | "remote" | "hybrid" | |
locationrequis | string | null | |
statusrequis | "open" | "closed" | "sealed" | |
trainerrequis | object | |
namerequis | string | |
emailrequis | string | null | |
urlrequis | string | Espace formateur (ouverture et fermeture des créneaux, QR code) |
retention_daysrequis | integer | |
created_atrequis | string | |
closed_atrequis | date-time | null | |
sealed_atrequis | date-time | null | |
sheet_sha256requis | string | null | |
sheet_download_urlrequis | string | null | |
evidence_download_urlrequis | string | null | |
slotsrequis | object[] | |
idrequis | uuid | |
labelrequis | string | |
starts_atrequis | string | |
ends_atrequis | string | |
modulerequis | string | null | |
statusrequis | "scheduled" | "open" | "closed" | |
opened_atrequis | date-time | null | |
closed_atrequis | date-time | null | |
trainer_signed_atrequis | date-time | null | |
presentrequis | integer | |
expectedrequis | integer | |
raterequis | integer | Taux de présence, en % |
attendeesrequis | object[] | |
idrequis | uuid | |
namerequis | string | |
emailrequis | string | null | |
external_refrequis | string | null | |
sign_urlrequis | string | Lien personnel d’émargement, valable toute la session |
marksrequis | object[] | |
slot_idrequis | uuid | |
statusrequis | string | |
methodrequis | string | |
signed_atrequis | string | |
out_of_windowrequis | boolean | |
marks_countrequis | integer |
post
/api/v1/attendance-sessions/{id}/closeClôturer la session
Feuille générée, un seul scellement, un seul dossier de preuve, webhook attendance.session_closed. Irréversible.
●POST /attendance-sessions/{id}/close
curl -X POST https://preprod.signatik.com/api/v1/attendance-sessions/env_8f2c…/close \
-H "Authorization: Bearer sk_test_…"●200 — exemple de réponse
{
"id": "8f2c1d4e-0b7a-4c1e-9f0d-6a3b2c1d0e9f",
"name": "Contrat de mission n°1234",
"reference": "SESS-2026-0912",
"modality": "onsite",
"location": "Lyon, salle 3",
"status": "open",
"trainer": {
"name": "Contrat de mission n°1234",
"email": "jean.dupont@exemple.fr",
"url": "https://votre-app.fr/webhooks/esign"
},
"retention_days": 1,
"created_at": "…",
"closed_at": "2026-09-02T14:33:07Z",
"sealed_at": "2026-09-02T14:33:07Z",
"sheet_sha256": "…",
"sheet_download_url": "…",
"evidence_download_url": "…",
"slots": [
{
"id": "8f2c1d4e-0b7a-4c1e-9f0d-6a3b2c1d0e9f",
"label": "Jour 1 — matin",
"starts_at": "2026-09-15T09:00:00+02:00",
"ends_at": "2026-09-15T12:30:00+02:00",
"module": "…",
"status": "scheduled",
"opened_at": "2026-09-02T14:33:07Z",
"closed_at": "2026-09-02T14:33:07Z",
"trainer_signed_at": "2026-09-02T14:33:07Z",
"present": 1,
"expected": 1,
"rate": 1
}
],
"attendees": [
{
"id": "8f2c1d4e-0b7a-4c1e-9f0d-6a3b2c1d0e9f",
"name": "Contrat de mission n°1234",
"email": "jean.dupont@exemple.fr",
"external_ref": "STG-8891",
"sign_url": "…",
"marks": [
{
"slot_id": "8f2c1d4e-0b7a-4c1e-9f0d-6a3b2c1d0e9f",
"status": "…",
"method": "…",
"signed_at": "…",
"out_of_window": true
}
]
}
],
"marks_count": 1
}Paramètres de chemin
id | uuid |
Réponses
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) |
Réponse 200
| Champ | Type | Description |
|---|---|---|
idrequis | uuid | |
namerequis | string | |
referencerequis | string | null | |
modalityrequis | "onsite" | "remote" | "hybrid" | |
locationrequis | string | null | |
statusrequis | "open" | "closed" | "sealed" | |
trainerrequis | object | |
namerequis | string | |
emailrequis | string | null | |
urlrequis | string | Espace formateur (ouverture et fermeture des créneaux, QR code) |
retention_daysrequis | integer | |
created_atrequis | string | |
closed_atrequis | date-time | null | |
sealed_atrequis | date-time | null | |
sheet_sha256requis | string | null | |
sheet_download_urlrequis | string | null | |
evidence_download_urlrequis | string | null | |
slotsrequis | object[] | |
idrequis | uuid | |
labelrequis | string | |
starts_atrequis | string | |
ends_atrequis | string | |
modulerequis | string | null | |
statusrequis | "scheduled" | "open" | "closed" | |
opened_atrequis | date-time | null | |
closed_atrequis | date-time | null | |
trainer_signed_atrequis | date-time | null | |
presentrequis | integer | |
expectedrequis | integer | |
raterequis | integer | Taux de présence, en % |
attendeesrequis | object[] | |
idrequis | uuid | |
namerequis | string | |
emailrequis | string | null | |
external_refrequis | string | null | |
sign_urlrequis | string | Lien personnel d’émargement, valable toute la session |
marksrequis | object[] | |
slot_idrequis | uuid | |
statusrequis | string | |
methodrequis | string | |
signed_atrequis | string | |
out_of_windowrequis | boolean | |
marks_countrequis | integer |
get
/api/v1/attendance-sessions/{id}/sheetFeuille scellée (lien 1 h)
●GET /attendance-sessions/{id}/sheet
curl -X GET https://preprod.signatik.com/api/v1/attendance-sessions/env_8f2c…/sheet \
-H "Authorization: Bearer sk_test_…"●200 — exemple de réponse
{
"sheet_sha256": "…",
"sheet_download_url": "…",
"evidence_download_url": "…"
}Paramètres de chemin
id | uuid |
Réponses
200 | OK |
401 | Clé absente, mal formée ou révoquée (unauthorized) |
403 | Scope manquant sur la clé (forbidden) |
404 | Introuvable |
409 | Pas encore scellée |
410 | Feuille purgée (fin de rétention) |
429 | Limitation de débit (rate_limited, en-tête Retry-After) |
Réponse 200
| Champ | Type | Description |
|---|---|---|
sheet_sha256requis | string | null | |
sheet_download_urlrequis | string | |
evidence_download_urlrequis | string | null |
get
/api/v1/attendance-sessions/{id}/exportExport CSV pour le contrôle de service fait
●GET /attendance-sessions/{id}/export
curl -X GET https://preprod.signatik.com/api/v1/attendance-sessions/env_8f2c…/export \
-H "Authorization: Bearer sk_test_…"Paramètres de chemin
id | uuid |
Paramètres de requête
format | "csv" |
Réponses
200 | CSV (séparateur ;) |
401 | Clé absente, mal formée ou révoquée (unauthorized) |
403 | Scope manquant sur la clé (forbidden) |
404 | Introuvable |
429 | Limitation de débit (rate_limited, en-tête Retry-After) |