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
| Field | Type | Description |
|---|---|---|
| is_test | boolean | true for dashboard-triggered test deliveries; false for live job deliveries. |
| is_fte | boolean | true when the job is classified as a full-time / new grad role. |
| is_intern | boolean | true when the job is classified as an internship or co-op role. |
| company_name | string | Company name for the job listing (for example, "Stripe"). |
| title | string | Job title as Freshbatch received it (for example, "Software Engineer Intern"). |
| date_posted | number | Integer timestamp for when the job was posted. |
| url | string | Canonical job posting URL. |
| source | string | Source identifier for where Freshbatch found the listing. |
| degrees | string[] | Degree requirements or target degree labels, if provided by the source. |
| sponsorship | string | Sponsorship status text from the source data. |
| locations | string[] | One or more locations attached to the listing. |
| category | string | Freshbatch 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
2xxquickly. 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: trueevents 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