API Documentatie
Integreer WervingAI in je eigen applicatie via onze REST API. Alle endpoints zijn beveiligd met API keys.
Authenticatie
Alle API requests vereisen een API key in de Authorization header. Je API key vind je in je dashboard onder Instellingen → API.
Houd je API key geheim. Nooit publiceren in client-side code of publieke repositories.
curl https://wervingai.nl/api/v1/vacatures \ -H "Authorization: Bearer wa_live_xxxxxxxxxxxxxxxx" \ -H "Content-Type: application/json"
API key formaat
Live keys beginnen met wa_live_, test keys met wa_test_.
Endpoints
| Methode | Endpoint | Beschrijving |
|---|---|---|
| GET | /v1/vacatures | Lijst van alle vacatures |
| POST | /v1/vacatures | Nieuwe vacature aanmaken |
| GET | /v1/vacatures/:id | Vacature details ophalen |
| PATCH | /v1/vacatures/:id | Vacature bijwerken |
| DELETE | /v1/vacatures/:id | Vacature verwijderen |
| GET | /v1/kandidaten | Lijst van kandidaten |
| GET | /v1/kandidaten/:id | Kandidaat details |
| PATCH | /v1/kandidaten/:id | Kandidaatstatus bijwerken |
| GET | /v1/campagnes | Overzicht Meta Ads campagnes |
| POST | /v1/campagnes | Campagne aanmaken & publiceren |
Webhook events
Configureer een webhook URL in je dashboard om realtime notificaties te ontvangen bij events. WervingAI stuurt een POST request naar jouw URL met een JSON body.
kandidaat.aangemeldNieuwe kandidaat heeft gesolliciteerdkandidaat.status_gewijzigdKandidaatstatus is bijgewerktcampagne.goedgekeurdMeta Ads campagne is goedgekeurdcampagne.gestoptCampagne is gestopt of verlopenvacature.gepubliceerdVacature is gepubliceerd{
"event": "kandidaat.aangemeld",
"timestamp": "2026-03-23T10:30:00Z",
"data": {
"kandidaat_id": "uuid-...",
"naam": "Jan de Vries",
"vacature_id": "uuid-...",
"ai_score": 84
}
}Rate limiting
API requests zijn gelimiteerd per API key om misbruik te voorkomen.
| Plan | Requests/minuut | Requests/dag |
|---|---|---|
| Starter | 60 | 1.000 |
| Essential | 120 | 5.000 |
| Growth | 300 | Onbeperkt |
Bij overschrijding ontvang je een 429 Too Many Requests response. De headers X-RateLimit-Remaining en X-RateLimit-Reset geven je het resterende limiet en de reset tijd.
Code voorbeelden
Vacature aanmaken — JavaScript
const response = await fetch('https://wervingai.nl/api/v1/vacatures', {
method: 'POST',
headers: {
'Authorization': 'Bearer wa_live_xxxxxxxxxxxxxxxx',
'Content-Type': 'application/json',
},
body: JSON.stringify({
titel: 'Frontend Developer',
sector: 'IT & Software',
locatie: 'Utrecht',
dienstverband: 'fulltime',
omschrijving: 'We zoeken een ervaren frontend developer...',
}),
})
const vacature = await response.json()
console.log('Vacature aangemaakt:', vacature.id)Kandidaten ophalen — Python
import requests
headers = {
'Authorization': 'Bearer wa_live_xxxxxxxxxxxxxxxx',
'Content-Type': 'application/json',
}
# Haal alle kandidaten op voor een specifieke vacature
response = requests.get(
'https://wervingai.nl/api/v1/kandidaten',
headers=headers,
params={'vacature_id': 'uuid-...', 'min_score': 70}
)
kandidaten = response.json()
for k in kandidaten['data']:
print(f"{k['naam']} — AI score: {k['ai_score']}")Foutafhandeling
WervingAI gebruikt standaard HTTP statuscodes. Fouten bevatten altijd een error en message veld.
{
"error": "validation_error",
"message": "Het veld 'titel' is verplicht",
"status": 400
}