API Okturn
Lancez vos process et suivez-les depuis vos propres outils : CRM, tableur, Zapier, Make, ou votre application.
Incluse dans les offres Pro et Business. Vos clés se créent dans Paramètres › API.
Les bases
| Adresse | https://okturn.com/api/v1 |
|---|---|
| Authentification | En-tête Authorization: Bearer ok_live_… sur chaque requête. La clé est affichée une seule fois à sa création ; révoquez-la si elle fuit. |
| Format | JSON en entrée (Content-Type: application/json) et en sortie, en UTF-8. Les dates sont à l'heure de Paris, au format AAAA-MM-JJ HH:MM:SS. |
| Limite | 600 requêtes par heure et par clé. Les en-têtes X-RateLimit-Limit et X-RateLimit-Remaining vous indiquent où vous en êtes. |
| Erreurs | Toujours { "error": { "code", "message", "message_fr" } } avec le code HTTP adapté : 401 clé absente ou invalide, 403 offre sans API, 404 introuvable, 422 données invalides, 429 limite dépassée. |
| Types d'étape | confirm (simple validation), text (réponse écrite), photo, email et sms (prévenir quelqu'un). |
| États | Lancement : in_progress, completed, cancelled, blocked. Étape : pending, in_progress, completed, blocked, cancelled_by_other. |
GET /api/v1/me
Votre espace, votre offre et vos limites.
curl https://okturn.com/api/v1/me \ -H "Authorization: Bearer ok_live_…"
{ "workspace": { "id": 12, "name": "Mon espace" }, "plan": { "code": "pro", "name": "Pro", "limits": { … } }, "rate_limit": { "per_hour": 600 } }
GET /api/v1/processes
Vos process (non archivés) avec leurs étapes.
curl https://okturn.com/api/v1/processes \ -H "Authorization: Bearer ok_live_…"
{ "data": [ { "id": 12, "name": "Collecte des factures", "steps": [ { "position": 1, "title": "Envoyer la facture", "kind": "photo", "assigned_contact": { "id": 3, "firstname": "Alice", "email": "alice@exemple.fr" } } ] } ], "count": 1 }
GET /api/v1/processes/{id}
Un process et ses étapes.
curl https://okturn.com/api/v1/processes/12 \ -H "Authorization: Bearer ok_live_…"
{ "data": { "id": 12, "name": "Collecte des factures", "steps": [ … ] } }
POST /api/v1/processes/{id}/launch
Lance le process : la première personne reçoit aussitôt son lien par e-mail ou SMS, exactement comme depuis l'interface. Le nom est facultatif.
curl -X POST https://okturn.com/api/v1/processes/12/launch \
-H "Authorization: Bearer ok_live_…" \
-H "Content-Type: application/json" \
-d '{"name": "Dossier Dupont"}'
{ "data": { "id": 87, "name": "Dossier Dupont", "status": "in_progress", "steps": [ { "position": 1, "status": "in_progress", "link": "https://okturn.com/etape/…" }, … ] } }
GET /api/v1/runs
Vos lancements, du plus récent au plus ancien. Filtre facultatif : ?status=in_progress|completed|cancelled|blocked, ?limit=50 (max 200).
curl "https://okturn.com/api/v1/runs?status=in_progress" \ -H "Authorization: Bearer ok_live_…"
{ "data": [ { "id": 87, "name": "Dossier Dupont", "status": "in_progress", "process_id": 12, "launched_at": "2026-10-01 21:04:12", "completed_at": null } ], "count": 1 }
GET /api/v1/runs/{id}
Le détail d'un lancement : chaque étape, son état, la personne, le lien tant qu'elle est ouverte, et les réponses validées (texte, photo…).
curl https://okturn.com/api/v1/runs/87 \ -H "Authorization: Bearer ok_live_…"
{ "data": { "id": 87, "status": "completed", "steps": [ { "position": 1, "title": "Envoyer la facture", "kind": "photo", "status": "completed", "completed_at": "2026-10-01 21:10:02", "data": { "photo": "https://okturn.com/uploads/steps/…jpg" } } ] } }
GET /api/v1/contacts
Vos contacts.
curl https://okturn.com/api/v1/contacts \ -H "Authorization: Bearer ok_live_…"
{ "data": [ { "id": 3, "firstname": "Alice", "lastname": "Martin", "email": "alice@exemple.fr", "phone": "+33612345678" } ], "count": 1 }
POST /api/v1/contacts
Crée un contact. Au moins un nom ou un e-mail. L'e-mail doit être unique dans votre espace.
curl -X POST https://okturn.com/api/v1/contacts \
-H "Authorization: Bearer ok_live_…" \
-H "Content-Type: application/json" \
-d '{"firstname": "Alice", "lastname": "Martin", "email": "alice@exemple.fr", "phone": "+33612345678"}'
{ "data": { "id": 3, "firstname": "Alice", "lastname": "Martin", "email": "alice@exemple.fr", "phone": "+33612345678", "created_at": "2026-10-01 21:00:00" } }
Exemple d'erreur
HTTP/2 401
{ "error": { "code": "unauthorized", "message": "Invalid API key.", "message_fr": "Clé API invalide." } }
Une question ? Écrivez-nous, on répond vite.