API partenaire
Lister les projets et étapes d'un client, et y créer des candidats
L'API partenaire permet à un outil tiers d'alimenter les projets de recrutement d'un client Marvin : lister ses projets ouverts et les étapes de son process, puis y créer des candidats — en un seul appel idempotent.
- Base URL :
https://api.marvins.ai - Format : JSON (
Content-Type: application/json) - Authentification : header
X-Marvin-Public-Key(voir Authentification)
Lister les projets
GET /v1/partner/projectsRenvoie les projets de recrutement ouverts du client et les étapes du process — à présenter dans vos sélecteurs « projet » et « étape ».
Réponse 200
{
"stages": [
{ "key": "sourced", "label": "Sourcé" },
{ "key": "hired", "label": "Embauché" }
],
"projects": [
{ "projectId": "8f3c…", "title": "Senior Frontend Engineer", "companyName": "Acme Corp" }
]
}curl https://api.marvins.ai/v1/partner/projects \
-H "X-Marvin-Public-Key: pk_live_…"Créer un candidat
POST /v1/partner/candidatesCrée (ou réutilise) le candidat et le rattache au projet ciblé à l'étape choisie.
Corps de la requête
| Champ | Type | Requis | Description |
|---|---|---|---|
firstName | string | oui | Prénom |
lastName | string | oui | Nom |
email | string | non * | Email (si disponible) |
phone | string | non | Téléphone (format E.164) |
linkedinUrl | string | non * | URL du profil LinkedIn — clé de déduplication |
projectId | uuid | oui | Projet cible (cf. GET /v1/partner/projects) |
stage | string | non | Étape du process ; défaut = 1ʳᵉ étape du client |
externalId | string | non | Votre identifiant interne — clé d'idempotence des rejeux |
email OU linkedinUrl est requis. Un profil LinkedIn sans email est accepté : la
déduplication se fait alors sur le profil LinkedIn.
Réponses
201— candidat créé ou rattaché :{ "personId", "processId", "created", "deduped": false }200+"deduped": true— un envoi antérieur avec le mêmeexternalIdexistait : aucune création, on renvoie les identifiants existants.created: false— profil existant réutilisé (dédup LinkedIn).
curl -X POST https://api.marvins.ai/v1/partner/candidates \
-H "X-Marvin-Public-Key: pk_live_…" \
-H "Content-Type: application/json" \
-d '{
"firstName": "Linda",
"lastName": "Kedin",
"linkedinUrl": "https://www.linkedin.com/in/linda-kedin",
"projectId": "8f3c…",
"stage": "sourced",
"externalId": "votre-id-interne-42"
}'Codes d'erreur
| Statut | Cas |
|---|---|
400 | Corps invalide (ni email ni linkedinUrl, étape inconnue) |
401 | Clé absente, malformée, inconnue ou révoquée |
403 | Scope requis manquant |
404 | projectId inexistant pour ce client |
429 | Débit dépassé |
Bonnes pratiques
- Envoyez toujours un
externalIdstable (votre identifiant interne) pour que les rejeux ne créent pas de doublon. - Récupérez
projectIdetstageviaGET /v1/partner/projectsplutôt que de les coder en dur — ils sont propres à chaque client.
Pour la liste exhaustive des champs et schémas, consultez la Référence API.