Documentation

L'API Sowell

Lisez vos recrues et vos missions depuis vos propres outils. Une clé, deux points d'entrée, et des webhooks qui vous préviennent quand quelque chose bouge.

Lecture seule Authentification par clé Incluse dans l'offre Scale
Prise en main

Trois minutes pour le premier appel

  1. Créez une clé dans votre espace, onglet Réglages, section Clés API. Elle ne s'affiche qu'une fois : conservez-la.
  2. Notez l'adresse de votre espace. Les exemples ci-dessous utilisent https://app.sowellapp.fr/api ; si votre espace a son propre sous-domaine, utilisez-le.
  3. Vérifiez la clé avec l'appel ci-dessous. Une réponse valid confirme que tout est en place.
curl -H "Authorization: Bearer VOTRE_CLE" \
     https://app.sowellapp.fr/api/v1/verify
Authentification

Une clé, un espace

Chaque appel porte l'en-tête Authorization: Bearer <clé>. La clé appartient à un espace et ne donne accès qu'à lui : elle ne peut pas lire les données d'un autre client, même en visant une autre adresse.

Traitez la clé comme un mot de passe. Elle se révoque à tout moment depuis les Réglages, et l'application journalise sa dernière utilisation, ce qui permet de repérer une clé oubliée.
Conventions

Pagination, dates, erreurs

Pagination par curseur

Les listes renvoient au plus 50 éléments par défaut et 200 au maximum (limit). Quand une suite existe, la réponse porte un next_cursor : passez-le en cursor pour la page suivante. Quand il vaut null, vous avez tout lu.

# première page
curl -H "Authorization: Bearer VOTRE_CLE" \
     "https://app.sowellapp.fr/api/v1/candidates?limit=50"

# page suivante, avec le curseur renvoyé
curl -H "Authorization: Bearer VOTRE_CLE" \
     "https://app.sowellapp.fr/api/v1/candidates?limit=50&cursor=665f1c2a9b1e4a0012ab34cd"

Le curseur est préféré au décalage parce qu'un décalage devient instable dès qu'une donnée est créée pendant votre parcours : des éléments seraient sautés ou lus deux fois.

Dates

Toutes les dates sortent au format ISO 8601. Une date absente vaut null, jamais une chaîne vide.

Erreurs

CodeSensCas
400Requête invalideCurseur mal formé, ou paramètre hors bornes.
401Non authentifiéEn-tête absent, clé inconnue ou révoquée.
404Module absentL'espace n'a pas le module concerné par la route.
429Trop de requêtesLimite de débit atteinte. Réessayez après la fenêtre.
Référence

Les points d'entrée

L'API est en lecture seule. Aucune clé ne permet d'écrire, de modifier ni de supprimer quoi que ce soit.

GET/api/v1/candidates

Les personnes suivies dans votre espace, hors archivées.

ParamètreDéfautRôle
limit50Nombre d'éléments, 200 au maximum.
cursorCurseur renvoyé par l'appel précédent.

Champs renvoyés

ChampDescription
idIdentifiant Sowell
nomNom complet
emailAdresse e-mail
posteIntitulé du poste
serviceService de rattachement
siteSite ou établissement
statutStatut courant
date_arriveeDate d'arrivée, au format ISO
sourceOutil d'origine (ATS, outil de gestion, ou « manual »)
identitesIdentifiants de la personne dans chaque outil branché
GET/api/v1/missions

Les missions de votre espace. Réservée aux espaces dotés du module Missions.

ParamètreDéfautRôle
limit50Nombre d'éléments, 200 au maximum.
cursorCurseur renvoyé par l'appel précédent.

Champs renvoyés

ChampDescription
idIdentifiant Sowell
candidate_idIdentifiant de la personne placée
client_finalClient chez qui la personne est placée
posteIntitulé du poste
date_debutDébut de mission, au format ISO
date_finFin de mission, au format ISO, vide si indéterminée
statutStatut courant
manager_client_nomInterlocuteur côté client
business_managerResponsable commercial du placement
sourceOutil d'origine (ATS, outil de gestion, ou « manual »)
external_idIdentifiant de la mission dans l'outil d'origine
GET/api/v1/verify

Vérifie qu'une clé est valide. À appeler une fois pour contrôler votre configuration.

Webhooks

Être prévenu, plutôt qu'interroger

Plutôt que d'appeler l'API en boucle, déclarez une adresse dans vos Réglages et Sowell vous y envoie les événements en temps réel. C'est ce qui rend Zapier, Make ou n8n réellement utilisables.

ÉvénementNomDéclenchement
recrue.creeeRecrue crééeUne recrue vient d'être ajoutée (manuellement ou via la synchronisation ATS).
recrue.mise_a_jourRecrue mise à jourLes informations d'une recrue ont changé (statut, poste, date d'arrivée…).
etape.completeeÉtape complétéeUne étape du parcours d'intégration vient d'être cochée.
retard.detecteRetard détectéUne étape d'intégration a dépassé son échéance.
satisfaction.recueSatisfaction reçueUne recrue vient de répondre à l'enquête de satisfaction.
pingTest (ping)Événement de test, envoyé depuis la console pour vérifier votre endpoint.

Signature

Chaque envoi porte un en-tête de signature au schéma t=<horodatage>,v1=<HMAC-SHA256>, calculé sur l'horodatage et le corps avec le secret de votre webhook. Vérifiez-la avant de traiter un message : c'est ce qui prouve qu'il vient bien de Sowell, et l'horodatage protège du rejeu.

Réessais

Une livraison en échec est retentée 4 fois, avec des attentes croissantes de 0, 2, 10, 30 secondes, puis abandonnée. Chaque tentative est journalisée, les 200 dernières livraisons de chaque webhook restent consultables, et vous pouvez rejouer une livraison depuis les Réglages. Le délai d'attente d'une requête est de 8 secondes.

Répondez vite, traitez ensuite. Renvoyez un code 2xx dès réception et faites votre traitement de votre côté : un traitement long dans la réponse finit en délai dépassé, donc en réessai inutile.
Limites

Ce que l'API accepte

RouteRequêtesFenêtre
/api/v1/candidates12060 s
/api/v1/missions12060 s

Au-delà, l'API répond 429. Ces limites protègent votre espace : une clé qui fuiterait ne permettrait pas d'en aspirer le contenu en quelques secondes.

Une question sur l'API ?