Webhooks

Webhooks

When a candidate applies for a job, Jooble immediately sends the candidate data to your endpoint via a webhook. To enable webhooks, provide Jooble with your endpoint URL and the HTTP method to use (GET, POST, or PUT).

Request Format

Each webhook request includes the following headers:

HeaderValue
Content-Typeapplication/json
X-Webhook-SignatureHMAC-SHA256 signature: t={timestamp},v1={signature}

Payload

The request body is a JSON object with three top-level fields: candidate, application, and attachments.

candidate

Candidate personal information.

FieldTypeRequiredDescription
first_namestringrequiredFirst name
last_namestringrequiredLast name
email_addressstring?optionalEmail address. Defaults to user_without_email@noemail.com if unavailable
phone_numberstring?optionalPhone number. Empty string "" if unavailable
genderstring?optionalGender in uppercase (e.g. "MALE", "FEMALE")
location.citystring?optionalCity or region
location.countrystringrequiredISO country code in uppercase (e.g. "UA", "PL")
desiredSentinelsstring[]?optionalProfessions the candidate is looking for, as canonical names in the language of the candidate’s profile.

application

Information about the job application.

FieldTypeRequiredDescription
job_idstringrequiredJob identifier
ats_job_idstring?optionalThe job identifier from your ATS. Included only when the job has an ats_job_id; omitted from JSON otherwise
sourcestring?optionalApplication source. Omitted from JSON when null

attachments

A list of attached files (typically the candidate’s CV).

FieldTypeRequiredDescription
namestringrequiredFile name (e.g. "resume.pdf")
datastringrequiredBase64-encoded file content
typestringrequiredAttachment type. Currently always "CV"
content_typestringrequiredMIME type (e.g. "application/pdf", "application/msword")

Example Payload

{
  "candidate": {
    "first_name": "John",
    "last_name": "Doe",
    "email_address": "john.doe@example.com",
    "phone_number": "+380501234567",
    "gender": "MALE",
    "location": {
      "city": "Kyiv",
      "country": "UA"
    },
    "desiredSentinels": ["Accountant", "Cashier"]
  },
  "application": {
    "job_id": "12345",
    "ats_job_id": "ats-67890",
    "source": "jooble"
  },
  "attachments": [
    {
      "name": "resume.pdf",
      "data": "JVBERi0xLjQKMSAwIG9iago8P...",
      "type": "CV",
      "content_type": "application/pdf"
    }
  ]
}