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

Adressehttps://okturn.com/api/v1
AuthentificationEn-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.
FormatJSON 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.
Limite600 requêtes par heure et par clé. Les en-têtes X-RateLimit-Limit et X-RateLimit-Remaining vous indiquent où vous en êtes.
ErreursToujours { "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'étapeconfirm (simple validation), text (réponse écrite), photo, email et sms (prévenir quelqu'un).
ÉtatsLancement : 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.

Exemple
curl https://okturn.com/api/v1/me \
  -H "Authorization: Bearer ok_live_…"
Réponse
{ "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.

Exemple
curl https://okturn.com/api/v1/processes \
  -H "Authorization: Bearer ok_live_…"
Réponse
{ "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.

Exemple
curl https://okturn.com/api/v1/processes/12 \
  -H "Authorization: Bearer ok_live_…"
Réponse
{ "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.

Exemple
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"}'
Réponse
{ "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).

Exemple
curl "https://okturn.com/api/v1/runs?status=in_progress" \
  -H "Authorization: Bearer ok_live_…"
Réponse
{ "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…).

Exemple
curl https://okturn.com/api/v1/runs/87 \
  -H "Authorization: Bearer ok_live_…"
Réponse
{ "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.

Exemple
curl https://okturn.com/api/v1/contacts \
  -H "Authorization: Bearer ok_live_…"
Réponse
{ "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.

Exemple
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"}'
Réponse
{ "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.