reference

Payload Reference

Every delivery is a POST request with Content-Type: application/json and a webhook-signature header. The body is a transport wrapper that contains a data array of one or more job objects serialized from Freshbatch's runtime JobInformation.to_json() contract.

Request structure

POST {your-endpoint}
Content-Type: application/json
webhook-signature: <hmac-sha256-hex>

{ "data": [ ...JobObject ] }

Freshbatch signs the contents of data, then sends that same array inside the outer JSON object.

JobObject fields

FieldTypeDescription
is_testbooleantrue for dashboard-triggered test deliveries; false for live job deliveries.
is_ftebooleantrue when the job is classified as a full-time / new grad role.
is_internbooleantrue when the job is classified as an internship or co-op role.
company_namestringCompany name for the job listing (for example, "Stripe").
titlestringJob title as Freshbatch received it (for example, "Software Engineer Intern").
date_postednumberInteger timestamp for when the job was posted.
urlstringCanonical job posting URL.
sourcestringSource identifier for where Freshbatch found the listing.
degreesstring[]Degree requirements or target degree labels, if provided by the source.
sponsorshipstringSponsorship status text from the source data.
locationsstring[]One or more locations attached to the listing.
categorystringFreshbatch job category slug for the listing.

Example payload

{
  "data": [
    {
      "is_test": true,
      "is_fte": true,
      "is_intern": false,
      "company_name": "Example Company",
      "title": "Software Engineer, New Grad",
      "date_posted": 1700000000,
      "url": "https://example.com/jobs/software-engineer-new-grad",
      "source": "example-source",
      "degrees": [
        "bs",
        "ms"
      ],
      "sponsorship": "does not sponsor",
      "locations": [
        "Remote",
        "San Francisco, CA"
      ],
      "category": "software-engineering"
    }
  ]
}

Best practices

  • — Return 2xx quickly. Process jobs asynchronously if needed.
  • — Iterate over every item in body.data; a single delivery can contain more than one job.
  • — Handle duplicate is_test: true events safely — you may send multiple tests during setup.
  • — Log or persist the full job object if you need a forensic trail. Avoid lossy field remapping before verification.

The webhook-signature header is described in detail in Signature Verification