Create Redirect Clickout Link
Create a clickout link that signs the user in and drops them on a shop overview page — their job list or their bookings — without going through the promote flow.
Requires a partner-scoped API key; company-scoped keys can only use Create Promote Clickout Link.
curl -X POST "https://api.getkini.com/clickout/redirect/" \
-H "Content-Type: application/json" \
-H "Company-Id: 1" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-d '{
"email": "jane.doe@example.com",
"resource": "bookings"
}'
import requests
import json
url = "https://api.getkini.com/clickout/redirect/"
headers = {
"Content-Type": "application/json",
"Company-Id": "1",
"Authorization": "Bearer YOUR_API_TOKEN"
}
data = {
"email": "jane.doe@example.com",
"resource": "bookings"
}
response = requests.post(url, headers=headers, json=data)
print(response.json())
const response = await fetch("https://api.getkini.com/clickout/redirect/", {
method: "POST",
headers: {
"Content-Type": "application/json",
"Company-Id": "1",
"Authorization": "Bearer YOUR_API_TOKEN"
},
body: JSON.stringify({
"email": "jane.doe@example.com",
"resource": "bookings"
})
});
const data = await response.json();
console.log(data);
package main
import (
"fmt"
"net/http"
"bytes"
"encoding/json"
)
func main() {
data := []byte(`{
"email": "jane.doe@example.com",
"resource": "bookings"
}`)
req, err := http.NewRequest("POST", "https://api.getkini.com/clickout/redirect/", bytes.NewBuffer(data))
if err != nil {
panic(err)
}
req.Header.Set("Content-Type", "application/json")
req.Header.Set("Company-Id", "1")
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/clickout/redirect/')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Post.new(uri)
request['Content-Type'] = 'application/json'
request['Company-Id'] = '1'
request['Authorization'] = 'Bearer YOUR_API_TOKEN'
request.body = '{
"email": "jane.doe@example.com",
"resource": "bookings"
}'
response = http.request(request)
puts response.body
{
"data": "https://app.getkini.com/companies/1/bookings"
}
{
"error": "Bad Request",
"message": "The request contains invalid parameters or malformed data",
"code": 400,
"details": [
{
"field": "email",
"message": "Invalid email format"
}
]
}
{
"error": "Forbidden",
"message": "You don't have permission to access this resource",
"code": 403
}
{
"error": "Internal Server Error",
"message": "An unexpected error occurred on the server",
"code": 500,
"requestId": "req_1234567890"
}
/clickout/redirect/
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>.The media type of the request body
Kini ID of the company the key is associated with
Email address of the user the link is issued for. A shop user is created and added to the company on first use.
Page to land on. Enum: jobs (the company's job list), bookings (the company's job bookings).
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\>.
Headers
Body
Email address of the user the link is issued for. A shop user is created and added to the company on first use.
jane.doe@example.comPage to land on. Enum: jobs (the company's job list), bookings (the company's job bookings).
jobsbookingsResponses
Clickout URL. Signs the user in and lands them on the target page. Valid for one hour.