Jobs

Endpoints for listing, creating, updating, and deleting job listings.

Overview

The Jobs API lets you manage job listings programmatically. Jobs are stored as WordPress custom post types (job_listing), giving you full SEO and WPML compatibility.

List all jobs

GET/wp-json/recruiting/v1/jobs

Query parameters

ParameterTypeDescription
statusstringdraft, publish, archived (default: publish)
per_pageintResults per page (default: 10, max: 100)
pageintPage number
searchstringFull-text search in title and description
locationstringFilter by location
employment_typestringfulltime, parttime, minijob, temporary
orderbystringdate, title, modified (default: date)
orderstringasc, desc (default: desc)

Response

{
  "data": [
    {
      "id": 123,
      "title": "Pflegefachkraft (m/w/d)",
      "slug": "pflegefachkraft-mwd",
      "status": "publish",
      "description": "<p>Wir suchen...</p>",
      "description_plain": "Wir suchen...",
      "excerpt": "Wir suchen eine engagierte Pflegefachkraft...",
      "location": {
        "city": "Berlin",
        "postal_code": "10115",
        "country": "DE",
        "remote": false
      },
      "employment_type": "fulltime",
      "salary": {
        "min": 3200,
        "max": 4000,
        "currency": "EUR",
        "period": "month",
        "display": "3.200 € - 4.000 € / Monat"
      },
      "contact": {
        "name": "Maria Schmidt",
        "email": "[email protected]",
        "phone": "+49 30 123456"
      },
      "application_deadline": "2025-03-20",
      "start_date": "2025-04-01",
      "categories": ["Pflege", "Gesundheit"],
      "tags": ["Examiniert", "Schichtdienst"],
      "application_count": 12,
      "created_at": "2025-01-15T10:30:00Z",
      "updated_at": "2025-01-18T14:20:00Z",
      "published_at": "2025-01-15T12:00:00Z",
      "url": "https://example.com/jobs/pflegefachkraft-mwd/",
      "apply_url": "https://example.com/jobs/pflegefachkraft-mwd/#apply"
    }
  ],
  "meta": {
    "total": 45,
    "per_page": 10,
    "current_page": 1,
    "total_pages": 5
  }
}

Get a single job

GET/wp-json/recruiting/v1/jobs/{id}

Returns a single job object with the same structure as the list response.

Create a job

POST/wp-json/recruiting/v1/jobs

Request body

{
  "title": "Pflegefachkraft (m/w/d)",
  "description": "<p>Ihre Aufgaben...</p>",
  "status": "draft",
  "location": {
    "city": "Berlin",
    "postal_code": "10115",
    "country": "DE"
  },
  "employment_type": "fulltime",
  "salary": {
    "min": 3200,
    "max": 4000,
    "currency": "EUR",
    "period": "month"
  },
  "application_deadline": "2025-03-20",
  "categories": ["Pflege"],
  "custom_fields": {
    "department": "Station 3",
    "required_experience": "2 Jahre"
  }
}

Response

Returns the created job object with the assigned id. Status code: 201 Created.

Update a job

PUT/wp-json/recruiting/v1/jobs/{id}

Send only the fields you want to change. All other fields remain unchanged.

Request body

{
  "status": "publish",
  "salary": {
    "min": 3400,
    "max": 4200
  }
}

Response

Returns the updated job object.

Delete a job

DELETE/wp-json/recruiting/v1/jobs/{id}

Query parameters

ParameterTypeDescription
forcebooltrue = permanently delete, false = archive (default)

By default, jobs are archived rather than deleted. Pass force=true to permanently remove a job and all associated data.