Run five-voter Haiku pairwise comparisons
curl --request POST \
--url https://kettio.com/api/v1/pairwise \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"pairs": [
{
"pair_id": "creative-a-vs-b",
"a": {
"id": "creative-a",
"image_url": "https://cdn.example.com/ad-a.png"
},
"b": {
"id": "creative-b",
"image_url": "https://cdn.example.com/ad-b.png"
}
}
],
"audience": {
"name": "GLP-1 shoppers",
"description": "Women considering GLP-1 support who need credible purchase proof"
},
"goal": "purchase-intent",
"platform": "facebook"
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
pairs: [
{
pair_id: 'creative-a-vs-b',
a: {id: 'creative-a', image_url: 'https://cdn.example.com/ad-a.png'},
b: {id: 'creative-b', image_url: 'https://cdn.example.com/ad-b.png'}
}
],
audience: {
name: 'GLP-1 shoppers',
description: 'Women considering GLP-1 support who need credible purchase proof'
},
goal: 'purchase-intent',
platform: 'facebook'
})
};
fetch('https://kettio.com/api/v1/pairwise', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://kettio.com/api/v1/pairwise"
payload = {
"pairs": [
{
"pair_id": "creative-a-vs-b",
"a": {
"id": "creative-a",
"image_url": "https://cdn.example.com/ad-a.png"
},
"b": {
"id": "creative-b",
"image_url": "https://cdn.example.com/ad-b.png"
}
}
],
"audience": {
"name": "GLP-1 shoppers",
"description": "Women considering GLP-1 support who need credible purchase proof"
},
"goal": "purchase-intent",
"platform": "facebook"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"pairs": [
{
"pairId": "<string>",
"aId": "<string>",
"bId": "<string>",
"votes": [
{
"voterId": "<string>",
"winnerId": "<string>",
"loserId": "<string>",
"response": "<string>"
}
],
"winnerId": "<string>",
"votesFor": 123,
"votesTotal": 123,
"winRate": 123,
"consistency": 123,
"error": "<string>"
}
],
"summary": {
"goal": "<string>",
"platform": "<string>",
"audience": "<string>",
"model": "<string>",
"panel_size": 5,
"pairs_requested": 123,
"pairs_completed": 123,
"pairs_failed": 123,
"valid_votes": 123,
"pairwise_evaluations": 123,
"credits_used": 123,
"credits_remaining": 123
}
}{
"error": "<string>",
"field": "<string>"
}{
"error": "<string>",
"field": "<string>"
}{
"error": "<string>",
"field": "<string>"
}{
"error": "<string>",
"field": "<string>"
}{
"error": "<string>",
"field": "<string>"
}{
"error": "<string>",
"field": "<string>",
"retryAfter": 123,
"resetAt": 123
}{
"error": "<string>",
"field": "<string>"
}{
"error": "<string>",
"field": "<string>"
}Endpoints
Compare pairs
Run five-voter Haiku pairwise comparisons on explicit matchups.
POST
/
api
/
v1
/
pairwise
Run five-voter Haiku pairwise comparisons
curl --request POST \
--url https://kettio.com/api/v1/pairwise \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"pairs": [
{
"pair_id": "creative-a-vs-b",
"a": {
"id": "creative-a",
"image_url": "https://cdn.example.com/ad-a.png"
},
"b": {
"id": "creative-b",
"image_url": "https://cdn.example.com/ad-b.png"
}
}
],
"audience": {
"name": "GLP-1 shoppers",
"description": "Women considering GLP-1 support who need credible purchase proof"
},
"goal": "purchase-intent",
"platform": "facebook"
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
pairs: [
{
pair_id: 'creative-a-vs-b',
a: {id: 'creative-a', image_url: 'https://cdn.example.com/ad-a.png'},
b: {id: 'creative-b', image_url: 'https://cdn.example.com/ad-b.png'}
}
],
audience: {
name: 'GLP-1 shoppers',
description: 'Women considering GLP-1 support who need credible purchase proof'
},
goal: 'purchase-intent',
platform: 'facebook'
})
};
fetch('https://kettio.com/api/v1/pairwise', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://kettio.com/api/v1/pairwise"
payload = {
"pairs": [
{
"pair_id": "creative-a-vs-b",
"a": {
"id": "creative-a",
"image_url": "https://cdn.example.com/ad-a.png"
},
"b": {
"id": "creative-b",
"image_url": "https://cdn.example.com/ad-b.png"
}
}
],
"audience": {
"name": "GLP-1 shoppers",
"description": "Women considering GLP-1 support who need credible purchase proof"
},
"goal": "purchase-intent",
"platform": "facebook"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"pairs": [
{
"pairId": "<string>",
"aId": "<string>",
"bId": "<string>",
"votes": [
{
"voterId": "<string>",
"winnerId": "<string>",
"loserId": "<string>",
"response": "<string>"
}
],
"winnerId": "<string>",
"votesFor": 123,
"votesTotal": 123,
"winRate": 123,
"consistency": 123,
"error": "<string>"
}
],
"summary": {
"goal": "<string>",
"platform": "<string>",
"audience": "<string>",
"model": "<string>",
"panel_size": 5,
"pairs_requested": 123,
"pairs_completed": 123,
"pairs_failed": 123,
"valid_votes": 123,
"pairwise_evaluations": 123,
"credits_used": 123,
"credits_remaining": 123
}
}{
"error": "<string>",
"field": "<string>"
}{
"error": "<string>",
"field": "<string>"
}{
"error": "<string>",
"field": "<string>"
}{
"error": "<string>",
"field": "<string>"
}{
"error": "<string>",
"field": "<string>"
}{
"error": "<string>",
"field": "<string>",
"retryAfter": 123,
"resetAt": 123
}{
"error": "<string>",
"field": "<string>"
}{
"error": "<string>",
"field": "<string>"
}Authorizations
Kettio API key, for example Authorization: Bearer agk_live_xxx.
Body
application/json
⌘I