curl --request POST \
--url https://api.heybee.app/v1/experiments \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"anchor_field": "prompt",
"description": "Comparing different TTS models on the same prompts",
"name": "TTS Voice Comparison",
"parameter_schema": [
{
"name": "temperature",
"required": true,
"type": "continuous"
},
{
"name": "checkpoint",
"required": true,
"type": "categorical",
"values": [
"ft_v1",
"ft_v2"
]
}
],
"type": "audio"
}
'import requests
url = "https://api.heybee.app/v1/experiments"
payload = {
"anchor_field": "prompt",
"description": "Comparing different TTS models on the same prompts",
"name": "TTS Voice Comparison",
"parameter_schema": [
{
"name": "temperature",
"required": True,
"type": "continuous"
},
{
"name": "checkpoint",
"required": True,
"type": "categorical",
"values": ["ft_v1", "ft_v2"]
}
],
"type": "audio"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
anchor_field: 'prompt',
description: 'Comparing different TTS models on the same prompts',
name: 'TTS Voice Comparison',
parameter_schema: [
{name: 'temperature', required: true, type: 'continuous'},
{
name: 'checkpoint',
required: true,
type: 'categorical',
values: ['ft_v1', 'ft_v2']
}
],
type: 'audio'
})
};
fetch('https://api.heybee.app/v1/experiments', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.heybee.app/v1/experiments",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'anchor_field' => 'prompt',
'description' => 'Comparing different TTS models on the same prompts',
'name' => 'TTS Voice Comparison',
'parameter_schema' => [
[
'name' => 'temperature',
'required' => true,
'type' => 'continuous'
],
[
'name' => 'checkpoint',
'required' => true,
'type' => 'categorical',
'values' => [
'ft_v1',
'ft_v2'
]
]
],
'type' => 'audio'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.heybee.app/v1/experiments"
payload := strings.NewReader("{\n \"anchor_field\": \"prompt\",\n \"description\": \"Comparing different TTS models on the same prompts\",\n \"name\": \"TTS Voice Comparison\",\n \"parameter_schema\": [\n {\n \"name\": \"temperature\",\n \"required\": true,\n \"type\": \"continuous\"\n },\n {\n \"name\": \"checkpoint\",\n \"required\": true,\n \"type\": \"categorical\",\n \"values\": [\n \"ft_v1\",\n \"ft_v2\"\n ]\n }\n ],\n \"type\": \"audio\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.heybee.app/v1/experiments")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"anchor_field\": \"prompt\",\n \"description\": \"Comparing different TTS models on the same prompts\",\n \"name\": \"TTS Voice Comparison\",\n \"parameter_schema\": [\n {\n \"name\": \"temperature\",\n \"required\": true,\n \"type\": \"continuous\"\n },\n {\n \"name\": \"checkpoint\",\n \"required\": true,\n \"type\": \"categorical\",\n \"values\": [\n \"ft_v1\",\n \"ft_v2\"\n ]\n }\n ],\n \"type\": \"audio\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.heybee.app/v1/experiments")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"anchor_field\": \"prompt\",\n \"description\": \"Comparing different TTS models on the same prompts\",\n \"name\": \"TTS Voice Comparison\",\n \"parameter_schema\": [\n {\n \"name\": \"temperature\",\n \"required\": true,\n \"type\": \"continuous\"\n },\n {\n \"name\": \"checkpoint\",\n \"required\": true,\n \"type\": \"categorical\",\n \"values\": [\n \"ft_v1\",\n \"ft_v2\"\n ]\n }\n ],\n \"type\": \"audio\"\n}"
response = http.request(request)
puts response.read_body{
"anchor_field": "<string>",
"comparison_policy": {},
"created_at": "2023-11-07T05:31:56Z",
"description": "<string>",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"is_active": true,
"kind": "simple",
"name": "<string>",
"objective": "benchmark",
"parameter_schema": [
{}
],
"team_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"type": "image",
"updated_at": "2023-11-07T05:31:56Z",
"user_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"workspace_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"access_role": "owner",
"access_scope": "personal",
"allow_playback_speed": false,
"allow_public_voting": false,
"anchor_values": [
"<string>"
],
"axes": [
{}
],
"budget_cap_credits": 123,
"budget_remaining_credits": 123,
"budget_spent_credits": 0,
"can_manage_experiment": false,
"can_run_experiment": false,
"can_view_analysis": false,
"can_view_api": false,
"can_view_votes": false,
"confidence_score": 0,
"enforce_playback": false,
"is_discoverable": false,
"is_public_readable": false,
"min_playback_percent": 0,
"min_viewing_seconds": 0,
"policy_version": "v1",
"purchased_comparisons": 0,
"readiness_errors": [
{}
],
"readiness_state": "ready",
"remaining_comparisons": 0,
"require_feedback": false,
"requires_anchor": true,
"rlhf_policy": {
"budget_cap_credits": 1,
"collection_mode": "pairwise",
"participant_notes": "<string>",
"queue": {
"max_concurrent_assignments": 1,
"strategy": "balanced"
},
"round": {
"max_rounds": 5000,
"min_decisive_pairs_per_axis": 50
},
"version": 1
},
"sample_count": 0,
"score_count": 0,
"servable_pair_count": 0,
"status": "paused",
"team_member_count": 0,
"team_name": "<string>",
"total_votes": 0,
"used_comparisons": 0,
"vote_cost_credits": 1
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Create Experiment
Create a new experiment.
curl --request POST \
--url https://api.heybee.app/v1/experiments \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"anchor_field": "prompt",
"description": "Comparing different TTS models on the same prompts",
"name": "TTS Voice Comparison",
"parameter_schema": [
{
"name": "temperature",
"required": true,
"type": "continuous"
},
{
"name": "checkpoint",
"required": true,
"type": "categorical",
"values": [
"ft_v1",
"ft_v2"
]
}
],
"type": "audio"
}
'import requests
url = "https://api.heybee.app/v1/experiments"
payload = {
"anchor_field": "prompt",
"description": "Comparing different TTS models on the same prompts",
"name": "TTS Voice Comparison",
"parameter_schema": [
{
"name": "temperature",
"required": True,
"type": "continuous"
},
{
"name": "checkpoint",
"required": True,
"type": "categorical",
"values": ["ft_v1", "ft_v2"]
}
],
"type": "audio"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
anchor_field: 'prompt',
description: 'Comparing different TTS models on the same prompts',
name: 'TTS Voice Comparison',
parameter_schema: [
{name: 'temperature', required: true, type: 'continuous'},
{
name: 'checkpoint',
required: true,
type: 'categorical',
values: ['ft_v1', 'ft_v2']
}
],
type: 'audio'
})
};
fetch('https://api.heybee.app/v1/experiments', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.heybee.app/v1/experiments",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'anchor_field' => 'prompt',
'description' => 'Comparing different TTS models on the same prompts',
'name' => 'TTS Voice Comparison',
'parameter_schema' => [
[
'name' => 'temperature',
'required' => true,
'type' => 'continuous'
],
[
'name' => 'checkpoint',
'required' => true,
'type' => 'categorical',
'values' => [
'ft_v1',
'ft_v2'
]
]
],
'type' => 'audio'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.heybee.app/v1/experiments"
payload := strings.NewReader("{\n \"anchor_field\": \"prompt\",\n \"description\": \"Comparing different TTS models on the same prompts\",\n \"name\": \"TTS Voice Comparison\",\n \"parameter_schema\": [\n {\n \"name\": \"temperature\",\n \"required\": true,\n \"type\": \"continuous\"\n },\n {\n \"name\": \"checkpoint\",\n \"required\": true,\n \"type\": \"categorical\",\n \"values\": [\n \"ft_v1\",\n \"ft_v2\"\n ]\n }\n ],\n \"type\": \"audio\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.heybee.app/v1/experiments")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"anchor_field\": \"prompt\",\n \"description\": \"Comparing different TTS models on the same prompts\",\n \"name\": \"TTS Voice Comparison\",\n \"parameter_schema\": [\n {\n \"name\": \"temperature\",\n \"required\": true,\n \"type\": \"continuous\"\n },\n {\n \"name\": \"checkpoint\",\n \"required\": true,\n \"type\": \"categorical\",\n \"values\": [\n \"ft_v1\",\n \"ft_v2\"\n ]\n }\n ],\n \"type\": \"audio\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.heybee.app/v1/experiments")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"anchor_field\": \"prompt\",\n \"description\": \"Comparing different TTS models on the same prompts\",\n \"name\": \"TTS Voice Comparison\",\n \"parameter_schema\": [\n {\n \"name\": \"temperature\",\n \"required\": true,\n \"type\": \"continuous\"\n },\n {\n \"name\": \"checkpoint\",\n \"required\": true,\n \"type\": \"categorical\",\n \"values\": [\n \"ft_v1\",\n \"ft_v2\"\n ]\n }\n ],\n \"type\": \"audio\"\n}"
response = http.request(request)
puts response.read_body{
"anchor_field": "<string>",
"comparison_policy": {},
"created_at": "2023-11-07T05:31:56Z",
"description": "<string>",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"is_active": true,
"kind": "simple",
"name": "<string>",
"objective": "benchmark",
"parameter_schema": [
{}
],
"team_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"type": "image",
"updated_at": "2023-11-07T05:31:56Z",
"user_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"workspace_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"access_role": "owner",
"access_scope": "personal",
"allow_playback_speed": false,
"allow_public_voting": false,
"anchor_values": [
"<string>"
],
"axes": [
{}
],
"budget_cap_credits": 123,
"budget_remaining_credits": 123,
"budget_spent_credits": 0,
"can_manage_experiment": false,
"can_run_experiment": false,
"can_view_analysis": false,
"can_view_api": false,
"can_view_votes": false,
"confidence_score": 0,
"enforce_playback": false,
"is_discoverable": false,
"is_public_readable": false,
"min_playback_percent": 0,
"min_viewing_seconds": 0,
"policy_version": "v1",
"purchased_comparisons": 0,
"readiness_errors": [
{}
],
"readiness_state": "ready",
"remaining_comparisons": 0,
"require_feedback": false,
"requires_anchor": true,
"rlhf_policy": {
"budget_cap_credits": 1,
"collection_mode": "pairwise",
"participant_notes": "<string>",
"queue": {
"max_concurrent_assignments": 1,
"strategy": "balanced"
},
"round": {
"max_rounds": 5000,
"min_decisive_pairs_per_axis": 50
},
"version": 1
},
"sample_count": 0,
"score_count": 0,
"servable_pair_count": 0,
"status": "paused",
"team_member_count": 0,
"team_name": "<string>",
"total_votes": 0,
"used_comparisons": 0,
"vote_cost_credits": 1
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
Request to create a new experiment.
1 - 255Types of experiments.
image, audio, text, video Structured anchor definition (new API path)
Show child attributes
Show child attributes
Field name used to group samples for comparison
1 - 64Voting criteria (per-axis). Omit/empty for a single default axis (today's behavior).
12Show child attributes
Show child attributes
Pairing policy contract for objective-specific serving rules.
Show child attributes
Show child attributes
simple | advanced
simple, advanced 0 <= x <= 100x >= 0benchmark | optimization | rlhf_loop
benchmark, optimization, rlhf_loop Schema defining the parameters for samples (JSON array)
32Show child attributes
Show child attributes
Show child attributes
Show child attributes
Response
Successful Response
Experiment response.
Kinds of experiments (extensible).
simple, advanced User-facing objective for experiment behavior.
benchmark, optimization, rlhf_loop Types of experiments.
image, audio, text, video owner, manager, collaborator, voter personal, team Readiness state for serving pairs.
draft, ready, invalid, blocked Show child attributes
Show child attributes
Lifecycle state for experiment operations.
draft, active, paused, completed, archived 
