Skip to main content

Kandidaten ophalen

NL EN

Bijgewerkt 15 juni 2026

GET /api/v1/candidates
curl -X GET \
  "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: 'GET',
  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()
    ->get('https://app.recruitsome.com/api/v1/candidates');

$data = $response->json();

Haal een gepagineerde lijst op van kandidaten die gekoppeld zijn aan een specifieke gebruiker. Kandidaten zijn beperkt tot de repository van de gebruiker: alleen kandidaten die aan de opgegeven gebruiker zijn gekoppeld, worden geretourneerd.

Authenticatie

Vereist een API sleutel met de candidates:read scope (inbegrepen in de Chrome Plugin preset). Aanroepen met een sleutel zonder deze scope retourneren een 403 met foutcode INSUFFICIENT_SCOPE.

Endpoint

Code
GET /api/v1/candidates

Queryparameters

ParameterTypeStandaardBeschrijving
user_idinteger-Verplicht. Het gebruikers-ID van de tenant wiens kandidatenrepository bevraagd moet worden
emailstring-Filter op exact overeenkomend e-mailadres
searchstring-Zoek in voornaam, achternaam en e-mailadres (gedeeltelijke overeenkomst)
statusstring-Filter op kandidaatstatus (zie Statuswaarden hieronder)
sortstringcreated_atSorteerveld: created_at, first_name, last_name, email
sort_directionstringdescSorteerrichting: asc of desc
pageinteger1Paginanummer voor paginering
per_pageinteger20Items per pagina (max: 100)

Statuswaarden

WaardeBeschrijving
potentialNieuwe kandidaat, nog niet benaderd
waiting_for_intakeBenaderd en geïnteresseerd, wacht op intake
intake_scheduledIntakegesprek is ingepland
active_mediationWordt actief voorgesteld in procedures
latent_mediationBeschikbaar, maar wordt niet actief voorgesteld
upcoming_employeeHeeft een aanbod geaccepteerd, start binnenkort
employeeMomenteel in dienst
ex_employeeVoormalig medewerker
do_not_contactMag niet benaderd worden

Responsevelden

VeldTypeBeschrijving
idintegerUniek kandidaat-ID
slugstringURL-vriendelijke identifier
first_namestringVoornaam
middle_namestring|nullTussenvoegsel
last_namestringAchternaam
full_namestringBerekende volledige naam
emailstringE-mailadres
mobile_phonestring|nullMobiel telefoonnummer, opgemaakt voor weergave
fixed_phonestring|nullVast telefoonnummer in onbewerkt E.164-formaat (bijv. +31201234567)
statusobjectHuidige kandidaatstatus
localitystring|nullPlaats/woonplaats
country_codestring|nullISO 3166-1 alpha-2 landcode
linkedin_urlstring|nullLinkedIn-profiel-URL
profile_completenessinteger|nullPercentage profielvolledigheid (0-100)
avatarobjectAvatar-afbeeldings-URL's
created_atstringISO 8601 aanmaakdatum
updated_atstringISO 8601 datum laatste wijziging

Objectstructuren

Status-object

JSON
{
  "value": "potential",
  "label": "Potential Candidate"
}

Avatar-object

JSON
{
  "small": "https://app.recruitsome.com/media/candidates/42/conversions/avatar-thumb.jpg",
  "medium": "https://app.recruitsome.com/media/candidates/42/conversions/avatar-medium.jpg",
  "large": "https://app.recruitsome.com/media/candidates/42/conversions/avatar-large.jpg"
}

Avatar-URL's kunnen null zijn als de kandidaat geen profielfoto heeft.

Paginering

Het antwoord bevat standaard pagineringsmetadata:

JSON
{
  "data": [...],
  "links": {
    "first": "https://app.recruitsome.com/api/v1/candidates?page=1",
    "last": "https://app.recruitsome.com/api/v1/candidates?page=3",
    "prev": null,
    "next": "https://app.recruitsome.com/api/v1/candidates?page=2"
  },
  "meta": {
    "current_page": 1,
    "from": 1,
    "last_page": 3,
    "path": "https://app.recruitsome.com/api/v1/candidates",
    "per_page": 20,
    "to": 20,
    "total": 52
  }
}

Voorbeeldverzoek

Basisverzoek

curl -X GET "https://app.recruitsome.com/api/v1/candidates?user_id=1" \
  -H "Authorization: Bearer YOUR_API_KEY"
const response = await fetch(
  'https://app.recruitsome.com/api/v1/candidates?user_id=1',
  {
    headers: {
      'Authorization': 'Bearer YOUR_API_KEY'
    }
  }
);

const data = await response.json();
console.log(data);
import requests

response = requests.get(
    'https://app.recruitsome.com/api/v1/candidates',
    params={'user_id': 1},
    headers={'Authorization': 'Bearer YOUR_API_KEY'}
)

data = response.json()
print(data)

Kandidaat zoeken op e-mailadres

curl -X GET "https://app.recruitsome.com/api/v1/candidates?user_id=1&[email protected]" \
  -H "Authorization: Bearer YOUR_API_KEY"
const response = await fetch(
  'https://app.recruitsome.com/api/v1/candidates?user_id=1&[email protected]',
  {
    headers: {
      'Authorization': 'Bearer YOUR_API_KEY'
    }
  }
);
response = requests.get(
    'https://app.recruitsome.com/api/v1/candidates',
    params={
        'user_id': 1,
        'email': '[email protected]'
    },
    headers={'Authorization': 'Bearer YOUR_API_KEY'}
)

Met filters

Bash
curl -X GET "https://app.recruitsome.com/api/v1/candidates?user_id=1&search=developer&status=active_mediation&sort=last_name&sort_direction=asc" \
  -H "Authorization: Bearer YOUR_API_KEY"

Voorbeeldrespons

JSON
{
  "data": [
    {
      "id": 42,
      "slug": "john-doe-amsterdam",
      "first_name": "John",
      "middle_name": null,
      "last_name": "Doe",
      "full_name": "John Doe",
      "email": "[email protected]",
      "mobile_phone": "+31 6 12345678",
      "fixed_phone": null,
      "status": {
        "value": "potential",
        "label": "Potential Candidate"
      },
      "locality": "Amsterdam",
      "country_code": "NL",
      "linkedin_url": "https://linkedin.com/in/johndoe",
      "profile_completeness": 75,
      "avatar": {
        "small": "https://app.recruitsome.com/media/candidates/42/conversions/avatar-thumb.jpg",
        "medium": "https://app.recruitsome.com/media/candidates/42/conversions/avatar-medium.jpg",
        "large": "https://app.recruitsome.com/media/candidates/42/conversions/avatar-large.jpg"
      },
      "created_at": "2024-01-15T09:00:00+00:00",
      "updated_at": "2024-01-20T14:30:00+00:00"
    }
  ],
  "links": {
    "first": "https://app.recruitsome.com/api/v1/candidates?page=1",
    "last": "https://app.recruitsome.com/api/v1/candidates?page=1",
    "prev": null,
    "next": null
  },
  "meta": {
    "current_page": 1,
    "from": 1,
    "last_page": 1,
    "path": "https://app.recruitsome.com/api/v1/candidates",
    "per_page": 20,
    "to": 1,
    "total": 1
  }
}

Fouten

StatusWanneerBody
422user_id ontbreekt of verwijst niet naar een bestaande gebruiker{"message": "The given data was invalid.", "errors": {"user_id": ["The user id field is required."]}}
422Het email-filter is geen geldig e-mailadres, of search overschrijdt 255 tekensDezelfde structuur, met het betreffende veld in errors
401Ontbrekende of ongeldige API sleutel{"message": "Unauthenticated."}
403De API sleutel mist het candidates:read-bereik{"message": "This API key does not have the required permission: candidates:read", "error": "INSUFFICIENT_SCOPE", "required_scope": "candidates:read"}

Opmerkingen

  • De parameter user_id is verplicht. Kandidaten zijn gekoppeld aan de repository van een specifieke gebruiker.
  • Alleen kandidaten die aan de opgegeven gebruiker zijn gekoppeld, worden geretourneerd
  • Zacht verwijderde kandidaten worden automatisch uitgesloten
  • Het filter email zoekt op exacte overeenkomst. Gebruik search voor gedeeltelijke overeenkomsten.
  • De parameter search voert een hoofdletterongevoelige, gedeeltelijke zoekopdracht uit op voornaam, achternaam en e-mailadres
  • mobile_phone wordt opgemaakt voor weergave geretourneerd; fixed_phone wordt als onbewerkte E.164-string geretourneerd
  • Avatar-URL's kunnen null zijn als de kandidaat geen profielfoto heeft geüpload