ShopCreate Job Booking

Create Job Booking

Publish a job on one or more talent channels. job_bookings is an array, and each object is one booking. Every booking needs job, product, and provider_product. Use id and provider_product from List Products. You can also send job fields when the booking should differ from the job. The booking stores the fields you send, so include the job's current value for every field the booking should keep. company_billing_detail must be an active billing detail of this company. A job that already has an active booking on the same talent channel is rejected. Campaign products are rejected. The API key must belong to a user, and the transaction stores that user on auth_user_id. See Publish a Job Ad.

curl -X POST "https://api.getkini.com/job_bookings/" \
  -H "Content-Type: application/json" \
  -H "Company-Id: 1" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -d '{
  "company_billing_detail": 12,
  "job_bookings": [
    {
      "job": 123456,
      "product": 2526,
      "provider_product": 2861,
      "title": "Software Engineer (m/w/d)",
      "city": "Berlin"
    }
  ]
}'
{
  "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "auth_user_id": "user_01HXYZ",
  "company": 1,
  "company_billing_detail": 12,
  "total_price": 1299,
  "total_list_price": 1399,
  "created_at": "2026-07-21T06:03:12.447201Z",
  "updated_at": "2026-07-21T06:03:12.447201Z",
  "job_bookings": [
    {
      "id": 1,
      "external_id": "EXT-123456",
      "company": 1,
      "title": "Software Engineer (m/w/d)",
      "description": "Example job description. We are looking for a Software Engineer (m/w/d) to join our team in Berlin.",
      "posting_url": "https://careers.example.com/jobs/123456",
      "application_url": "https://careers.example.com/jobs/123456/apply",
      "application_email": "jobs@example.com",
      "status": "published",
      "remote": "on-site",
      "language": "en",
      "category": "software_development",
      "employment_type": "permanent",
      "work_schedule": "full_time",
      "senority": "mid_level",
      "education": "Bachelor's degree",
      "start_date": "2026-10-01",
      "contract_limitation": "Unlimited contract",
      "location_name": "Berlin, Germany",
      "street": "Example Street 1",
      "city": "Berlin",
      "country": "Germany",
      "postcode": "10115",
      "longitude": 13.405,
      "latitude": 52.52,
      "salary": "50,000 – 65,000 € gross per year",
      "salary_from": 50000,
      "salary_to": 65000,
      "salary_currency": "EUR",
      "salary_frequency": "annual",
      "contact_name": "Jane Doe",
      "contact_email": "jane.doe@example.com",
      "contact_title": "Head of HR",
      "contact_phone": "+49 30 1234567",
      "contact_salutation": "Frau",
      "banner_image": "https://www.example.com/banner.jpg",
      "screening_questions": [
        {
          "id": "sq-001",
          "question": "Do you have a valid work permit for Germany?",
          "answer_type": "boolean",
          "required": true,
          "options": [
            {
              "label": "Yes",
              "value": "yes"
            }
          ]
        }
      ],
      "application_form_fields": [
        {
          "id": "email",
          "name": "email",
          "label": "Email address",
          "type": "email",
          "subtype": null,
          "required": true,
          "order": 1,
          "options": []
        }
      ],
      "description_sections": [
        {
          "id": "tasks",
          "type": "tasks",
          "order": 2,
          "title": "Your tasks",
          "content": "Example section content. Describe the responsibilities of the role here."
        }
      ],
      "custom_fields": {
        "employer_name": "Example Company GmbH",
        "employer_logo": "https://www.example.com/logo.png"
      },
      "raw_values": {
        "employmentType": "FULL_TIME"
      },
      "import_source": "api",
      "run_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "created_at": "2026-06-02T11:07:44.512038Z",
      "updated_at": "2026-07-30T09:15:02.771604Z",
      "last_content_update_at": "2026-07-30T09:15:02.771604Z",
      "job": 123456,
      "campaign": null,
      "failure_error": null,
      "transaction": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "provider_product": 2861,
      "purchase_price": 430,
      "purchase_list_price": 430,
      "booking_reference_id": "IND-2026-0041287",
      "booking_id": "0123456789abcdef",
      "booking_url": "https://de.indeed.com/viewjob?jk=0123456789abcdef",
      "booking_starts_at": "2026-07-21T06:03:12.447201Z",
      "booking_expires_at": "2026-08-20T06:03:12.447201Z",
      "statistics": {
        "booking_clicks": 1284,
        "booking_apply_clicks": 96
      },
      "product": {
        "id": 2857,
        "name": "Indeed.com Germany (Sponsored Job)",
        "url": "http://de.indeed.com",
        "list_price": 430,
        "list_days": 30,
        "max_jobs": null,
        "refresh_interval_options": [
          7,
          14,
          30
        ],
        "statistics": {
          "booking_expected_clicks": 1100,
          "booking_apply_expected_clicks": 80
        },
        "rating": 98,
        "required_fields": {},
        "talent_channel": {
          "id": 1,
          "slug": "indeed",
          "name": "Indeed",
          "url": "https://de.indeed.com/",
          "catalog_url": "https://de.indeed.com/hire/pricing",
          "logo": "https://storage.googleapis.com/prod-product-logos/logos/indeedcom.com"
        }
      }
    }
  ]
}
POST
/job_bookings/
POST
Base URLstring

Target server for requests. Edit to use your own host.

Bearer Token
Bearer Tokenstring
Required

Authenticate every request with an API key from the Kini Partner App, sent as Authorization: Bearer <your_api_key>.

Authenticate every request with an API key from the Kini Partner App, sent as Authorization: Bearer <your_api_key>.
Content-Typestring
Required

The media type of the request body

Options: application/json
header
Company-Idinteger
Required

Kini ID of the company the key is associated with

company_billing_detailinteger

Kini ID of an active billing detail for this company. The product is invoiced to this record.

job_bookingsarray
Required

One booking per object. job, product, and provider_product are required. Any other property is a job field. Send it when the booking should differ from the job. The booking stores the fields you send, so include the job's current value for every field the booking should keep.

Request Preview
Response

Response will appear here after sending the request

Authentication

header
Authorizationstring
Required

Bearer token. Authenticate every request with an API key from the Kini Partner App, sent as Authorization: Bearer <your_api_key>.

Headers

Company-Idinteger
Required

Kini ID of the company the key is associated with

Example:
1

Body

application/json
company_billing_detailinteger

Kini ID of an active billing detail for this company. The product is invoiced to this record.

Example:
12
job_bookingsarray
Required

One booking per object. job, product, and provider_product are required. Any other property is a job field. Send it when the booking should differ from the job. The booking stores the fields you send, so include the job's current value for every field the booking should keep.

Responses