ShopPublish a Campaign

Publish a Campaign

Run a multi-job campaign on a job board with changes synced automatically from your ATS. Choose the product, decide which jobs must be covered, and set the budget and duration in a few, simple steps.

Complete the four steps below in order. Every call uses the Authorization and Company-Id headers from Authentication.

Step 1: Choose a product

List Products with product_type=campaign returns the campaign products for this company, along with their prices. Keep provider_product from the product you choose. That is the company-specific price ID, required when creating the campaign.

pricing tells you how the product is charged. On a sponsored product, budget_min and budget_max are the lowest and highest permissible values in EUR, and price_interval is either one_time (a one-off campaign) or monthly (a continuous, recurring campaign). An existing contract or a free integration included with the Kini shop does not require a budget. max_jobs is the most jobs that will be posted through one campaign on this talent channel, null means there is no limit.

Talent channels

List Talent Channels with the same product_type=campaign returns these products grouped under their respective job boards. This is useful when building a frontend interface that shows one grouped card per talent channel. Creating a campaign only needs provider_product from List Products.

Existing contracts

An existing contract means the company already has slots or a posting contract with the job board. Kini acts as the technical provider in this case to connect the campaign. If the product still has a price, that amount is a service fee billed through Kini, not the media spend on the job board. Get in touch with us at tech@getkini.com to add your existing contracts to the Kini shop as products for your company.


Step 2: Choose the jobs

Which jobs the campaign includes, and which it leaves out, can be defined in the following three ways. Send job_selection_mode to specify one of them.

Job content and the number of jobs are synced and updated automatically after a campaign is created.

  1. all covers all active jobs at the company. New jobs, or jobs that become active later, are added automatically. Jobs that are taken offline are dropped automatically.

  2. dynamic covers jobs that match the job_filter. Each rule has field, op, and value, for example { "field": "city", "op": "eq", "value": "Berlin" }. List Campaign Job Filters returns the fields this company can filter on. Jobs that match the filter later are added automatically. Jobs that no longer match the filter are dropped automatically.

  3. manual covers a fixed list of jobs you choose. Load the company's jobs with List Jobs and send their Kini IDs in included_jobs. Jobs that are taken offline are dropped automatically.

A job that already has an active booking on this talent channel cannot be added to the campaign. This is generally rejected by job boards.

If the product specifies max_jobs, do not include more jobs than that. The create call will be rejected. Jobs that match later are not added once the limit is reached.


Step 3: Add billing details

List Billing Details returns the company's active billing details. Choose an existing billing detail, or if the list is empty, create a new one with Create Billing Detail. Store the returned id, and send it as company_billing_detail when creating the campaign. The campaign is invoiced to this record.

Adding a company_billing_detail to a campaign is optional, unlike publishing a single job ad. Leave it out when the job board bills the company directly, such as on an existing contract or on partnership products offered by Kini.


Step 4: Create the campaign

Create Campaign creates the campaign and books all included jobs from step 2. name is the label you will see on the campaign later. starts_at is when it begins, and it cannot be in the past. ends_at is optional. If you send it, it has to be after the start.

For a sponsored product, set budget in EUR inside the range from step 1. Leave budget out for an existing contract or a free integration included with the Kini shop.

If the product lists refresh_interval_options, you can send one of those numbers as refresh_interval. It is how often the jobs are refreshed on the job board, in days. Adding a short refresh interval can use up more of the campaign's budget or quota, and some job boards may even flag frequent refreshes. Contact tech@getkini.com for support on setting a refresh interval.

If you leave job_selection_mode out, the campaign will default to an all jobs campaign.

{
  "company_billing_detail": 12,
  "campaign": {
    "name": "Indeed Sponsored Jobs",
    "provider_product": 3104,
    "job_selection_mode": "manual",
    "included_jobs": [123456],
    "budget": "1500.00",
    "starts_at": "2026-11-16T00:00:00Z"
  }
}

The response id is the campaign id. Keep it if you need to change the campaign later. The campaign starts as active. If a job is missing required fields or is rejected by the job board, that job is not published and the campaign's status is set to action_required until the job is fixed. incomplete_count shows how many jobs are in a publish-failed state.

Follow status updates on the entire campaign with the Campaign Status Update webhook, or follow each job with the Job Booking Status Update webhook. To set up a new webhook or receive these notifications, contact tech@getkini.com.


Update, pause, or close

Update Campaign changes the name, the start or end, the refresh interval, or which jobs are included. If job_selection_mode is changed, the new rules apply to the live jobs already on the campaign, which can cause sudden inclusions or exclusions. Send only the fields you want to change.

Update Campaign Status accepts only status. Send paused to pause a campaign that is active or needs action. Send active to resume a paused campaign. Send closed to stop the campaign and take its jobs off the job board. Changes may take a few hours to reflect.


Once the campaign is created, the selected jobs go through an automated review and are posted on the job board within a few hours in most cases, and within two days if a review takes longer. New changes to jobs are then automatically synced from the ATS and pushed to the job board by Kini. If applicable, the price of purchased products is then invoiced separately at the end of the month.