Aller au contenu principal
Référence API v2

Documentation API

La documentation présente les API, le parsing CV, le matching, les webhooks et les options d’anonymisation configurables.

Découvrir la solution API de parsing CV

L’interface et les explications sont traduites. Les identifiants API, champs JSON, codes HTTP et exemples de code conservent leur forme d’origine. Ouvrir la référence API en anglais

URL de base https://cvreaderpro.com Authorization: ApiKey <key>

Vue d’ensemble

Présentation des ressources API documentées et des opérations disponibles.

RessourceEndpointsChemin de baseFonctionnalités
CV et parsing7/api/v2/resumesParsing étendu, analyse de fichiers et gestion des CV
Offres6/api/v2/jobsAnalyse de fichiers, filtres et gestion des offres
Scores recruteur4/api/v2/recruiter-scoresMatching de ressources enregistrées et webhooks de classement
Génération PDF3/api/v2/pdf-generationParamètres, PDF individuels et lots via webhook
20 endpoints documentésAuthentification par clé APIRéponses JSON, multipart et PDF

Plan de test Postman

La collection backend contient 27 requêtes couvrant 20 routes distinctes. Treize routes s’exécutent par défaut; sept requêtes facultatives restent désactivées tant que vous ne fournissez pas de fichiers locaux, les droits d’accès au parser ou un webhook configuré. Exécutez la collection dans l’ordre pour que les identifiants de fixtures et les étapes de nettoyage fonctionnent correctement.

Schémas et modèles JSON

Ces modèles correspondent aux DTO, entités, noms de propriétés Jackson et enveloppes de réponse utilisés par cette page.

DocumentationResumeRequest → UpdateResumeDto

Requête de création ou modification d’un CV

Utilisé par POST et PUT /api/v2/resumes. Le contenu du CV doit toujours se trouver dans la propriété resume.

ParserResponseDTO

Réponse du parser CV

Renvoyée par POST /api/v2/resumes/parser. Il s’agit de la réponse normalisée du parser, et non de la ressource CVXml renvoyée par GET /api/v2/resumes/{resumeId}.

DocumentationService

Enveloppes de ressource CV

La création et la lecture renvoient CVXml sous resume. La mise à jour renvoie UpdateResumeDto normalisé sous resume. CVXml utilise des noms de champs historiques en français.

Job entity

Requête et réponse d’offre

POST et PUT acceptent l’entité Job. PUT remplace les champs documentés : envoyez toutes les valeurs à conserver. Les réponses peuvent aussi inclure id, filePath, pauseReason, jobskills, createdAt et updatedAt.

DocumentationService / DocumentationJobService

Enveloppes de listes de CV et d’offres

Les deux endpoints de liste utilisent les mêmes clés de pagination. La clé de collection varie selon la ressource.

RecruiterScoreDto

Réponse de score recruteur

Renvoyée par les deux endpoints de matching synchrone et incluse dans les données des webhooks de classement.

ResumeSettings, ColorSettings, SectionSettings, ResumeCanvasImage

Paramètres de génération PDF

Utilisé par PUT /api/v2/pdf-generation/settings. L’identifiant de section est en lecture seule; l’identifiant de l’image de fond est généré par le serveur.

WebhookController.WebhookSettingsDto / DocumentationPdfService

Paramètres de webhook et réponses de mise en file

L’enregistrement d’un webhook utilise l’authentification de la session recruteur. L’endpoint webhook PDF v2 renvoie la réponse de lot acceptée présentée ci-dessous.

CV et parsing

Analyser, créer, consulter, modifier et supprimer les CV appartenant à l’utilisateur de la clé API.

Réponses du client CV : les 3 schémas nécessaires

Voici les formes exactes des réponses réussies à désérialiser côté client. Les champs détaillés de CVXml et UpdateResumeDto figurent dans la section Schémas.

POST /api/v2/resumes/parser

1. Analyser un fichier

Envoyer :Envoyez multipart/form-data : file (obligatoire), parserType (facultatif).

Recevoir :Lisez la réponse ParserResponseDTO enregistrée.

POST /api/v2/resumes

2. Créer un CV structuré

Envoyer :Envoyez application/json. L’enveloppe resume est obligatoire.

Recevoir :Conservez l’id de l’enveloppe CVXml créée : il devient resumeId pour les appels suivants.

PUT /api/v2/resumes/{resumeId}

3. Mettre à jour un CV

Envoyer :Utilisez la même enveloppe { resume: ... } obligatoire que pour la création.

Recevoir :La réponse contient l’id et le UpdateResumeDto enregistré.

POST/api/v2/resumes/parser

Analyser un fichier CV

Analyse et enregistre un CV envoyé sous forme de fichier multipart.

Requête

multipart/form-data · file (fichier) · parserType? (BASIC | ADVANCED)

Réponse réussie

200 · JSON ou XML · ParserResponseDTO enregistré

400 — Fichier CV invalide401 — Clé API invalide ou manquante402 — Crédits insuffisants403 — Le parsing de fichier n’est pas autorisé
curl -X POST "https://cvreaderpro.com/api/v2/resumes/parser" \
  -H "Authorization: ApiKey YOUR_API_KEY" -H "Accept: application/json" \
  -F "file=@resume.pdf" -F "parserType=ADVANCED"

Schéma de réponse

ParserResponseDTO

DocumentationResumeController.parseResume
POST/api/v2/resumes/extended-parser

Exécuter le parser CV étendu

Analyse un fichier CV envoyé ou un champ texte avec le parser étendu. Cette route exige une clé API autorisée et consomme des crédits de parsing premium.

Requête

multipart/form-data · file? (fichier) ou text? (chaîne) · fournir exactement une entrée

Réponse réussie

200 · objet JSON contenant les données CV étendues

400 — Fichier manquant/invalide ou texte manquant/invalide401 — Clé API invalide ou manquante402 — Crédits insuffisants403 — Abonnement au parser ou essai requis422 — Le document n’a pas pu être analysé429 — Limite de requêtes du parser étendu dépassée

file

curl --fail-with-body -X POST "https://cvreaderpro.com/api/v2/resumes/extended-parser" \
  -H "Authorization: ApiKey YOUR_API_KEY" \
  -H "Accept: application/json" \
  -F "file=@resume.pdf"

text

curl --fail-with-body -X POST "https://cvreaderpro.com/api/v2/resumes/extended-parser" \
  -H "Authorization: ApiKey YOUR_API_KEY" \
  -H "Accept: application/json" \
  --form-string "text=Alex Sample
QA engineer with API testing experience."

Schéma de réponse

Objet JSON du parser étendu

DocumentationService.parseExtended
GET/api/v2/resumes

Lister les CV appartenant à la clé API

Renvoie une collection paginée contenant uniquement les CV de l’utilisateur associé à la clé API.

Requête

paramètres de requête · page? (nombre, défaut 0) · size? (nombre, défaut 10)

Réponse réussie

200 · collection paginée { resumes, currentPage, totalItems, totalPages }

curl -X GET "https://cvreaderpro.com/api/v2/resumes?page=0&size=10" \
  -H "Authorization: ApiKey YOUR_API_KEY"

Schéma de réponse

Collection paginée de CV

DocumentationService.getResumes
POST/api/v2/resumes

Créer un CV

Crée un CV structuré. Envoyez DocumentationResumeRequest ({ resume: UpdateResumeDto }); une ressource au format CVXml provenant d’une réponse de lecture est également acceptée.

Requête

application/json · DocumentationResumeRequest

Réponse réussie

201 · en-tête Location: /api/v2/resumes/{id} · { id, resume: CVXml }

400 — Données du CV invalides401 — Clé API invalide ou manquante
curl -X POST "https://cvreaderpro.com/api/v2/resumes" \
  -H "Authorization: ApiKey YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"resume": {"candidate": { "firstName": "Ada", "lastName": "Lovelace", "personalEmail": "ada@example.com" },"profile": "Backend engineer","experiences": [], "educations": [], "languages": [], "skills": [],"softSkills": [], "references": []}}'

Schéma de réponse

Enveloppe du CV créé

DocumentationService.createResume
GET/api/v2/resumes/{resumeId}

Récupérer un CV appartenant à la clé API

Renvoie le CV si l’UUID existe et si le CV appartient à l’utilisateur associé à la clé API.

Requête

paramètre de chemin · resumeId (UUID)

Réponse réussie

200 · ressource CV { id, resume: CVXml }

401 — Clé API invalide ou manquante403 — La ressource n’appartient pas à l’utilisateur de cette clé API404 — Ressource introuvable
curl -X GET "https://cvreaderpro.com/api/v2/resumes/RESUME_UUID" \
  -H "Authorization: ApiKey YOUR_API_KEY"

Schéma de réponse

Enveloppe du CV

DocumentationService.getResume
PUT/api/v2/resumes/{resumeId}

Mettre à jour un CV

Met à jour un CV avec le même objet DocumentationResumeRequest que celui utilisé pour sa création.

Requête

paramètre de chemin · resumeId (UUID) · application/json · DocumentationResumeRequest

Réponse réussie

200 · { id, resume: UpdateResumeDto } mis à jour

401 — Clé API invalide ou manquante403 — La ressource n’appartient pas à l’utilisateur de cette clé API404 — Ressource introuvable
curl -X PUT "https://cvreaderpro.com/api/v2/resumes/RESUME_UUID" \
  -H "Authorization: ApiKey YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"resume": {"candidate": { "firstName": "Ada", "lastName": "Lovelace", "personalEmail": "ada@example.com" },"profile": "Backend engineer","experiences": [], "educations": [], "languages": [], "skills": [],"softSkills": [], "references": []}}'

Schéma de réponse

Enveloppe du CV mis à jour

DocumentationService.updateResume
DELETE/api/v2/resumes/{resumeId}

Supprimer un CV

Supprime un CV appartenant à l’utilisateur associé à la clé API.

Requête

paramètre de chemin · resumeId (UUID)

Réponse réussie

204 · aucun contenu

401 — Clé API invalide ou manquante404 — Ressource introuvable
curl -X DELETE "https://cvreaderpro.com/api/v2/resumes/RESUME_UUID" \
  -H "Authorization: ApiKey YOUR_API_KEY"

Schéma de réponse

Aucun corps de réponse

DocumentationService.deleteResume

Offres

Analyser des fichiers d’offres et gérer les offres structurées de l’utilisateur authentifié.

POST/api/v2/jobs/parser

Analyser et enregistrer un fichier d’offre

Analyse une description de poste envoyée comme fichier multipart et crée l’offre pour l’utilisateur authentifié.

Requête

multipart/form-data · file (fichier)

Réponse réussie

200 · application/json · offre créée

400 — Fichier d’offre invalide401 — Clé API invalide ou manquante
curl -X POST "https://cvreaderpro.com/api/v2/jobs/parser" \
  -H "Authorization: ApiKey YOUR_API_KEY" \
  -F "file=@job-description.pdf"

Schéma de réponse

Offre

DocumentationJobController.parseJob
GET/api/v2/jobs

Lister les offres appartenant à la clé API

Renvoie une collection paginée et filtrable des offres de l’utilisateur associé à la clé API.

Requête

paramètres · page? · size? · status? · source? · reference? · title? · postedFrom? · postedTo? (date-heure ISO)

Réponse réussie

200 · collection paginée { jobs, currentPage, totalItems, totalPages }

401 — Clé API invalide ou manquante
curl "https://cvreaderpro.com/api/v2/jobs?page=0&size=20&status=ACTIVE&title=engineer" \
  -H "Authorization: ApiKey YOUR_API_KEY"

Schéma de réponse

Collection paginée d’offres

DocumentationJobService.getJobs
POST/api/v2/jobs

Créer une offre

Crée une offre structurée à partir de l’entité Job. Le modèle JSON complet est dans la section Schémas; la réponse ajoute les champs générés par le serveur.

Requête

application/json · objet Job

Réponse réussie

201 · offre créée

401 — Clé API invalide ou manquante
curl -X POST "https://cvreaderpro.com/api/v2/jobs" \
  -H "Authorization: ApiKey YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  --data @job.json

Schéma de réponse

Offre

DocumentationJobService.createJob
GET/api/v2/jobs/{jobIdOrReference}

Récupérer une offre

Recherche une offre par UUID ou référence et ne la renvoie que si elle appartient à l’utilisateur associé à la clé API.

Requête

paramètre de chemin · jobIdOrReference (UUID ou référence texte)

Réponse réussie

200 · ressource offre

401 — Clé API invalide ou manquante403 — La ressource n’appartient pas à l’utilisateur de cette clé API404 — Ressource introuvable
curl "https://cvreaderpro.com/api/v2/jobs/JAVA-001" \
  -H "Authorization: ApiKey YOUR_API_KEY"

Schéma de réponse

Offre

DocumentationJobService.getJob
PUT/api/v2/jobs/{jobIdOrReference}

Mettre à jour une offre

Met à jour une offre identifiée par UUID ou référence. Le backend remplace tous les champs modifiables documentés; envoyez donc l’objet Job complet pour éviter de vider des valeurs.

Requête

paramètre de chemin · jobIdOrReference · application/json · objet Job

Réponse réussie

200 · ressource offre mise à jour

401 — Clé API invalide ou manquante403 — La ressource n’appartient pas à l’utilisateur de cette clé API404 — Ressource introuvable
curl -X PUT "https://cvreaderpro.com/api/v2/jobs/JAVA-001" \
  -H "Authorization: ApiKey YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  --data @job.json

Schéma de réponse

Offre

DocumentationJobService.updateJob
DELETE/api/v2/jobs/{jobIdOrReference}

Supprimer une offre

Supprime une offre identifiée par UUID ou référence.

Requête

paramètre de chemin · jobIdOrReference (UUID ou référence texte)

Réponse réussie

204 · aucun contenu

401 — Clé API invalide ou manquante403 — La ressource n’appartient pas à l’utilisateur de cette clé API404 — Ressource introuvable
curl -X DELETE "https://cvreaderpro.com/api/v2/jobs/JAVA-001" \
  -H "Authorization: ApiKey YOUR_API_KEY"

Schéma de réponse

Aucun corps de réponse

DocumentationJobService.deleteJob

Scores recruteur

Calculer des matchings détaillés et transmettre les meilleurs classements par webhook.

POST/api/v2/recruiter-scores/match

Calculer le matching complet de ressources enregistrées

Calcule un score détaillé entre une offre enregistrée et un CV enregistré.

Requête

application/json · jobId (UUID) · candidateId (UUID)

Réponse réussie

200 · RecruiterScoreDto, avec l’identifiant du score final

400 — jobId et candidateId sont obligatoires401 — Clé API invalide ou manquante
curl -X POST "https://cvreaderpro.com/api/v2/recruiter-scores/match" \
  -H "Authorization: ApiKey YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"jobId":"JOB_UUID","candidateId":"RESUME_UUID"}'

Schéma de réponse

RecruiterScoreDto

DocumentationRecruiterScoreController.fullMatch
POST/api/v2/recruiter-scores/match/files

Analyser et comparer deux fichiers

Analyse et enregistre le CV et l’offre fournis, puis calcule leur score de matching détaillé.

Requête

multipart/form-data · resumeFile (fichier) · jobFile (fichier)

Réponse réussie

200 · RecruiterScoreDto

401 — Clé API invalide ou manquante
curl -X POST "https://cvreaderpro.com/api/v2/recruiter-scores/match/files" \
  -H "Authorization: ApiKey YOUR_API_KEY" \
  -F "resumeFile=@resume.pdf" \
  -F "jobFile=@job.pdf"

Schéma de réponse

RecruiterScoreDto

DocumentationRecruiterScoreController.fullMatchFiles
POST/api/v2/recruiter-scores/jobs/{jobId}/top-candidates/webhook

Mettre en file le webhook des meilleurs candidats

Actualise les scores et met en file les 10 candidats les mieux classés, avec leurs détails complets, pour l’offre indiquée.

Requête

paramètre de chemin · jobId (UUID)

Réponse réussie

202 · livraison mise en file { deliveryId, eventType: "resume.matched", status: "QUEUED", resultCount }

401 — Clé API invalide ou manquante
curl -X POST "https://cvreaderpro.com/api/v2/recruiter-scores/jobs/JOB_UUID/top-candidates/webhook" \
  -H "Authorization: ApiKey YOUR_API_KEY"

Schéma de réponse

Livraison webhook mise en file

DocumentationRecruiterScoreController.queueWebhook
POST/api/v2/recruiter-scores/resumes/{resumeId}/top-jobs/webhook

Mettre en file le webhook des meilleures offres

Met en file les 10 offres détaillées les mieux classées pour le CV indiqué.

Requête

paramètre de chemin · resumeId (UUID)

Réponse réussie

202 · livraison mise en file { deliveryId, eventType: "resume.matched", status: "QUEUED", resultCount }

401 — Clé API invalide ou manquante
curl -X POST "https://cvreaderpro.com/api/v2/recruiter-scores/resumes/RESUME_UUID/top-jobs/webhook" \
  -H "Authorization: ApiKey YOUR_API_KEY"

Schéma de réponse

Livraison webhook mise en file

DocumentationRecruiterScoreController.queueWebhook

Génération PDF

Modifier les paramètres de rendu et générer un ou plusieurs CV au format PDF.

PUT/api/v2/pdf-generation/settings

Mettre à jour les paramètres de génération PDF

Met à jour les ResumeSettings de l’utilisateur authentifié utilisées pour générer les PDF. Pour conserver les valeurs existantes, envoyez le modèle complet : mise en page, typographie, marges, couleurs, sections, images de fond et identité de l’agence.

Requête

application/json · objet ResumeSettings

Réponse réussie

200 · objet ResumeSettings mis à jour

401 — Clé API invalide ou manquante
curl -X PUT "https://cvreaderpro.com/api/v2/pdf-generation/settings" \
  -H "Authorization: ApiKey YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  --data @resume-settings.json

Schéma de réponse

ResumeSettings

DocumentationPdfService.updateSettings
POST/api/v2/pdf-generation/resumes/{resumeId}

Générer un CV au format PDF

Génère le PDF d’un CV appartenant à l’utilisateur avec les paramètres actuels.

Requête

paramètre de chemin · resumeId (UUID)

Réponse réussie

200 · application/pdf · document PDF

401 — Clé API invalide ou manquante404 — Ressource introuvable
curl -X POST "https://cvreaderpro.com/api/v2/pdf-generation/resumes/RESUME_UUID" \
  -H "Authorization: ApiKey YOUR_API_KEY" \
  -H "Accept: application/pdf" \
  --fail --show-error -o resume.pdf

Schéma de réponse

Fichier PDF

DocumentationPdfService.generateResumePdf
POST/api/v2/pdf-generation/webhook

Mettre plusieurs PDF en file via un webhook

Met en file la génération de PDF pour une liste d’UUID de CV appartenant à l’utilisateur, puis transmet les fichiers via le webhook configuré.

Requête

application/json · tableau de chaînes UUID

Réponse réussie

202 · lot mis en file { jobId, status, total, message, webhookSecurity }

400 — Liste vide, doublons, taille excessive ou webhook pdf.generated manquant401 — Clé API invalide ou manquante403 — La ressource n’appartient pas à l’utilisateur de cette clé API404 — Ressource introuvable429 — File d’attente des webhooks saturée
curl -X POST "https://cvreaderpro.com/api/v2/pdf-generation/webhook" \
  -H "Authorization: ApiKey YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '["RESUME_UUID_1", "RESUME_UUID_2"]'

Schéma de réponse

Lot PDF mis en file

DocumentationPdfService.generatePdfsWithWebhook

Webhooks

Configurez des notifications d’événements signées pour l’analyse asynchrone, le matching et la génération PDF.

OpérationEndpointAuthentification
Livraison des meilleurs candidatsPOST /api/v2/recruiter-scores/jobs/{jobId}/top-candidates/webhookApiKey
Livraison des meilleures offresPOST /api/v2/recruiter-scores/resumes/{resumeId}/top-jobs/webhookApiKey
Livraison du lot PDFPOST /api/v2/pdf-generation/webhookApiKey

Les requêtes Postman facultatives supposent qu’un webhook HTTPS est déjà configuré pour le propriétaire de la clé API. Abonnez-le à resume.parsed, resume.matched, or pdf.generated. La collection backend n’enregistre ni ne renouvelle les webhooks; configurez-les avant d’activer les requêtes facultatives de classement ou de PDF. Chaque livraison contient un identifiant, un horodatage, un en-tête d’événement et une signature HMAC-SHA256.

Prérequis des requêtes Postman facultatives

cvFilePath=/path/to/resume.pdf
jobFilePath=/path/to/job-description.pdf
webhookExpectedStatus=202

En-têtes de livraison

X-CVReader-Event: resume.matched
X-CVReader-Delivery-Id: <uuid>
X-CVReader-Timestamp: <unix-seconds>
X-CVReader-Signature: v1=<hmac-sha256>
Vérifiez la signature sur <timestamp>.<raw-json-body> avec HMAC-SHA256, renvoyez une réponse 2xx pour accuser réception et utilisez l’identifiant de livraison pour garantir l’idempotence en cas de nouvelle tentative.

Explorer un exemple synthétique

Téléchargez les CV sources et les sorties API enregistrées. Les personnes, entreprises et offres sont fictives. Les documents exemples sont en anglais ; les résultats dépendent du document et du parser et nécessitent une revue humaine.