Skip to main content

Kandidaat aanmaken

NL EN

Bijgewerkt 22 april 2026

POST /api/v1/candidates
curl -X POST \
  "https://app.recruitsome.com/api/v1/candidates" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Accept: application/json"
const response = await fetch('https://app.recruitsome.com/api/v1/candidates', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY',
    'Accept': 'application/json',
  },
});

const data = await response.json();
console.log(data);
use Illuminate\Support\Facades\Http;

$response = Http::withToken('YOUR_API_KEY')
    ->acceptJson()
    ->post('https://app.recruitsome.com/api/v1/candidates');

$data = $response->json();

Kandidaat aanmaken

Maak een nieuwe kandidaat aan door het cv te uploaden. Het cv wordt asynchroon op de achtergrond verwerkt — de API retourneert direct een processing_id waarmee de voortgang gevolgd kan worden. Zodra de verwerking is voltooid, ontvangt de verantwoordelijke gebruiker een assistent-verzoekmelding binnen de applicatie.

Endpoint

POST /api/v1/candidates

Hoe het werkt

Het aanmaken van een kandidaat verloopt asynchroon en volgt deze stappen:

graph TD

A[Upload Resume via API] --> B[Resume Stored]

B --> C[202 Accepted + processing_id]

C --> D[Background Processing]

D --> E{Email Found?}

E -->|Yes| F{Existing Candidate?}

E -->|No| G[Manual Completion Required]

F -->|New| H[Candidate Created]

F -->|Exists| I[Resume Review]

H --> J[Assistant Request Sent]

I --> J

G --> J

  1. Uploaden: Je dient het cv in via de API
  2. Geaccepteerd: De API retourneert 202 Accepted met een processing_id
  3. Verwerking: AI extraheert kandidaatinformatie uit het cv op de achtergrond
  4. Melding: De gebruiker opgegeven via user_id ontvangt een assistent-verzoek in de applicatie met het resultaat

Dit is dezelfde verwerkingspipeline als bij het uploaden van een cv via de applicatie-interface. De kandidaat wordt aangemaakt, verrijkt en de gebruiker wordt op de hoogte gebracht via de normale assistent-verzoekmeldingen.

Eenvoudig voorbeeld

``bash cURL

curl -X POST https://app.recruitsome.com/api/v1/candidates \

-H "Authorization: Bearer YOUR_API_TOKEN" \

-H "Content-Type: application/json" \

-d '{

"user_id": 1,

"resume": {

"filename": "john_doe_cv.pdf",

"content": "JVBERi0xLjQKJeLj...",

"mime_type": "application/pdf"

}

}'


javascript JavaScript

// Read file and convert to base64

async function fileToBase64(file) {

return new Promise((resolve, reject) => {

const reader = new FileReader();

reader.readAsDataURL(file);

reader.onload = () => resolve(reader.result.split(',')[1]);

reader.onerror = reject;

});

}

const resumeFile = document.getElementById('resume-input').files[0];

const resumeBase64 = await fileToBase64(resumeFile);

const response = await fetch('https://app.recruitsome.com/api/v1/candidates', {

method: 'POST',

headers: {

'Authorization': 'Bearer YOUR_API_TOKEN',

'Content-Type': 'application/json'

},

body: JSON.stringify({

user_id: 1,

resume: {

filename: resumeFile.name,

content: resumeBase64,

mime_type: resumeFile.type

}

})

});

if (response.status === 202) {

const result = await response.json();

console.log('Processing started:', result.data.processing_id);

}


python Python

import requests

import base64

CV-bestand inlezen

with open('resume.pdf', 'rb') as f:

resume_content = base64.b64encode(f.read()).decode('utf-8')

response = requests.post(

'https://app.recruitsome.com/api/v1/candidates',

headers={

'Authorization': 'Bearer YOUR_API_TOKEN',

'Content-Type': 'application/json'

},

json={

'user_id': 1,

'resume': {

'filename': 'resume.pdf',

'content': resume_content,

'mime_type': 'application/pdf'

}

}

)

if response.status_code == 202:

result = response.json()

print('Processing started:', result['data']['processing_id'])



Voorbeeld van een response

json

{

"message": "Resume uploaded successfully. The candidate will be created in the background.",

"data": {

"processing_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"

}

}


Met intake-aanmaak

Als de tenant de Intake-functie heeft ingeschakeld, kun je verzoeken dat er automatisch een intake wordt aangemaakt voor de nieuwe kandidaat:

bash

curl -X POST https://app.recruitsome.com/api/v1/candidates \

-H "Authorization: Bearer YOUR_API_TOKEN" \

-H "Content-Type: application/json" \

-d '{

"user_id": 1,

"resume": {

"filename": "jane_smith_cv.pdf",

"content": "JVBERi0xLjQKJeLj...",

"mime_type": "application/pdf"

},

"create_intake": true

}'


<div class="not-prose rounded-lg border border-gray-200 bg-gray-50 p-4 dark:border-gray-700 dark:bg-gray-800"><p class="mt-1 text-sm text-gray-700 dark:text-gray-300">De create_intake-vlag is alleen van toepassing wanneer de tenant de Intake-functie heeft ingeschakeld. Als de functie niet is ingeschakeld, wordt deze parameter stilzwijgend genegeerd.</p></div>

Requestvelden

Verplichte velden

VeldTypeBeschrijving
user_idintegerVerplicht. Het tenant gebruikers-ID om de kandidaat aan te koppelen. Deze gebruiker ontvangt de melding van het assistentverzoek.
resumeobjectVerplicht. Het cv-document dat verwerkt moet worden
resume.filenamestringVerplicht. Originele bestandsnaam (max 255 tekens)
resume.contentstringVerplicht. Base64-gecodeerde bestandsinhoud
resume.mime_typestringVerplicht. MIME-type van het bestand

Optionele velden

VeldTypeBeschrijving
create_intakebooleanAutomatische intake-aanmaak aanvragen voor de nieuwe kandidaat (vereist de Intake-functie)

Cv-document

Het cv moet base64-gecodeerd zijn en metadata bevatten:

json

{

"filename": "resume.pdf",

"content": "base64_encoded_content_here",

"mime_type": "application/pdf"

}


Ondersteunde documenttypen

Toegestane MIME-typesMax grootte
application/pdf10MB
application/msword (.doc)10MB
application/vnd.openxmlformats-officedocument.wordprocessingml.document (.docx)10MB

<div class="not-prose rounded-lg border border-amber-200 bg-amber-50 p-4 dark:border-amber-800 dark:bg-amber-900/20"><p class="font-medium text-amber-800 dark:text-amber-300">Waarschuwing</p><p class="mt-1 text-sm text-amber-700 dark:text-amber-400">Base64-codering vergroot de bestandsgrootte met ongeveer 33%. Een bestand van 10MB wordt na base64-codering ongeveer 13,3MB.</p></div>

Foutafhandeling

Validatiefouten (422)

json

{

"message": "De opgegeven gegevens zijn ongeldig.",

"errors": {

"user_id": ["De opgegeven gebruiker bestaat niet."],

"resume": ["Een cv-document is vereist om een kandidaat aan te maken."],

"resume.mime_type": ["Het cv moet een PDF- of Word-document zijn."]

}

}


Ongeldige Base64-inhoud (422)

json

{

"message": "De cv-inhoud is geen geldige base64-gecodeerde data.",

"error": "INVALID_RESUME_CONTENT"

}


Bestandsgrootte overschreden (422)

json

{

"message": "De opgegeven gegevens zijn ongeldig.",

"errors": {

"resume": ["De bestandsgrootte van het cv overschrijdt de maximaal toegestane limiet van 10MB."]

}

}


Rate limiting (429)

json

{

"message": "Te veel verzoeken. Wacht even voordat u het opnieuw probeert."

}


<div class="not-prose rounded-lg border border-amber-200 bg-amber-50 p-4 dark:border-amber-800 dark:bg-amber-900/20"><p class="font-medium text-amber-800 dark:text-amber-300">Waarschuwing</p><p class="mt-1 text-sm text-amber-700 dark:text-amber-400">Rate limit: 10 verzoeken per minuut per API-sleutel</p></div>

Serverfout (500)

json

{

"message": "Er is een onverwachte fout opgetreden bij het verwerken van het cv.",

"error": "PROCESSING_FAILED"

}

`

Wat er na het indienen gebeurt

Zodra de API 202 Accepted retourneert, gebeurt het volgende op de achtergrond:

  1. CV-analyse: AI extraheert persoonlijke gegevens, werkervaring, opleiding en vaardigheden uit het CV
  2. Duplicaatdetectie: Het systeem controleert of er al een kandidaat met hetzelfde e-mailadres bestaat
  3. Kandidaat aanmaken: Als de kandidaat nieuw is, wordt het profiel aangemaakt met de geëxtraheerde gegevens
  4. Verrijkingsworkflow: Aanvullende AI-verwerking verrijkt het kandidaatprofiel (taganalyse, samenvattingsgeneratie)
  5. Notificatie: De gebruiker opgegeven via user_id ontvangt een assistentverzoek met het resultaat

Mogelijke uitkomsten

ScenarioWat er gebeurt
Nieuwe kandidaatKandidaat wordt aangemaakt, gebruiker ontvangt een melding "kandidaat aangemaakt"
Bestaande kandidaat (zelfde e-mailadres)CV wordt ter beoordeling bijgevoegd, gebruiker ontvangt een melding "CV beoordelen"
Ontbrekend e-mailadres in CVKandidaat wordt opgeslagen als "in afwachting", gebruiker ontvangt een melding "aanvulling nodig"
VerwerkingsfoutGebruiker ontvangt een melding "verwerking mislukt"

Tip

Alle uitkomsten resulteren in een assistentverzoek-notificatie aan de gebruiker — u hoeft niet te pollen voor de status. De gebruiker kan direct in de applicatie de juiste actie ondernemen.

Opmerkingen

  • De user_id moet verwijzen naar een geldige gebruiker binnen de tenant. Deze gebruiker wordt de "eigenaar" van de kandidaat en ontvangt alle notificaties.
  • De verwerking is doorgaans binnen 30 seconden tot 2 minuten afgerond, afhankelijk van de complexiteit van het CV
  • De processing_id` is een UUID die u kunt opslaan ter referentie, hoewel het primaire notificatiemechanisme het assistentverzoek is
  • Vergeet niet om persoonsgegevens te verwerken conform de AVG-vereisten