MENU navbar-image

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"
    }
}
 

Request      

GET content/v1/company

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Accept-Language        

Example: en

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"
        }
    ]
}
 

Request      

GET content/v1/locations

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Accept-Language        

Example: en

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"
    }
}
 

Request      

POST content/v1/applications

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Accept-Language        

Example: en

Body Parameters

data   object     

The general data object

type   string     

The type of the resource. Example: application

attributes   object     

The attributes regarding the resource

job_id   integer     

ID of the job. Example: 18

first_name   string  optional    

required. Example: John

last_name   string  optional    

required. Example: Doe

email   string     

Example: john.doe@example.com

photo   integer  optional    

[This is an example field, these fields are dependent on the form fields from the job] Queued File ID (Refer to storing Queued Files). Example: 15

phone   string  optional    

[This is an example field, these fields are dependent on the form fields from the job]. Example: a

motivation   string  optional    

[This is an example field, these fields are dependent on the form fields from the job]. Example: et

curriculum_vitae   integer  optional    

[This is an example field, these fields are dependent on the form fields from the job] Queued File ID (Refer to storing Queued Files). Example: 3

education   object[]  optional    
title   string     

Example: sed

institution   string     

Example: assumenda

short_description   string     

Example: nulla

date_from   string     

Example: ut

date_to   string     

Example: eos

experience   object[]  optional    
company   string     

Example: sunt

job_title   string     

Example: vitae

job_description   string     

Example: aliquam

tasks   string     

Example: ea

date_from   string     

Example: omnis

date_to   string     

Example: sunt

disclaimer   boolean     

Confirmation of our disclaimer. Example: true

referrer   string  optional    

Website / URL where the user came from to find the application. Example: https://google.com

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\"."
}
 

Request      

GET content/v1/jobs

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Accept-Language        

Example: en

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\"."
}
 

Request      

GET content/v1/jobs/unpublished

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Accept-Language        

Example: en

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\"."
}
 

Request      

GET content/v1/jobs/unpublished/{jobId}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Accept-Language        

Example: en

URL Parameters

jobId   integer     

The ID of the job. Example: 1437371120

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\"."
}
 

Request      

GET content/v1/jobs/{jobId}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Accept-Language        

Example: en

URL Parameters

jobId   integer     

Example: 4

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"
    }
}
 

Request      

POST content/v1/file

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: multipart/form-data

Accept        

Example: application/json

Accept-Language        

Example: en

Body Parameters

file   file     

Example: /tmp/phpspLjEL

type   string     

Type of the provided file. Example: image