Skip to main content

API Reference

NL EN

Updated June 15, 2026

Complete reference for all Recruitsome API endpoints. Each entry links to its full article with examples and response bodies.

Base URL

Code
https://app.recruitsome.com/api/v1

Authentication

All endpoints require Bearer token authentication:

Code
Authorization: Bearer YOUR_API_KEY

Every endpoint (except the health check) also requires a specific scope on your API key — listed per endpoint below. A key without the scope gets a 403 with the INSUFFICIENT_SCOPE error code.

Endpoints

Health Check

GET/health

Verify API authentication and tenant context

Scope: none — any valid API key

Response:

JSON
{
  "status": "authenticated",
  "tenant": "tenant-id"
}

List Published Vacancies

GET/vacancies

Retrieve a paginated list of published vacancies

Scope: vacancies:read

Query Parameters:

ParameterTypeDefaultDescription
pageinteger1Page number
per_pageinteger20Items per page (max: 100)
languagestring-Filter by language code
location_idinteger-Filter by location ID
department_idinteger-Filter by department ID
company_location_id[]array-Filter by company location IDs
searchstring-Search in title and summary
job_types[]array-Filter by job type IDs
experience_levels[]array-Filter by experience level IDs
education_levels[]array-Filter by education level IDs
tags[]array-Filter by tag IDs (main tags cascade to include sub-tags)
sortstringpublished_atSort field: published_at, title, created_at
sort_directionstringdescSort direction: asc or desc
includestring-Include additional data: facets
include_mediabooleanfalseInclude header image URLs
include_compensationbooleanfalseInclude compensation data
include_company_namebooleanfalseInclude the company name

Response: Paginated list of vacancies — see List Published Vacancies


Get Vacancy Facets

GET/vacancies/facets

Get filter facets with counts for vacancy publications

Scope: vacancies:read

Query Parameters: Same filter parameters as List Vacancies (applied before counting)

Response: Facet counts for locations, departments, job types, experience levels, education levels, tags, and languages — see Get Vacancy Facets


Get Vacancy Details

GET/vacancies/{slug}

Retrieve complete information for a specific vacancy

Scope: vacancies:read

Path Parameters:

ParameterTypeRequiredDescription
slugstringYesURL-friendly vacancy identifier

Query Parameters:

ParameterTypeDefaultDescription
languagestring-Set response locale for translated labels
include_compensationbooleanfalseInclude compensation data
include_mediabooleanfalseInclude header image URLs
include_company_namebooleanfalseInclude the company name

Response: Complete vacancy details including full content — see Get Vacancy Details


Report Vacancy URL

POST/vacancies/{slug}/canonical-url

Report the canonical public URL your website assigned to a vacancy

Scope: vacancies:write

Path Parameters:

ParameterTypeRequiredDescription
slugstringYesThe vacancy's publication_slug

Body:

FieldTypeRequiredDescription
urlstringYesThe full canonical URL on your website. Must be https:// (max 2048 chars) and on your career website domain

Response: Confirmation with the stored URL. Reported URLs take precedence over the configured URL pattern — see Report Vacancy URL


Submit Application

POST/applications

Submit a job application for a published vacancy

Scope: applications:write — limited to 10 requests per minute

Body:

FieldTypeRequiredDescription
vacancystring or integerYesThe vacancy slug or ID
candidateobjectYesCandidate details: given_name, family_name, and email are required; linkedin_url, mobile_phone, and fixed_phone are optional
documentsobjectNoOptional resume, cover_letter, and up to 5 additional documents (base64 encoded)
privacy_policy_acceptedbooleanNoWhether the candidate accepted your privacy policy
trackingobjectNoOptional ip_address, user_agent, and referrer

Response: 201 with the created application — see Submit Application


List Locations

GET/locations

Retrieve a paginated list of office locations

Scope: locations:read

Query Parameters:

ParameterTypeDefaultDescription
pageinteger1Page number
per_pageinteger20Items per page (max: 100)
languagestring-Set response locale for country names
country_codestring-Filter by country code
searchstring-Search in name, city, and address
sortstringnameSort field: name, locality, created_at
sort_directionstringascSort direction: asc or desc
include_coordinatesbooleanfalseInclude latitude/longitude
include_vacancy_countbooleanfalseInclude vacancy count

Response: Paginated list of locations with addresses — see List Locations


Get Location Details

GET/locations/{slug}

Retrieve complete information for a specific location

Scope: locations:read

Path Parameters:

ParameterTypeRequiredDescription
slugstringYesURL-friendly location identifier

Query Parameters:

ParameterTypeDefaultDescription
languagestring-Set response locale for country names
include_coordinatesbooleanfalseInclude latitude/longitude
include_vacancy_countbooleanfalseInclude vacancy count

Response: Complete location details — see Get Location Details


List Team Members

GET/team

Retrieve a paginated list of employed team members

Scope: team:read

Query Parameters:

ParameterTypeDefaultDescription
pageinteger1Page number
per_pageinteger20Items per page (max: 100)
searchstring-Search in name, email, job title
job_titlestring-Filter by job title
rolestring-Filter by role name
has_avatarbooleanfalseOnly members with avatars
sortstringgiven_nameSort field: given_name, family_name, job_title
sort_directionstringascSort direction: asc or desc
include_phonebooleanfalseInclude phone number
include_rolebooleanfalseInclude role label

Response: Paginated list of team members with avatars — see List Team Members


Get Team Member Details

GET/team/{id}

Retrieve complete information for a specific team member

Scope: team:read

Path Parameters:

ParameterTypeRequiredDescription
idintegerYesTeam member ID

Query Parameters:

ParameterTypeDefaultDescription
include_phonebooleanfalseInclude phone number
include_rolebooleanfalseInclude role label

Response: Complete team member details — see Get Team Member Details


List Candidates

GET/candidates

Retrieve a paginated list of candidates associated with a user

Scope: candidates:read

Query Parameters:

ParameterTypeDefaultDescription
user_idintegerrequiredOnly candidates associated with this user are returned
emailstring-Filter by email (exact match)
searchstring-Search in first name, last name, and email
statusstring-Filter by candidate status
sortstringcreated_atSort field: created_at, first_name, last_name, email
sort_directionstringdescSort direction: asc or desc
per_pageinteger20Items per page (max: 100)

Response: Paginated list of candidates — see List Candidates


Create Candidate

POST/candidates

Create a candidate via resume upload (asynchronous)

Scope: candidates:write — limited to 10 requests per minute

Body:

FieldTypeRequiredDescription
user_idintegerYesThe user to associate the candidate with
resumeobjectYesThe resume: filename, content (base64 encoded), and mime_type (PDF, DOC, or DOCX, max 10MB)
create_intakebooleanNoAlso create an intake for the candidate

Response: 202 with a processing_id — the candidate is created in the background from the resume. See Create Candidate


List Articles

GET/articles

Retrieve a paginated list of published articles

Scope: articles:read

Query Parameters:

ParameterTypeDefaultDescription
pageinteger1Page number
per_pageinteger20Items per page (max: 100)
languagestring-Filter by language code
typestring-Filter by type: news, company_update, event, blog_post
searchstring-Search in title and excerpt
tags[]array-Filter by tag IDs (main tags cascade to include sub-tags)
is_featuredboolean-Filter featured articles only
sortstringpublished_atSort field: published_at, title, created_at, views_count
sort_directionstringdescSort direction: asc or desc
include_mediabooleanfalseInclude featured image URLs

Response: Paginated list of articles — see List Articles


Get Article Details

GET/articles/{slug}

Retrieve complete information for a specific article

Scope: articles:read

Path Parameters:

ParameterTypeRequiredDescription
slugstringYesURL-friendly article content identifier

Query Parameters:

ParameterTypeDefaultDescription
languagestring-Set response locale
include_mediabooleanfalseInclude featured image URLs

Response: Complete article details including full body HTML and SEO metadata — see Get Article Details


Status Codes

CodeDescription
200Success
201Created (application submitted)
202Accepted (candidate resume queued for processing)
400Bad Request (business rule failed, e.g. vacancy closed)
401Unauthorized
403Forbidden (missing scope)
404Not Found
422Validation Error
429Rate Limited
500Server Error

Rate Limits

  • POST /vacancies/{slug}/canonical-url: 60 requests per minute per API key
  • POST /applications and POST /candidates: 10 requests per minute per API key
  • Read endpoints have no fixed per-key limit today — keep your request rate modest; limits may be introduced later
  • Rate-limited endpoints include X-RateLimit-Limit and X-RateLimit-Remaining headers in their responses

Support

Questions? Email us at [email protected], or browse the rest of the Help Center.