API pour partenaires ATS
Cette API permet aux partenaires ATS (Applicant Tracking Systems) d'intégrer Omogen comme service tiers pour gérer les entretiens de préqualification et de réactivation de leurs candidats. Elle fournit des endpoints pour synchroniser les offres d'emploi, créer des processus d'entretien, et des webhooks pour recevoir les rapports d'évaluation.
Télécharger la spec OpenAPI
Cette page est générée depuis une spec OpenAPI 3.0 disponible au téléchargement : 📄 JSON · 📄 YAML
Omogen automatise les entretiens téléphoniques avec les candidats via son agent conversationnel Alex, évalue leur adéquation avec les critères de sélection et génère des rapports détaillés pour aider les recruteurs dans leur prise de décision.
API en cours de construction
N'hésitez pas à contacter le support si besoin : gillian@omogen.ai.
Authentification
L'authentification se fait via deux clés distinctes :
- Une clé API Omogen transmise dans le header
Authorizationavec le format Bearer token - Une clé partenaire transmise dans le header
OM-PARTNERpour identifier le partenaire ATS
Headers requis
Authorization: Bearer <API_KEY>
OM-PARTNER: <PARTNER_KEY>Exemple
curl -X GET https://api.omogen.ai/api/v1/integration-partner/interview-params \
-H "Authorization: Bearer sk_partner_abc123xyz..." \
-H "OM-PARTNER: partner_xyz" \
-H "Content-Type: application/json"Gestion des clés
Les clés API sont générées et gérées par l'équipe Omogen. Chaque clé est liée à une organisation spécifique.
- Clé partenaire : Chaque partenaire ATS dispose d'une clé partenaire unique qui permet d'identifier l'origine des requêtes. Cette clé est fournie lors de la configuration de l'intégration.
- Clé API : Pour obtenir la clé API d'une organisation, contactez l'équipe support à support@omogen.ai.
Flows d'intégration
Omogen propose deux modes d'intégration pour synchroniser les offres d'emploi. Le choix du flow se configure dans les settings d'intégration de l'application Omogen.
Comparatif des deux flows
| Aspect | Flow 1 : Push | Flow 2 : Pull |
|---|---|---|
| Qui synchronise les jobs ? | Le partenaire ATS envoie les jobs à Omogen | Omogen récupère les jobs depuis l'ATS |
| Complexité côté partenaire | Faible (appels API sortants uniquement) | Moyenne (endpoint à implémenter) |
| Pré-requis | Aucun endpoint à développer | Endpoint de lecture des jobs requis |
| Configuration Omogen | Clés API uniquement | Clés API + URL endpoint + credentials partenaire |
Flow 1 : Push (synchronisation par le partenaire)
Le partenaire ATS synchronise les offres d'emploi avant d'envoyer les candidatures.
Flow 2 : Pull (récupération par Omogen)
Le partenaire envoie directement les candidatures. Omogen récupère automatiquement les informations de l'offre d'emploi via un endpoint exposé par le partenaire.
Configuration du Flow 2 dans Omogen
Pour activer le Flow 2 (Pull), configurez les paramètres suivants dans les settings d'intégration de l'application Omogen :
| Paramètre | Description |
|---|---|
job_fetch_url | URL template de l'endpoint partenaire. Doit contenir le placeholder {job_id}, qu'Omogen remplace par l'external_job_id au moment de l'appel (ex : https://api.partner.com/v1/jobs/{job_id}) |
job_fetch_headers | Headers statiques injectés sur chaque requête (ex : {"Authorization": "Bearer <partner_api_key>"}). Utilisé pour l'authentification standard côté partenaire. |
job_fetch_secret | Secret partagé utilisé pour signer chaque requête en HMAC-SHA256 (optionnel mais recommandé). Voir la section « Signature des requêtes » ci-dessous. |
Endpoint à implémenter (Flow 2)
Endpoint : GET <job_fetch_url> où le placeholder {job_id} est remplacé par l'external_job_id envoyé dans POST /applications.
Headers envoyés par Omogen :
<headers configurés dans job_fetch_headers>
Content-Type: application/json
OM-OMOGEN-TIMESTAMP: <unix_timestamp>
OM-OMOGEN-REQUEST: <hmac_sha256_signature>Signature des requêtes (recommandé)
Lorsque job_fetch_secret est configuré, Omogen signe chaque requête afin que le partenaire puisse vérifier l'origine de l'appel. Le partenaire doit recomposer la même signature de son côté et la comparer au header OM-OMOGEN-REQUEST.
timestamp = str(int(unix_time_seconds))
payload = f"{timestamp}.{external_job_id}"
signature = HMAC_SHA256(secret=job_fetch_secret, message=payload).hexdigest()Anti-rejeu
Le timestamp est en secondes Unix. Il est recommandé de rejeter les requêtes dont le timestamp s'écarte de plus de 5 minutes de l'heure serveur du partenaire afin de limiter les attaques par rejeu.
Réponse attendue (200 OK)
{
"job_title": "Développeur Full Stack Python/React",
"job_description": "Nous recherchons un développeur full stack expérimenté...",
"metadata": {
"department": "Engineering",
"location": "Paris",
"contract_type": "CDI"
}
}| Champ | Type | Requis | Description |
|---|---|---|---|
job_title | string | ✅ | Titre du poste |
job_description | string | ✅ | Description complète du poste (min. 100 caractères recommandé) |
metadata | object | ❌ | Champs additionnels libres (stockés comme metadata dans Omogen) |
Codes d'erreur attendus côté partenaire
| Code partenaire | Description | Code Omogen renvoyé au partenaire |
|---|---|---|
200 | Succès | Création/mise à jour de la job |
404 | Job non trouvée | 400 JOB_FETCH_NOT_FOUND |
4xx/5xx | Erreur serveur partenaire | 502 JOB_FETCH_HTTP_ERROR |
| timeout/réseau | Erreur réseau | 502 JOB_FETCH_NETWORK_ERROR |
| JSON invalide | Réponse non parsable | 502 JOB_FETCH_INVALID_RESPONSE |
200 sans job_title | Champ obligatoire manquant | 502 JOB_FETCH_MISSING_TITLE |
Référence des endpoints
La section suivante est générée automatiquement à partir de la spécification OpenAPI openapi-partenaires.yaml.
Get Interview Params
Get Interview Params
Récupère les paramètres de configuration disponibles pour les entretiens.
Permet aux utilisateurs de choisir d'activer Omogen et de sélectionner un mode de déploiement.
⚠️ Les paramètres exacts peuvent être personnalisés pour améliorer l'expérience utilisateur dans l'ATS.
Authorizations
Clé API Omogen envoyée dans le header Authorization: Bearer <API_KEY>. Fournie par le support Omogen.
Clé partenaire unique envoyée dans le header OM-PARTNER: <PARTNER_KEY>. Identifie l'ATS source.
Parameters
Query Parameters
Code langue des libellés retournés
"fr""en""fr"Responses
Paramètres récupérés avec succès
Sync a Job Offer
Sync a Job Offer
Synchronise une offre d'emploi dans Omogen. Le endpoint retourne immédiatement
(201 Created) avec l'id de la job et un edit_url. L'extraction des critères
de sélection et la génération du plan d'entretien se font de manière asynchrone
en arrière-plan.
ℹ️ Cet endpoint est utilisé uniquement dans le Flow 1 (Push). Dans le Flow 2,
les jobs sont créées automatiquement lors de la réception d'une candidature.
Idempotence : si external_job_id est fourni et qu'une job avec cet identifiant
existe déjà pour l'organisation, l'endpoint retourne 200 OK au lieu de 201 et
ne recrée pas la job.
Authorizations
Clé API Omogen envoyée dans le header Authorization: Bearer <API_KEY>. Fournie par le support Omogen.
Clé partenaire unique envoyée dans le header OM-PARTNER: <PARTNER_KEY>. Identifie l'ATS source.
Request Body
Responses
Job déjà existante (idempotence sur external_job_id)
Sync an Application
Sync an Application (Create Interview Process)
Crée ou met à jour un candidat et crée un processus d'entretien (process) pour celui-ci.
Le candidat sera contacté selon le mode de déploiement spécifié.
Comportement selon le flow
- Flow 1 (Push) : l'
external_job_iddoit correspondre à une job déjà synchronisée viaPOST /jobs. - Flow 2 (Pull) : Omogen récupère automatiquement les infos de l'offre via l'endpoint du partenaire.
- Mode triage : si aucun
external_job_idn'est fourni et que le mode triage est activé, Omogen
utilise le CV pour déterminer automatiquement la job cible.
Pour un appel à cet endpoint qui n'inclut que le CV (sans données candidat),
utiliser plutôt POST /applications/cv-only.
Authorizations
Clé API Omogen envoyée dans le header Authorization: Bearer <API_KEY>. Fournie par le support Omogen.
Clé partenaire unique envoyée dans le header OM-PARTNER: <PARTNER_KEY>. Identifie l'ATS source.
Request Body
Responses
Application déjà existante (idempotence)
Sync a CV-only Application
Sync an Application from CV only
Crée un processus d'entretien à partir d'un CV seul. Omogen extrait automatiquement
les informations candidat (nom, prénom, email, téléphone) depuis le CV via un service
d'extraction. Si l'extraction échoue pour certains champs, les valeurs de secours
fournies dans la requête sont utilisées.
Format de la requête : multipart/form-data ou application/json.
Le CV peut être fourni soit en base64 via cv_file, soit via une URL publique via
cv_url. L'un des deux est obligatoire.
Extensions supportées : .pdf, .doc, .docx, .txt, .rtf.
Authorizations
Clé API Omogen envoyée dans le header Authorization: Bearer <API_KEY>. Fournie par le support Omogen.
Clé partenaire unique envoyée dans le header OM-PARTNER: <PARTNER_KEY>. Identifie l'ATS source.
Request Body
Contenu du CV encodé en base64. Exclusif avec cv_url — au moins l'un des deux est requis.
"byte"URL publique vers le CV. Exclusif avec cv_file — au moins l'un des deux est requis.
"uri"Nom du fichier avec extension (.pdf, .doc, .docx, .txt, .rtf)
Prénom de secours si l'extraction depuis le CV échoue
Nom de secours si l'extraction depuis le CV échoue
Email de secours si l'extraction depuis le CV échoue
"email"Téléphone de secours si l'extraction depuis le CV échoue
ID de l'offre dans le système partenaire. Optionnel si mode triage.
"prequalification""reactivation""prequalification"Responses
Application déjà existante (idempotence)
Codes d'erreur
Tous les endpoints retournent un payload d'erreur au format ErrorResponse :
{
"success": false,
"error": "Message lisible",
"code": "MACHINE_READABLE_CODE"
}Le endpoint POST /applications/cv-only peut aussi retourner un champ details avec des informations de diagnostic (URL, status HTTP, raison technique).
Codes transversaux
| Code | Statut HTTP | Description |
|---|---|---|
AUTHENTICATION_FAILED | 401 | Clé API invalide ou absente, partenaire non reconnu |
INVALID_PAYLOAD | 400 | Payload mal formé (champs manquants, format invalide) |
VALIDATION_ERROR | 400 | Erreur de validation métier générique |
INTERNAL_ERROR | 500 | Erreur serveur inattendue |
Codes spécifiques à POST /applications
| Code | Statut HTTP | Description |
|---|---|---|
JOB_FETCH_NOT_FOUND | 400 | Pull flow — l'ATS partenaire a retourné 404 pour l'external_job_id |
PULL_FLOW_CONFIG_ERROR | 400 | Pull flow — job_fetch_url mal configuré (placeholder {job_id} manquant) |
CV_DOWNLOAD_FAILED | 400 | Échec du téléchargement du CV depuis cv_url |
JOB_FETCH_NETWORK_ERROR | 502 | Pull flow — erreur réseau en contactant l'ATS partenaire |
JOB_FETCH_HTTP_ERROR | 502 | Pull flow — l'ATS partenaire a retourné un statut 4xx/5xx |
JOB_FETCH_INVALID_RESPONSE | 502 | Pull flow — réponse non parsable (JSON invalide) |
JOB_FETCH_MISSING_TITLE | 502 | Pull flow — la réponse ne contient pas job_title |
Codes spécifiques à POST /applications/cv-only
| Code | Statut HTTP | Description |
|---|---|---|
CV_DOWNLOAD_FAILED | 400 | Échec du téléchargement du CV (cv_url injoignable ou cv_file base64 invalide) |
CV_INVALID_INPUT | 400 | Le contenu du CV n'est pas un document valide |
CV_EXTRACTION_FAILED | 400 | Échec du parsing du CV (format non reconnu, contenu illisible) |
CV_PROCESSING_ERROR | 400 | Erreur interne pendant l'extraction |
CV_EXTRACTION_UNEXPECTED_ERROR | 400 | Erreur inattendue pendant l'extraction |
Webhooks
Les webhooks sont envoyés par Omogen vers un endpoint HTTP configuré côté partenaire. Le partenaire doit répondre avec un statut 2xx pour acquitter la réception.
Configuration
Pour configurer l'URL du webhook et les headers d'authentification, contactez l'équipe support Omogen à support@omogen.ai.
Paramètres configurables par organisation :
| Paramètre | Description |
|---|---|
| URL de webhook | Endpoint HTTP à appeler (utilisé pour report_generated et process_rejected) |
| Méthode HTTP | POST (défaut) ou PUT |
| Headers custom | Headers d'authentification fournis par le partenaire (ex : x-api-key, Authorization) |
URL call_booked (optionnel) | Endpoint dédié aux événements call_booked (si séparé de l'URL principale) |
Timeout : 30 secondes. Aucun retry automatique — si l'endpoint partenaire échoue, le webhook est perdu (mais l'incident est loggé côté Omogen).
report_generated
Envoyé lorsqu'un processus atteint un état terminal. C'est l'événement principal à implémenter côté partenaire.
Webhook - Report Generated
Webhook envoyé par Omogen lorsqu'un processus atteint un état terminal
(completed, failed, expired, canceled, incomplete). C'est l'événement
principal à implémenter côté partenaire.
À implémenter côté partenaire : un endpoint HTTP qui accepte ce payload
et répond avec un statut 2xx. L'URL de destination, la méthode (POST ou PUT)
et les headers d'authentification sont configurés dans Omogen.
Request Body
Responses
Webhook reçu (le partenaire doit répondre 2xx)
Quand le webhook est-il envoyé ?
| Statut du processus | interview_report présent ? | Quand ? |
|---|---|---|
completed | Oui (complet) | Après génération du rapport, tous critères évalués |
incomplete | Oui (partiel) | Après génération du rapport, certains critères manquants |
failed | Non (null) | Échec technique, raccrochage précoce, tentatives épuisées |
expired | Non (null) | Processus expiré (délai dépassé) |
canceled | Non (null) | Processus annulé manuellement |
INFO
Il est possible (rare) qu'un candidat rappelle après qu'un état terminal a été atteint. Dans ce cas, le processus repasse en in_progress, un nouvel entretien se déroule et un nouveau webhook est envoyé. Il est donc recommandé de toujours traiter les webhooks reçus, même si vous avez déjà reçu un état terminal pour ce process_id.
Tags d'appel
Liste de signaux détectés automatiquement lors de l'analyse de la conversation. La liste est vide ([]) si aucun signal n'a été détecté.
| Tag | Description |
|---|---|
early_hang_up | Le candidat a raccroché avant que des informations utiles aient pu être collectées |
prefers_recruiter | Le candidat a demandé à parler à un recruteur humain |
not_interested | Le candidat a explicitement indiqué ne pas être intéressé par le poste |
not_available | Le candidat a indiqué ne pas être disponible pour l'appel |
to_review | La conversation est incohérente et nécessite une vérification manuelle |
Codes de failure_reason
| Code | Description |
|---|---|
cv_required | CV requis mais non fourni |
cv_screening_failed | Le screening CV a échoué (erreur technique) |
cv_requirements_not_configured | Aucun critère CV configuré pour cette offre |
technical_error | Erreur technique interne |
all_attempts_failed | Toutes les tentatives d'appel ont échoué (non-réponse) |
early_hang_up | Le candidat a raccroché trop tôt pour collecter des informations |
call_booked
Envoyé lorsqu'un candidat a réservé un créneau d'appel via auto-planification (SMS ou email). Activé uniquement si la fonctionnalité est configurée pour l'organisation.
Webhook - Call Booked
Webhook envoyé par Omogen lorsqu'un candidat a réservé un rendez-vous
d'appel (auto-planification via SMS ou email). Activé uniquement si la
fonctionnalité est configurée pour l'organisation.
Request Body
Responses
Webhook reçu (le partenaire doit répondre 2xx)
process_rejected
Envoyé lorsqu'un candidat est rejeté avant la création d'un processus (échec de l'eligibility check, triage rejeté). Aucun appel n'est passé, aucun rapport n'est généré.
Webhook - Process Rejected
Webhook envoyé par Omogen lorsqu'un candidat est rejeté avant même la
création d'un processus (échec de l'eligibility check, job inéligible, etc.).
Utile pour informer l'ATS que la candidature ne sera pas traitée.
Contrairement à report-generated, aucun processus n'est créé — le champ
process_id peut être null.
Request Body
Responses
Webhook reçu (le partenaire doit répondre 2xx)
Statuts et fonctionnement
Statuts de processus
in_progress: Le processus est en cours d'exécution (appels, SMS, etc.)active: Le processus est actif et attend une action (ex : invitation SMS en attente de réservation)completed: Le processus est terminé avec succèsincomplete: Le processus n'a pas pu être complété (par ex. aucun appel n'a abouti)failed: Le processus a échoué (erreur technique, problème de connexion)expired: Le processus a expiré (délai dépassé)canceled: Le processus a été annulé manuellement
Statuts de rapport d'entretien
match: Le candidat correspond aux critères de sélectionno_match: Le candidat ne correspond pas aux critères de sélectionna: L'entretien n'a pas permis de déterminer le statut du candidat
Le rapport d'entretien inclut également :
report_status:in_progress,completed, oufailedoverall_score: Score global entre 0 et 1 (1 = parfait match)is_complete: Indique si le rapport est complet (tous les critères évalués)
Statuts de rapport CV
match: Le CV correspond aux critères (score >= seuil de matching)no_match: Le CV ne correspond pas aux critères (score < seuil de matching)
Comportement important
Si le rapport CV indique no_match, le processus s'arrête automatiquement avec le statut completed et aucun rapport d'entretien n'est généré. Cela permet d'économiser des crédits en évitant d'appeler des candidats qui ne correspondent pas aux critères de base.
Fonctionnement d'Omogen
Notes importantes
Validation des données
phone: accepte les formats internationaux (+33…) et nationaux (06…) — normalisé en E.164email: validation stricte du format emailcv_filename(CV-only) : extensions acceptées.pdf,.doc,.docx,.txt,.rtf
Modes de déploiement
| Mode | Description |
|---|---|
single-call | Un appel immédiat |
sms-then-call | Envoi d'un SMS puis appel 5 minutes plus tard |
sms-invitation | Envoi d'un SMS avec lien d'invitation pour auto-planification |
email-invitation | Envoi d'un email avec lien d'invitation pour auto-planification |
3-days | Tentatives réparties sur 3 jours |
reactivation | Appel → SMS (2 min) → Appel (1 heure) → Appel (le lendemain, 13h) |
Support et contact
Pour toute question sur l'API ou pour obtenir une clé API :
- Email : gillian@omogen.ai