Documentation partenaire

Guide d'intégration API

Tout ce qu'il faut savoir pour intégrer le moteur de matching JobZen.io dans votre plateforme — endpoints, exemples, tarifs et confidentialité.

Cas d'usage

L'API JobZen.io s'adapte à votre contexte, quelle que soit votre plateforme.

🏢

Plateformes ATS

Intégrez le scoring CV ↔ offre directement dans votre workflow de recrutement. Priorisez automatiquement les candidats sans changer votre interface.

📋

Jobboards & agrégateurs

Proposez des offres personnalisées à chaque candidat grâce à un moteur de recommandation multilingue. Score explicable inclus.

📊

Outils RH & HRIS

Scoring de mobilité interne, matching formation-profil, analyse de CV en masse — tout via une seule API unifiée.

🤝

Partenaires institutionnels

Agences pour l'emploi, organismes de formation : onboardez vos candidats via lien d'invitation, recevez des notifications webhook à chaque changement de statut et bénéficiez du fast path API pour vos candidats inscrits.

Référence des endpoints

Tous les endpoints sont préfixés par /api/v1/. Authentification via le header X-JobZen.io-Key.

POST/api/v1/matchScore de compatibilité CV ↔ offres. Accepte PDF base64, URL HTTPS ou texte brut. Retourne un score 0–100 par offre.basic+
POST/api/v1/analyzeExtraction de profil depuis un CV : compétences, postes, langues, fourchette salariale, secteurs.standard+
POST/api/v1/scoreScore détaillé profil ↔ poste avec forces, gaps et recommandation structurée (strong_match / match_with_gaps…).basic+
POST/api/v1/coachConseils de coaching CV personnalisés pour un poste cible. Premium uniquement.premium+
GET/api/v1/statusQuota consommé, quota total, date de reset. Latence quasi-nulle, sans appel LLM.basic+
GET/api/v1/usageHistorique d'utilisation jour par jour avec filtres de date.basic+
GET/api/v1/candidates/{ref}/profileProfil stocké d'un candidat lié. has_profile=true = prêt pour appels sans CV via candidate_ref.basic+

Toutes les requêtes nécessitent le header HTTP X-JobZen.io-Key. Clé sandbox préfixée SBX_ — aucun frais pendant la phase de test.

Exemples de requêtes

Prêts à copier-coller. Remplacez SBX_your_key par votre clé sandbox.

basic+Matcher un CV avec plusieurs offres

curl -X POST https://api.jobzen.io/api/v1/match \
  -H "X-JobZen-Key: SBX_your_key" \
  -H "Content-Type: application/json" \
  -d '{
    "cv_text": "Alice Martin, 5 ans Python, FastAPI, PostgreSQL...",
    "job_listings": [
      { "job_id": "job_001", "title": "Backend Engineer", "description": "Python, FastAPI, PostgreSQL requis..." },
      { "job_id": "job_002", "title": "Data Engineer", "description": "Python, Spark, Airflow..." }
    ],
    "options": { "explain": true }
  }'

// Response
{
  "cv_input_used": "cv_text",
  "matches": [
    {
      "job_id": "job_001",
      "title": "Backend Engineer",
      "score": 87,
      "strengths": ["Python expert", "FastAPI production experience"],
      "gaps": ["No Kubernetes experience"]
    },
    {
      "job_id": "job_002",
      "title": "Data Engineer",
      "score": 64,
      "strengths": ["Python"],
      "gaps": ["Spark", "Airflow"]
    }
  ],
  "usage": { "tokens": 312, "latency_ms": 340 }
}

basic+RecommandéAppel rapide avec profil stocké (recommandé pour vos candidats inscrits)

# 1. Check that the candidate's profile is ready
curl https://api.jobzen.io/api/v1/candidates/YOUR_CANDIDATE_ID/profile \
  -H "X-JobZen-Key: your_key"

// Response when ready
{
  "ref": "YOUR_CANDIDATE_ID",
  "active": true,
  "has_profile": true,
  "linked_at": "2026-03-30T10:00:00Z",
  "profile": {
    "skills": ["Python", "FastAPI", "React"],
    "relevant_job_titles": ["Développeur Full Stack"],
    "profile_summary": "..."
  }
}

# 2. Call /match without re-sending the CV — ~40x faster
curl -X POST https://api.jobzen.io/api/v1/match \
  -H "X-JobZen-Key: your_key" \
  -H "Content-Type: application/json" \
  -d '{
    "candidate_ref": "YOUR_CANDIDATE_ID",
    "job_listings": [
      { "job_id": "job_001", "title": "Backend Engineer", "description": "Python, FastAPI..." }
    ]
  }'

// cv_input_used = "stored_profile" confirms the fast path was used
// tokens: 0 = no LLM extraction cost
{
  "cv_input_used": "stored_profile",
  "matches": [{ "job_id": "job_001", "score": 87 }],
  "usage": { "tokens": 0, "latency_ms": 82 }
}

standard+Analyser un CV (extraction de profil)

curl -X POST https://api.jobzen.io/api/v1/analyze \
  -H "X-JobZen-Key: SBX_your_key" \
  -H "Content-Type: application/json" \
  -d '{
    "cv_pdf_base64": "<base64_encoded_pdf>",
    "candidate_ref": "cand_42"
  }'

// Response
{
  "cv_input_used": "cv_pdf_base64",
  "candidate_ref": "cand_42",
  "profile": {
    "skills": ["Python", "FastAPI", "PostgreSQL", "Docker"],
    "positions": ["Backend Engineer", "Senior Python Developer"],
    "languages": ["fr", "en"],
    "salary_range": { "min": 45000, "max": 65000, "currency": "EUR" },
    "sectors": ["tech", "saas"],
    "profile_summary": "Senior backend engineer with 7 years of experience in Python and cloud-native stacks."
  },
  "usage": { "tokens": 680, "latency_ms": 1840 }
}

standard+Scorer un profil contre un poste

curl -X POST https://api.jobzen.io/api/v1/score \
  -H "X-JobZen-Key: SBX_your_key" \
  -H "Content-Type: application/json" \
  -d '{
    "profile_json": { "skills": ["Python", "FastAPI"], "positions": ["Backend Engineer"] },
    "job": {
      "title": "Lead Backend Engineer",
      "description": "Python 5y+, Kubernetes, architecture microservices...",
      "requirements": "Python expert, Kubernetes, CI/CD"
    },
    "options": { "structured": true }
  }'

// Response
{
  "score": 74,
  "strengths": ["Python expert (5y)", "FastAPI production experience"],
  "gaps": ["No Kubernetes experience", "Missing CI/CD detail"],
  "recommendation": "match_with_gaps",
  "usage": { "tokens": 210, "latency_ms": 1420 }
}

basic+RecommandéScore rapide avec profil stocké (recommandé pour vos candidats inscrits)

# Score with stored profile — no CV re-upload needed
curl -X POST https://api.jobzen.io/api/v1/score \
  -H "X-JobZen-Key: your_key" \
  -H "Content-Type: application/json" \
  -d '{
    "candidate_ref": "YOUR_CANDIDATE_ID",
    "job": {
      "title": "Lead Backend Engineer",
      "description": "Python 5y+, Kubernetes, architecture microservices...",
      "requirements": "Python expert, Kubernetes, CI/CD"
    },
    "options": { "structured": true }
  }'

// profile resolved from platform via candidate_ref — no CV re-upload needed
// no CV extraction LLM cost; scoring LLM still applies
{
  "score": 74,
  "strengths": ["Python expert (5y)", "FastAPI production experience"],
  "gaps": ["No Kubernetes experience", "Missing CI/CD detail"],
  "recommendation": "match_with_gaps",
  "usage": { "tokens": 210, "latency_ms": 76 }
}

premium+Coaching CV personnalisé (suggestions d'amélioration)

curl -X POST https://api.jobzen.io/api/v1/coach \
  -H "X-JobZen-Key: your_key" \
  -H "Content-Type: application/json" \
  -d '{
    "cv_text": "Junior Developer, 2 ans, JavaScript, React, HTML/CSS. Agence web.",
    "job": {
      "title": "Full-Stack Engineer",
      "description": "Startup SaaS B2B — React, Node.js, PostgreSQL, CI/CD.",
      "requirements": "2+ ans, Node.js, React, PostgreSQL, REST API, tests unitaires"
    },
    "candidate_ref": "dev-junior-001"
  }'

// Response
{
  "cv_input_used": "cv_text",
  "candidate_ref": "dev-junior-001",
  "suggestions": [
    {
      "category": "skills",
      "priority": "high",
      "suggestion": "Add Node.js and PostgreSQL — they are explicitly required and currently absent.",
      "rationale": "ATS will filter out the CV before a human sees it."
    },
    {
      "category": "experience",
      "priority": "medium",
      "suggestion": "Quantify one agency project: stack, team size, and outcome.",
      "rationale": "Startups compare candidates on impact, not just tools."
    },
    {
      "category": "presentation",
      "priority": "low",
      "suggestion": "Reframe 'Web Agency' as 'client SaaS products' if applicable.",
      "rationale": "SaaS B2B context is closer to the target role's environment."
    }
  ],
  "keywords_to_add": ["Node.js", "PostgreSQL", "REST API", "CI/CD", "unit tests"],
  "cv_sections": [
    {
      "section": "summary",
      "issue": "Too generic — no backend or full-stack signal.",
      "rewrite": "Full-stack developer (React + Node.js) with 2 years building web products. Eager to join a product-focused SaaS team."
    },
    {
      "section": "skills",
      "issue": "Missing backend technologies required by the role.",
      "rewrite": "Add: Node.js, PostgreSQL, REST APIs. Prioritise tech skills over tools (Figma, Trello)."
    }
  ],
  "ats_fit": {
    "score": 48,
    "blockers": ["Missing: Node.js", "Missing: PostgreSQL", "No CI/CD mention"]
  },
  "usage": { "tokens": 680, "latency_ms": 3200 }
}

Accepte aussi comme source CV : cv_pdf_base64, cv_url, profile_json ou candidate_ref.

Confidentialité & RGPD

🚫

Aucune donnée stockée

Les payloads CV et offres sont traités en mémoire et supprimés à la fin de chaque requête. Aucun CV n'est jamais persisté.

🇪🇺

Infrastructure européenne

Hébergement en UE. Données chiffrées en transit (TLS 1.3) et au repos (AES-256). Sous-traitants conformes RGPD, listés sur /legal/sub-processors.

🗑️

Suppression sur demande

Les logs d'utilisation ne contiennent que des métadonnées (timestamps, codes HTTP). Suppression complète disponible sur demande.

🔑

Isolation par clé API

Chaque partenaire dispose d'une clé unique isolée. Rotation sécurisée disponible à tout moment dans le portail.

Fonctionnalités du portail

Gérez votre intégration en toute autonomie depuis le portail partenaire.

📈

Suivi des quotas

Graphique d'utilisation 30 jours, compteur de quota mensuel et date de reset.

🔄

Rotation de clé

Rotation sécurisée immédiate ou planifiée de votre clé API, sans interruption de service.

🔔

Webhooks

Événements candidate.linked / candidate.dissociated en temps réel. Signature HMAC-SHA256 incluse.

🔗

Code d'invitation

Générez un lien d'invitation unique pour vos candidats institutionnels et suivez leur liaison en temps réel.

Prêt à intégrer ?

Clé sandbox délivrée en moins de 30 secondes. Aucune carte bancaire requise.

Obtenir un accès API

Clé sandbox délivrée en moins de 30 secondes — aucune carte bancaire requise