Introduction
Hello fellow developer,
This is where you'll find the documentation for the Jobtoolz Content API.
Authenticating requests
To authenticate requests, include an Authorization header with the value "Bearer {YOUR_AUTH_KEY}".
All authenticated endpoints are marked with a requires authentication badge in the documentation below.
You can find your API key in the application settings.
Employer branding
Retrieve the current company.
requires authentication
Example request:
curl --request GET \
--get "https://api.jobtoolz.com/content/v1/company" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "Accept-Language: en"const url = new URL(
"https://api.jobtoolz.com/content/v1/company"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
"Accept-Language": "en",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.jobtoolz.com/content/v1/company';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Accept-Language' => 'en',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));Example response (200):
{
"id": null,
"type": "company",
"attributes": {
"name": "Grégoire",
"email": "tran.arthur@example.org",
"active": true,
"subdomain": "gregoire",
"domainalias": null,
"domainalias_verified": null,
"website": "https://example.org",
"jobsite_url": "http://gregoire.jobtoolz.com",
"logo_original_name": null,
"logo_url": null,
"social": {
"facebook": "https://www.facebook.com",
"linkedin": "https://www.linkedin.com",
"twitter": "https://twitter.com",
"instagram": "https://instagram.com"
},
"description": {
"nl": "<p>En zij telde ze hem. Uilenspiegel toog er henen, ging zoo.</p><p>Sidderend stak zij al die dwaallichtjes, die, gonzend als krekelen, zeiden: Kijkt toe.</p>",
"fr": "<p>Dormouse shall!' they both cried. 'Wake up, Dormouse!'.</p><p>PRECIOUS nose'; as an explanation. 'Oh, you're sure to happen,'.</p><p>March Hare went on. 'Would you like to be treated with respect. 'Cheshire Puss,' she began, in a twinkling! Half-past one, time for.</p>",
"en": "<p>Alice, as the large birds complained that they must needs come wriggling down from the change: and Alice could.</p><p>Alice. 'I've so often read in the after-time, be herself a grown.</p><p>I'm mad. You're mad.' 'How do you know that Cheshire cats always grinned; in fact, I didn't know how to set about.</p><p>By the use of repeating all that stuff,' the Mock Turtle in.</p>"
}
},
"relationships": [],
"links": {
"self": "https://api.jobtoolz.com/content/v1/company"
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Retrieve a list of locations.
requires authentication
Example request:
curl --request GET \
--get "https://api.jobtoolz.com/content/v1/locations" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "Accept-Language: en"const url = new URL(
"https://api.jobtoolz.com/content/v1/locations"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
"Accept-Language": "en",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.jobtoolz.com/content/v1/locations';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Accept-Language' => 'en',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));Example response (200):
{
"data": [
{
"id": null,
"type": "location",
"attributes": {
"street": "Pironpad 86",
"postal_code": "3200",
"city": "Châtelet",
"country": "BE",
"phone": "0719 982547",
"email": "sacha.diallo@messaoudi.be",
"lat": -21.589243,
"lng": 32.874606,
"created_at": null,
"updated_at": null
}
},
{
"id": null,
"type": "location",
"attributes": {
"street": "Jansendreef 39",
"postal_code": "7811",
"city": "Chiny",
"country": "BE",
"phone": "019 67 72 19",
"email": "kobe.vervoort@hardy.be",
"lat": -79.926251,
"lng": -77.25144,
"created_at": null,
"updated_at": null
}
}
],
"links": [
{
"href": "http://api.jobtoolz.com/content/v1/locations",
"rel": "self",
"method": "GET"
}
]
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Applications
Create a new application
requires authentication
Example request:
curl --request POST \
"https://api.jobtoolz.com/content/v1/applications" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "Accept-Language: en" \
--data "{
\"data\": {
\"type\": \"application\",
\"attributes\": {
\"job_id\": 18,
\"first_name\": \"John\",
\"last_name\": \"Doe\",
\"email\": \"john.doe@example.com\",
\"photo\": 15,
\"phone\": \"a\",
\"motivation\": \"et\",
\"curriculum_vitae\": 3,
\"education\": [
{
\"title\": \"sed\",
\"institution\": \"assumenda\",
\"short_description\": \"nulla\",
\"date_from\": \"ut\",
\"date_to\": \"eos\"
}
],
\"experience\": [
{
\"company\": \"sunt\",
\"job_title\": \"vitae\",
\"job_description\": \"aliquam\",
\"tasks\": \"ea\",
\"date_from\": \"omnis\",
\"date_to\": \"sunt\"
}
],
\"disclaimer\": true,
\"referrer\": \"https:\\/\\/google.com\"
}
}
}"
const url = new URL(
"https://api.jobtoolz.com/content/v1/applications"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
"Accept-Language": "en",
};
let body = {
"data": {
"type": "application",
"attributes": {
"job_id": 18,
"first_name": "John",
"last_name": "Doe",
"email": "john.doe@example.com",
"photo": 15,
"phone": "a",
"motivation": "et",
"curriculum_vitae": 3,
"education": [
{
"title": "sed",
"institution": "assumenda",
"short_description": "nulla",
"date_from": "ut",
"date_to": "eos"
}
],
"experience": [
{
"company": "sunt",
"job_title": "vitae",
"job_description": "aliquam",
"tasks": "ea",
"date_from": "omnis",
"date_to": "sunt"
}
],
"disclaimer": true,
"referrer": "https:\/\/google.com"
}
}
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.jobtoolz.com/content/v1/applications';
$response = $client->post(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Accept-Language' => 'en',
],
'json' => [
'data' => [
'type' => 'application',
'attributes' => [
'job_id' => 18,
'first_name' => 'John',
'last_name' => 'Doe',
'email' => 'john.doe@example.com',
'photo' => 15,
'phone' => 'a',
'motivation' => 'et',
'curriculum_vitae' => 3,
'education' => [
[
'title' => 'sed',
'institution' => 'assumenda',
'short_description' => 'nulla',
'date_from' => 'ut',
'date_to' => 'eos',
],
],
'experience' => [
[
'company' => 'sunt',
'job_title' => 'vitae',
'job_description' => 'aliquam',
'tasks' => 'ea',
'date_from' => 'omnis',
'date_to' => 'sunt',
],
],
'disclaimer' => true,
'referrer' => 'https://google.com',
],
],
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));Example response (200):
{
"id": 1437371120,
"type": "applications",
"attributes": {
"id": 1437371120,
"created_at": "2020-07-17T07:30:21.000000Z",
"updated_at": "2020-07-17T07:30:21.000000Z",
"first_name": "John",
"last_name": "Doe",
"email": "john.doe@example.com",
"referrer": "https://google.com"
},
"links": {
"self": "https://api.jobtoolz.com/content/v1/applications/1437371120"
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Jobs
Retrieve a list of jobs.
requires authentication
Example request:
curl --request GET \
--get "https://api.jobtoolz.com/content/v1/jobs" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "Accept-Language: en"const url = new URL(
"https://api.jobtoolz.com/content/v1/jobs"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
"Accept-Language": "en",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.jobtoolz.com/content/v1/jobs';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Accept-Language' => 'en',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));Example response (401):
Show headers
cache-control: no-cache, private
content-type: application/json
set-cookie: jobtoolz_session=eJZxPk0ZN10PPeBp3WXMzIKbFjIohj53xPHLkvsr; expires=Mon, 03 Aug 2026 11:17:51 GMT; Max-Age=7200; path=/; domain=.jobtoolz.test; httponly; samesite=lax
{
"message": "You must be authenticated to access \"/content/v1/jobs\"."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Retrieve a list of unpublished jobs.
requires authentication
Returns the jobs that have not been published, ordered the same way as the regular job list. Scheduled jobs that are not live yet are considered published and are not part of this list.
Unlike the regular job list, this endpoint does not filter on the languages that are activated for the jobsite: a job that was never published usually has none. Fields are returned in the requested language where a translation exists, and fall back to the default language of the jobsite otherwise, so some may be empty.
The url and apply_url attributes are always null: an unpublished job has no page on the jobsite.
This endpoint requires the raw API key of the company. The encrypted key used by the jobsites is refused with a 403.
Example request:
curl --request GET \
--get "https://api.jobtoolz.com/content/v1/jobs/unpublished" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "Accept-Language: en"const url = new URL(
"https://api.jobtoolz.com/content/v1/jobs/unpublished"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
"Accept-Language": "en",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.jobtoolz.com/content/v1/jobs/unpublished';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Accept-Language' => 'en',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));Example response (401):
Show headers
cache-control: no-cache, private
content-type: application/json
set-cookie: jobtoolz_session=DClaK4FtugmQTzjC4FBu1xRNh1J0kKh8kSjRXi3M; expires=Mon, 03 Aug 2026 11:17:51 GMT; Max-Age=7200; path=/; domain=.jobtoolz.test; httponly; samesite=lax
{
"message": "You must be authenticated to access \"/content/v1/jobs/unpublished\"."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Retrieve an unpublished job.
requires authentication
Returns a 404 when the job is published, archived, or belongs to another company.
This endpoint requires the raw API key of the company. The encrypted key used by the jobsites is refused with a 403.
Example request:
curl --request GET \
--get "https://api.jobtoolz.com/content/v1/jobs/unpublished/1437371120" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "Accept-Language: en"const url = new URL(
"https://api.jobtoolz.com/content/v1/jobs/unpublished/1437371120"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
"Accept-Language": "en",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.jobtoolz.com/content/v1/jobs/unpublished/1437371120';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Accept-Language' => 'en',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));Example response (401):
Show headers
cache-control: no-cache, private
content-type: application/json
set-cookie: jobtoolz_session=0XSXsFomdS4Bv5Ew2HUlmLW6Ui45WeIg1hvSTYk4; expires=Mon, 03 Aug 2026 11:17:51 GMT; Max-Age=7200; path=/; domain=.jobtoolz.test; httponly; samesite=lax
{
"message": "You must be authenticated to access \"/content/v1/jobs/unpublished/1437371120\"."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Retrieve a job.
requires authentication
Example request:
curl --request GET \
--get "https://api.jobtoolz.com/content/v1/jobs/4" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "Accept-Language: en"const url = new URL(
"https://api.jobtoolz.com/content/v1/jobs/4"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
"Accept-Language": "en",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.jobtoolz.com/content/v1/jobs/4';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Accept-Language' => 'en',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));Example response (401):
Show headers
cache-control: no-cache, private
content-type: application/json
set-cookie: jobtoolz_session=D3IBh7qM0L8b8bnEE8ExoEe0mnKQWeB8l5pFGrt8; expires=Mon, 03 Aug 2026 11:17:51 GMT; Max-Age=7200; path=/; domain=.jobtoolz.test; httponly; samesite=lax
{
"message": "You must be authenticated to access \"/content/v1/jobs/4\"."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Queued files
Create a new queued file
requires authentication
Example request:
curl --request POST \
"https://api.jobtoolz.com/content/v1/file" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: multipart/form-data" \
--header "Accept: application/json" \
--header "Accept-Language: en" \
--form "type=image"\
--form "file=@/tmp/phpspLjEL" const url = new URL(
"https://api.jobtoolz.com/content/v1/file"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "multipart/form-data",
"Accept": "application/json",
"Accept-Language": "en",
};
const body = new FormData();
body.append('type', 'image');
body.append('file', document.querySelector('input[name="file"]').files[0]);
fetch(url, {
method: "POST",
headers,
body,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.jobtoolz.com/content/v1/file';
$response = $client->post(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'multipart/form-data',
'Accept' => 'application/json',
'Accept-Language' => 'en',
],
'multipart' => [
[
'name' => 'type',
'contents' => 'image'
],
[
'name' => 'file',
'contents' => fopen('/tmp/phpspLjEL', 'r')
],
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));Example response (200):
{
"id": 1042013164,
"type": "file",
"attributes": {
"type": "document",
"name_original": "73bad7f2-e16b-3375-b3ab-38487ca0c329.jpg"
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.