Bijgewerkt 22 april 2026
/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
- Uploaden: Je dient het cv in via de API
- Geaccepteerd: De API retourneert
202 Acceptedmet eenprocessing_id - Verwerking: AI extraheert kandidaatinformatie uit het cv op de achtergrond
- Melding: De gebruiker opgegeven via
user_idontvangt 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
}'
jsoncreate_intake<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
-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
Veld Type Beschrijving user_id integer Verplicht. Het tenant gebruikers-ID om de kandidaat aan te koppelen. Deze gebruiker ontvangt de melding van het assistentverzoek. resume object Verplicht. Het cv-document dat verwerkt moet worden resume.filename string Verplicht. Originele bestandsnaam (max 255 tekens) resume.content string Verplicht. Base64-gecodeerde bestandsinhoud resume.mime_type string Verplicht. MIME-type van het bestand Optionele velden
Veld Type Beschrijving create_intake boolean Automatische intake-aanmaak aanvragen voor de nieuwe kandidaat (vereist de Intake-functie) Cv-document
Het cv moet base64-gecodeerd zijn en metadata bevatten:
{
"filename": "resume.pdf",
"content": "base64_encoded_content_here",
"mime_type": "application/pdf"
}
Ondersteunde documenttypen
Toegestane MIME-types Max grootte application/pdf 10MB 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:
- CV-analyse: AI extraheert persoonlijke gegevens, werkervaring, opleiding en vaardigheden uit het CV
- Duplicaatdetectie: Het systeem controleert of er al een kandidaat met hetzelfde e-mailadres bestaat
- Kandidaat aanmaken: Als de kandidaat nieuw is, wordt het profiel aangemaakt met de geëxtraheerde gegevens
- Verrijkingsworkflow: Aanvullende AI-verwerking verrijkt het kandidaatprofiel (taganalyse, samenvattingsgeneratie)
- Notificatie: De gebruiker opgegeven via user_id
ontvangt een assistentverzoek met het resultaat
Mogelijke uitkomsten
| Scenario | Wat er gebeurt |
|---|---|
| Nieuwe kandidaat | Kandidaat 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 CV | Kandidaat wordt opgeslagen als "in afwachting", gebruiker ontvangt een melding "aanvulling nodig" |
| Verwerkingsfout | Gebruiker 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