Zum Hauptinhalt springen
API-v2-Referenz

API-Dokumentation

Die Dokumentation behandelt APIs für CV-Parsing, Matching, Webhooks und konfigurierbare Anonymisierungsabläufe.

Die Lösung für CV-Parsing per API ansehen

Oberfläche und Erläuterungen sind übersetzt. API-Bezeichner, JSON-Felder, HTTP-Statuscodes und Codebeispiele bleiben in ihrer ursprünglichen Form. Englische API-Referenz öffnen

Basis-URL https://cvreaderpro.com Authorization: ApiKey <key>

Übersicht

Überblick über alle dokumentierten API-Ressourcen und verfügbaren Vorgänge.

RessourceEndpunkteBasispfadFunktionen
Lebensläufe und Parsing7/api/v2/resumesErweitertes Parsing, Dateianalyse und CV-Verwaltung
Stellenangebote6/api/v2/jobsDateianalyse, Filter und Angebotsverwaltung
Recruiter-Scores4/api/v2/recruiter-scoresMatching gespeicherter Ressourcen und Ranking-Webhooks
PDF-Erstellung3/api/v2/pdf-generationEinstellungen, einzelne PDFs und Webhook-Stapel
20 dokumentierte EndpunkteAPI-Schlüssel-AuthentifizierungJSON-, Multipart- und PDF-Antworten

Postman-Testplan

Die Backend-Sammlung enthält 27 Anfragen für 20 eindeutige Routen. Dreizehn Routen werden standardmäßig ausgeführt; sieben optionale Anfragen bleiben deaktiviert, bis lokale Dateien, Parser-Berechtigungen oder ein konfigurierter Webhook verfügbar sind. Führen Sie die Sammlung in der vorgegebenen Reihenfolge aus, damit Fixture-IDs und Bereinigungsschritte funktionieren.

Schemata und JSON-Modelle

Diese Vorlagen entsprechen den Backend-DTOs, Entitäten, Jackson-Eigenschaftsnamen und Antworthüllen dieser Seite.

DocumentationResumeRequest → UpdateResumeDto

Anfrage zum Erstellen oder Ändern eines Lebenslaufs

Für POST und PUT /api/v2/resumes. Der Lebenslauf muss immer unter der Eigenschaft resume verschachtelt sein.

ParserResponseDTO

Antwort des CV-Parsers

Wird von POST /api/v2/resumes/parser zurückgegeben. Dies ist die normalisierte Parserantwort, nicht die von GET /api/v2/resumes/{resumeId} zurückgegebene CVXml-Ressource.

DocumentationService

Lebenslauf-Ressourcenumhüllungen

Erstellen und Lesen geben CVXml unter resume zurück. Aktualisieren gibt das normalisierte UpdateResumeDto unter resume zurück. CVXml verwendet historische französische Feldnamen.

Job entity

Stellenanfrage und -antwort

POST und PUT akzeptieren die Job-Entität. PUT ersetzt die dokumentierten Felder; senden Sie daher alle Werte, die erhalten bleiben sollen. Antworten können zusätzlich id, filePath, pauseReason, jobskills, createdAt und updatedAt enthalten.

DocumentationService / DocumentationJobService

Listenobjekte für Lebensläufe und Stellenangebote

Beide Listenrouten verwenden dieselben Paginierungsschlüssel. Der Sammlungsname unterscheidet sich je nach Ressource.

RecruiterScoreDto

Recruiter-Score-Antwort

Wird von beiden synchronen Matching-Routen zurückgegeben und ist in Ranking-Webhook-Nutzdaten enthalten.

ResumeSettings, ColorSettings, SectionSettings, ResumeCanvasImage

Einstellungen für die PDF-Erstellung

Wird von PUT /api/v2/pdf-generation/settings verwendet. Die Abschnitts-ID ist schreibgeschützt; die ID des Hintergrundbilds wird vom Server erzeugt.

WebhookController.WebhookSettingsDto / DocumentationPdfService

Webhook-Einstellungen und Warteschlangenantworten

Zum Registrieren eines Webhooks ist eine Recruiter-Sitzung erforderlich. Der v2-PDF-Webhook gibt die unten gezeigte angenommene Stapelantwort zurück.

Lebensläufe und Parsing

Lebensläufe des API-Schlüssel-Nutzers parsen, erstellen, abrufen, aktualisieren und löschen.

CV-Clientantworten: die 3 benötigten Schemas

Dies sind die exakten Erfolgsantworten, die Ihr Client deserialisieren sollte. Die detaillierten CVXml- und UpdateResumeDto-Felder stehen im Abschnitt Schemas.

POST /api/v2/resumes/parser

1. Datei parsen

Senden:multipart/form-data senden: file (erforderlich), parserType (optional).

Empfangen:Die gespeicherte ParserResponseDTO-Antwort auslesen.

POST /api/v2/resumes

2. Strukturierten Lebenslauf erstellen

Senden:application/json senden. Die resume-Hülle ist erforderlich.

Empfangen:Die id der erstellten CVXml-Hülle speichern; sie ist bei späteren Aufrufen die resumeId.

PUT /api/v2/resumes/{resumeId}

3. Lebenslauf aktualisieren

Senden:Dieselbe erforderliche { resume: ... }-Hülle wie beim Erstellen verwenden.

Empfangen:Die Antwort enthält die id und das gespeicherte UpdateResumeDto.

POST/api/v2/resumes/parser

Eine CV-Datei parsen

Parst einen als Multipart-Datei hochgeladenen CV und speichert das Ergebnis.

Anfrage

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

Erfolg

200 · JSON oder XML · gespeichertes ParserResponseDTO

400 — Ungültige CV-Datei401 — API-Schlüssel ungültig oder fehlt402 — Nicht genügend Credits403 — Datei-Parsing ist nicht erlaubt
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"

Antwortschema

ParserResponseDTO

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

Erweiterten CV-Parser ausführen

Parst entweder eine hochgeladene CV-Datei oder ein Textfeld mit dem erweiterten Parser. Diese Route erfordert einen berechtigten API-Schlüssel und verbraucht Premium-Parsing-Credits.

Anfrage

multipart/form-data · file? (Datei) oder text? (Zeichenkette) · genau eine Eingabe angeben

Erfolg

200 · JSON-Objekt mit den erweiterten CV-Daten

400 — Datei oder Text fehlt oder ist ungültig401 — API-Schlüssel ungültig oder fehlt402 — Nicht genügend Credits403 — Parser-Abo oder Testzeitraum erforderlich422 — Das Dokument konnte nicht geparst werden429 — Rate-Limit des erweiterten Parsers überschritten

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."

Antwortschema

JSON-Objekt des erweiterten Parsers

DocumentationService.parseExtended
GET/api/v2/resumes

Eigene Lebensläufe auflisten

Gibt eine paginierte Liste zurück, die nur Lebensläufe des API-Schlüssel-Nutzers enthält.

Anfrage

Abfrageparameter · page? (Zahl, Standard 0) · size? (Zahl, Standard 10)

Erfolg

200 · paginierte Liste { resumes, currentPage, totalItems, totalPages }

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

Antwortschema

Paginierte Lebenslaufliste

DocumentationService.getResumes
POST/api/v2/resumes

Lebenslauf erstellen

Erstellt einen strukturierten Lebenslauf. Senden Sie DocumentationResumeRequest ({ resume: UpdateResumeDto }); eine CVXml-Ressource aus einer Leseantwort wird ebenfalls akzeptiert.

Anfrage

application/json · DocumentationResumeRequest

Erfolg

201 · Location-Header: /api/v2/resumes/{id} · { id, resume: CVXml }

400 — Ungültige CV-Daten401 — API-Schlüssel ungültig oder fehlt
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": []}}'

Antwortschema

Hülle des erstellten Lebenslaufs

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

Eigenen Lebenslauf abrufen

Gibt den Lebenslauf zurück, wenn die UUID existiert und er dem Nutzer des API-Schlüssels gehört.

Anfrage

Pfadparameter · resumeId (UUID)

Erfolg

200 · Lebenslauf-Ressource { id, resume: CVXml }

401 — API-Schlüssel ungültig oder fehlt403 — Die Ressource gehört nicht dem Nutzer dieses API-Schlüssels404 — Ressource nicht gefunden
curl -X GET "https://cvreaderpro.com/api/v2/resumes/RESUME_UUID" \
  -H "Authorization: ApiKey YOUR_API_KEY"

Antwortschema

Lebenslaufhülle

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

Eigenen Lebenslauf aktualisieren

Aktualisiert einen Lebenslauf mit demselben DocumentationResumeRequest-Wrapper wie beim Erstellen.

Anfrage

Pfadparameter · resumeId (UUID) · application/json · DocumentationResumeRequest

Erfolg

200 · { id, resume: UpdateResumeDto } aktualisiert

401 — API-Schlüssel ungültig oder fehlt403 — Die Ressource gehört nicht dem Nutzer dieses API-Schlüssels404 — Ressource nicht gefunden
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": []}}'

Antwortschema

Hülle des aktualisierten Lebenslaufs

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

Eigenen Lebenslauf löschen

Löscht einen Lebenslauf, der dem Nutzer des API-Schlüssels gehört.

Anfrage

Pfadparameter · resumeId (UUID)

Erfolg

204 · kein Inhalt

401 — API-Schlüssel ungültig oder fehlt404 — Ressource nicht gefunden
curl -X DELETE "https://cvreaderpro.com/api/v2/resumes/RESUME_UUID" \
  -H "Authorization: ApiKey YOUR_API_KEY"

Antwortschema

Kein Antworttext

DocumentationService.deleteResume

Stellenangebote

Stellendateien parsen und strukturierte Stellenangebote des angemeldeten Nutzers verwalten.

POST/api/v2/jobs/parser

Stellendatei parsen und speichern

Parst eine als Multipart-Datei hochgeladene Stellenbeschreibung und legt das Stellenangebot für den angemeldeten Nutzer an.

Anfrage

multipart/form-data · file (Datei)

Erfolg

200 · application/json · erstelltes Stellenangebot

400 — Ungültige Stellen-Datei401 — API-Schlüssel ungültig oder fehlt
curl -X POST "https://cvreaderpro.com/api/v2/jobs/parser" \
  -H "Authorization: ApiKey YOUR_API_KEY" \
  -F "file=@job-description.pdf"

Antwortschema

Stellenangebot

DocumentationJobController.parseJob
GET/api/v2/jobs

Eigene Stellenangebote auflisten

Gibt eine paginierte, filterbare Liste der Stellenangebote des API-Schlüssel-Nutzers zurück.

Anfrage

Abfrageparameter · page? · size? · status? · source? · reference? · title? · postedFrom? · postedTo? (ISO-Datum und Uhrzeit)

Erfolg

200 · paginierte Liste { jobs, currentPage, totalItems, totalPages }

401 — API-Schlüssel ungültig oder fehlt
curl "https://cvreaderpro.com/api/v2/jobs?page=0&size=20&status=ACTIVE&title=engineer" \
  -H "Authorization: ApiKey YOUR_API_KEY"

Antwortschema

Paginierte Angebotsliste

DocumentationJobService.getJobs
POST/api/v2/jobs

Stellenangebot erstellen

Erstellt ein strukturiertes Stellenangebot aus der Job-Entität. Die vollständige beschreibbare JSON-Vorlage steht unter Schemata; die Antwort enthält zusätzlich serverseitig erzeugte Felder.

Anfrage

application/json · Job-Objekt

Erfolg

201 · Stellenangebot erstellt

401 — API-Schlüssel ungültig oder fehlt
curl -X POST "https://cvreaderpro.com/api/v2/jobs" \
  -H "Authorization: ApiKey YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  --data @job.json

Antwortschema

Stellenangebot

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

Eigenes Stellenangebot abrufen

Sucht ein Stellenangebot über UUID oder Referenz und gibt es nur zurück, wenn es dem Nutzer des API-Schlüssels gehört.

Anfrage

Pfadparameter · jobIdOrReference (UUID oder Zeichenketten-Referenz)

Erfolg

200 · Stellenangebot-Ressource

401 — API-Schlüssel ungültig oder fehlt403 — Die Ressource gehört nicht dem Nutzer dieses API-Schlüssels404 — Ressource nicht gefunden
curl "https://cvreaderpro.com/api/v2/jobs/JAVA-001" \
  -H "Authorization: ApiKey YOUR_API_KEY"

Antwortschema

Stellenangebot

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

Eigenes Stellenangebot aktualisieren

Aktualisiert ein Stellenangebot über UUID oder Referenz. Das Backend setzt alle dokumentierten beschreibbaren Felder; senden Sie deshalb das vollständige Job-Objekt, damit keine Werte gelöscht werden.

Anfrage

Pfadparameter · jobIdOrReference · application/json · Job-Objekt

Erfolg

200 · aktualisierte Stellenangebot-Ressource

401 — API-Schlüssel ungültig oder fehlt403 — Die Ressource gehört nicht dem Nutzer dieses API-Schlüssels404 — Ressource nicht gefunden
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

Antwortschema

Stellenangebot

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

Eigenes Stellenangebot löschen

Löscht ein Stellenangebot über UUID oder Referenz.

Anfrage

Pfadparameter · jobIdOrReference (UUID oder Zeichenketten-Referenz)

Erfolg

204 · kein Inhalt

401 — API-Schlüssel ungültig oder fehlt403 — Die Ressource gehört nicht dem Nutzer dieses API-Schlüssels404 — Ressource nicht gefunden
curl -X DELETE "https://cvreaderpro.com/api/v2/jobs/JAVA-001" \
  -H "Authorization: ApiKey YOUR_API_KEY"

Antwortschema

Kein Antworttext

DocumentationJobService.deleteJob

Recruiter-Scores

Detaillierte Matches berechnen und Top-Rankings per Webhook übermitteln.

POST/api/v2/recruiter-scores/match

Gesamtabgleich gespeicherter Ressourcen

Berechnet einen detaillierten Recruiter-Score für ein gespeichertes Stellenangebot und einen gespeicherten Lebenslauf.

Anfrage

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

Erfolg

200 · RecruiterScoreDto einschließlich ID des Endergebnisses

400 — jobId und candidateId sind erforderlich401 — API-Schlüssel ungültig oder fehlt
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"}'

Antwortschema

RecruiterScoreDto

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

Zwei Dateien parsen und vollständig abgleichen

Parst und speichert den übermittelten Lebenslauf und die Stellenbeschreibung und berechnet danach den detaillierten Abgleich-Score des erstellten Paars.

Anfrage

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

Erfolg

200 · RecruiterScoreDto

401 — API-Schlüssel ungültig oder fehlt
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"

Antwortschema

RecruiterScoreDto

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

Webhook für Top-Kandidaten einreihen

Aktualisiert Scores und reiht die zehn detailliert aufbereiteten Top-Kandidaten für ein Stellenangebot beim konfigurierten Webhook ein.

Anfrage

Pfadparameter · jobId (UUID)

Erfolg

202 · Zustellung eingereiht { deliveryId, eventType: "resume.matched", status: "QUEUED", resultCount }

401 — API-Schlüssel ungültig oder fehlt
curl -X POST "https://cvreaderpro.com/api/v2/recruiter-scores/jobs/JOB_UUID/top-candidates/webhook" \
  -H "Authorization: ApiKey YOUR_API_KEY"

Antwortschema

Webhook-Zustellung eingereiht

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

Webhook für Top-Stellenangebote einreihen

Reiht die zehn detaillierten Top-Stellenangebote für einen Lebenslauf beim konfigurierten Webhook ein.

Anfrage

Pfadparameter · resumeId (UUID)

Erfolg

202 · Zustellung eingereiht { deliveryId, eventType: "resume.matched", status: "QUEUED", resultCount }

401 — API-Schlüssel ungültig oder fehlt
curl -X POST "https://cvreaderpro.com/api/v2/recruiter-scores/resumes/RESUME_UUID/top-jobs/webhook" \
  -H "Authorization: ApiKey YOUR_API_KEY"

Antwortschema

Webhook-Zustellung eingereiht

DocumentationRecruiterScoreController.queueWebhook

PDF-Erstellung

Einstellungen für die Darstellung ändern und ein oder mehrere Lebenslauf-PDFs erstellen.

PUT/api/v2/pdf-generation/settings

PDF-Erstellungseinstellungen aktualisieren

Aktualisiert die ResumeSettings des angemeldeten Nutzers für die PDF-Erstellung. Senden Sie zum Erhalt vorhandener Werte das vollständige Modell mit Layout, Typografie, Rändern, Farben, Abschnitten, Hintergrundbildern und Agenturbranding.

Anfrage

application/json · ResumeSettings-Objekt

Erfolg

200 · aktualisierte ResumeSettings

401 — API-Schlüssel ungültig oder fehlt
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

Antwortschema

ResumeSettings

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

Einen Lebenslauf als PDF erstellen

Erstellt mit den aktuellen Einstellungen ein PDF für einen Lebenslauf des Nutzers.

Anfrage

Pfadparameter · resumeId (UUID)

Erfolg

200 · application/pdf · PDF-Dokument

401 — API-Schlüssel ungültig oder fehlt404 — Ressource nicht gefunden
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

Antwortschema

PDF-Datei

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

Mehrere PDFs über einen Webhook einreihen

Reiht die PDF-Erstellung für eine Liste eigener Lebenslauf-UUIDs ein und sendet die Dateien über den konfigurierten Webhook.

Anfrage

application/json · Array von UUID-Zeichenketten

Erfolg

202 · Stapel eingereiht { jobId, status, total, message, webhookSecurity }

400 — Liste leer, doppelt oder zu groß, oder pdf.generated-Webhook fehlt401 — API-Schlüssel ungültig oder fehlt403 — Die Ressource gehört nicht dem Nutzer dieses API-Schlüssels404 — Ressource nicht gefunden429 — Webhook-Warteschlange ist ausgelastet
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"]'

Antwortschema

PDF-Stapel eingereiht

DocumentationPdfService.generatePdfsWithWebhook

Webhooks

Konfigurieren Sie signierte Ereignisübermittlungen für asynchrones Parsing, Matching und PDF-Erstellung.

VorgangEndpunktAuthentifizierung
Zustellung der Top-KandidatenPOST /api/v2/recruiter-scores/jobs/{jobId}/top-candidates/webhookApiKey
Zustellung der Top-StellenangebotePOST /api/v2/recruiter-scores/resumes/{resumeId}/top-jobs/webhookApiKey
PDF-StapelzustellungPOST /api/v2/pdf-generation/webhookApiKey

Die optionalen Postman-Anfragen setzen voraus, dass für den API-Schlüssel-Nutzer bereits ein HTTPS-Webhook konfiguriert ist. Abonnieren Sie resume.parsed, resume.matched, or pdf.generated. Die Backend-Sammlung registriert oder erneuert keine Webhooks; konfigurieren Sie sie vor optionalen Ranking- oder PDF-Anfragen. Zustellungen enthalten ID, Zeitstempel, Ereignis-Header und HMAC-SHA256-Signatur.

Voraussetzungen für optionale Postman-Anfragen

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

Zustellungs-Header

X-CVReader-Event: resume.matched
X-CVReader-Delivery-Id: <uuid>
X-CVReader-Timestamp: <unix-seconds>
X-CVReader-Signature: v1=<hmac-sha256>
Prüfen Sie die Signatur für <timestamp>.<raw-json-body> mit HMAC-SHA256, bestätigen Sie den Empfang mit einer 2xx-Antwort und verwenden Sie die Zustellungs-ID für Idempotenz, da Wiederholungen dasselbe Ereignis erneut senden können.

Ein synthetisches Beispiel ansehen

Laden Sie die CV-Eingaben und erfassten API-Ausgaben herunter. Alle Personen, Unternehmen und Stellen sind fiktiv. Die Beispieldokumente sind auf Englisch; Ergebnisse hängen von Eingabe und Parser ab und müssen von Menschen geprüft werden.