Job posting API
Post jobs to Jobze programmatically from your ATS or internal tools. Jobs posted via the API are identical to jobs posted through the form: same 60-day listings, same dashboard, applicants and analytics. API access is a paid add-on; see pricing.
Authentication
Create an API key from your dashboard and send it as a bearer token. Keys are shown once at creation, stored hashed, and can be revoked at any time.
Authorization: Bearer jbz_YOUR_API_KEYCreate a job
POST /api/v1/jobs with a JSON body. Returns 201 with the new listing on success.
curl -X POST https://jobze.co.uk/api/v1/jobs \
-H "Authorization: Bearer jbz_YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"title": "Senior Software Engineer",
"company_name": "Acme Ltd",
"location": "London, UK",
"category": "software_engineering",
"work_mode": "hybrid",
"employment_type": "full_time",
"salary_min": 80000,
"salary_max": 95000,
"apply_email": "careers@acme.com",
"company_website": "acme.com",
"screening_questions": ["Do you have the right to work in the UK?"],
"description": "We are hiring a senior engineer to join our platform team..."
}'Response
{
"id": "3f9c1a2e-...",
"slug": "senior-software-engineer-acme-ltd-x7k2p",
"status": "published",
"url": "https://jobze.co.uk/jobs/senior-software-engineer-acme-ltd-x7k2p",
"expires_at": "2026-10-11T09:30:00.000Z"
}Fields
Required fields apply to published jobs. Drafts ("status": "draft") only need a title.
| Field | Type | Required | Notes |
|---|---|---|---|
title | string | Yes | At least 4 characters. |
company_name | string | Yes | Shown on the listing. |
location | string | Yes | e.g. "London, UK". |
description | string | Yes | At least 100 characters. Plain text or light markdown (headings, bullets, bold). |
category | string | Yes | One of the category slugs listed below. |
work_mode | string | Yes | remote, hybrid, onsite. |
employment_type | string | Yes | full_time, part_time, contract, internship. |
apply_url | string | One of these two | Link to your careers page or ATS. Bare domains are accepted. |
apply_email | string | One of these two | Candidates apply on Jobze with a CV and we forward applications to this address. |
company_website | string | No | Bare domains are accepted. |
salary_min | number | No | Annual, GBP. |
salary_max | number | No | Annual, GBP. Must be at least salary_min. |
bonus | string | No | e.g. "10% annual bonus + equity". |
screening_questions | string[] | No | Up to 5 pre-qualifying questions (300 characters each). Candidates must answer before applying. |
status | string | No | Set to "draft" to save without publishing. Defaults to published. |
Category slugs
Errors
| Status | Meaning |
|---|---|
| 400 | Validation failed. The error message says which field to fix. |
| 401 | Missing, malformed, invalid or revoked API key. |
| 403 | Your account doesn't have API access. |
| 429 | Rate limit exceeded: 30 requests per minute per key. |
| 500 | Something went wrong on our side. Safe to retry. |
Error responses are JSON: {"error": "Please enter a job title."}
Rate limits
30 requests per minute per key. Every request is logged and visible to you for auditing. Need more? Email hello@jobze.co.uk.