List Products
List the products this company can book, along with their prices. Each item includes an id, and a provider_product ID necessary for creating job bookings. list_price is the catalogue price in EUR. price is the billable amount that will be invoiced, and it already includes any applicable partner discount. The default list is single products. Pass product_type=campaign to list campaign products. The pricing object is only relevant for campaign products. Descriptions are translated. See Languages. See Publish a Job Ad.
curl -X GET "https://api.getkini.com/products/?product_type=single&name=Indeed&talent_channel=1062&list_days=30&list_price=1500&rating=80&ordering=-rating&page=1&page_size=20" \
-H "Content-Type: application/json" \
-H "Company-Id: 1" \
-H "Accept-Language: de" \
-H "Authorization: Bearer YOUR_API_TOKEN"
import requests
import json
url = "https://api.getkini.com/products/?product_type=single&name=Indeed&talent_channel=1062&list_days=30&list_price=1500&rating=80&ordering=-rating&page=1&page_size=20"
headers = {
"Content-Type": "application/json",
"Company-Id": "1",
"Accept-Language": "de",
"Authorization": "Bearer YOUR_API_TOKEN"
}
response = requests.get(url, headers=headers)
print(response.json())
const response = await fetch("https://api.getkini.com/products/?product_type=single&name=Indeed&talent_channel=1062&list_days=30&list_price=1500&rating=80&ordering=-rating&page=1&page_size=20", {
method: "GET",
headers: {
"Content-Type": "application/json",
"Company-Id": "1",
"Accept-Language": "de",
"Authorization": "Bearer YOUR_API_TOKEN"
}
});
const data = await response.json();
console.log(data);
package main
import (
"fmt"
"net/http"
)
func main() {
req, err := http.NewRequest("GET", "https://api.getkini.com/products/?product_type=single&name=Indeed&talent_channel=1062&list_days=30&list_price=1500&rating=80&ordering=-rating&page=1&page_size=20", nil)
if err != nil {
panic(err)
}
req.Header.Set("Content-Type", "application/json")
req.Header.Set("Company-Id", "1")
req.Header.Set("Accept-Language", "de")
req.Header.Set("Authorization", "Bearer YOUR_API_TOKEN")
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
fmt.Println("Response Status:", resp.Status)
}
require 'net/http'
require 'json'
uri = URI('https://api.getkini.com/products/?product_type=single&name=Indeed&talent_channel=1062&list_days=30&list_price=1500&rating=80&ordering=-rating&page=1&page_size=20')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Get.new(uri)
request['Content-Type'] = 'application/json'
request['Company-Id'] = '1'
request['Accept-Language'] = 'de'
request['Authorization'] = 'Bearer YOUR_API_TOKEN'
response = http.request(request)
puts response.body
{
"count": 24,
"next": "https://api.getkini.com/products/?page=2",
"previous": null,
"results": [
{
"id": 2526,
"name": "Stepstone.de (Pro)",
"type": "single",
"url": "http://stepstone.de",
"description": "Allround-Jobanzeige auf StepStone für Fachkräfte aller Branchen. Automatischer Refresh hält die Anzeige aktuell; Verteilung erfolgt zusätzlich auf Fach- und Regionalportalen. Re-Targeting und eine Direktansprache potenzieller Kandidat*innen sind inklusive, um die Resonanz zu steigern.",
"talent_channel": 1062,
"list_price": 1399,
"price": 1299,
"provider_product": 2861,
"pricing": {
"pricing_type": "sponsored",
"price_interval": "one_time",
"budget_min": 500,
"budget_max": 5000,
"budget_steps": 100
},
"discount_percent": 7.8,
"list_days": 30,
"max_jobs": null,
"refresh_interval_options": [
7,
14,
30
],
"statistics": {
"booking_expected_clicks": 620,
"booking_apply_expected_clicks": 45
},
"rating": 98,
"required_fields": {
"job_fields": [
"city"
],
"custom_fields": [
{
"name": "ba_hiring_org_id",
"required": true
}
]
},
"updated_at": "2026-07-14T08:15:51.329489Z"
}
]
}
/products/
Target server for requests. Edit to use your own host.
Authenticate every request with an API key from the Kini Partner App, sent as Authorization: Bearer <your_api_key>.
Authorization: Bearer <your_api_key>.Which catalogue to return. single is the default and lists products for Create Job Booking. campaign lists campaign products.
Case-insensitive match on the product name.
Kini ID of the talent channel. Returns products on that channel only.
Exact match on the number of days the product stays online.
Return products whose list price is less than or equal to this amount, in EUR.
Return products whose rating is greater than or equal to this value.
Sort field. Prefix with - to reverse. One of list_days, list_price, rating, created_at, updated_at. The default is -rating.
A page number within the paginated result set.
Number of results to return per page. The default is 10 and the maximum is 50.
Kini ID of the company the key is associated with
Language for the product description, for example de or en. Defaults to English. See Languages.
Request Preview
Response
Response will appear here after sending the request
Authentication
Bearer token. Authenticate every request with an API key from the Kini Partner App, sent as Authorization: Bearer <your_api_key>.
Query Parameters
Which catalogue to return. single is the default and lists products for Create Job Booking. campaign lists campaign products.
singlecampaignKini ID of the talent channel. Returns products on that channel only.
1062Return products whose list price is less than or equal to this amount, in EUR.
1500Sort field. Prefix with - to reverse. One of list_days, list_price, rating, created_at, updated_at. The default is -rating.
-ratingNumber of results to return per page. The default is 10 and the maximum is 50.
20Headers
Language for the product description, for example de or en. Defaults to English. See Languages.
deResponses
Total number of records available across all pages
URL to the next page of results
URL to the previous page of results
Products the company can book, highest rating first