Update experiment run
curl --request PUT \
--url https://api.cloud.corbado.io/v1/observe/experimentRuns/{experimentRunID} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>",
"startMs": 123,
"variantIDs": [
"<string>"
],
"timeSeriesDefinitionIDs": [
"<string>"
],
"description": "<string>",
"endMs": 123,
"groups": [
{
"label": "<string>",
"variantIDs": [
"<string>"
],
"expectedSharePct": 123
}
]
}
'import requests
url = "https://api.cloud.corbado.io/v1/observe/experimentRuns/{experimentRunID}"
payload = {
"name": "<string>",
"startMs": 123,
"variantIDs": ["<string>"],
"timeSeriesDefinitionIDs": ["<string>"],
"description": "<string>",
"endMs": 123,
"groups": [
{
"label": "<string>",
"variantIDs": ["<string>"],
"expectedSharePct": 123
}
]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: '<string>',
startMs: 123,
variantIDs: ['<string>'],
timeSeriesDefinitionIDs: ['<string>'],
description: '<string>',
endMs: 123,
groups: [{label: '<string>', variantIDs: ['<string>'], expectedSharePct: 123}]
})
};
fetch('https://api.cloud.corbado.io/v1/observe/experimentRuns/{experimentRunID}', 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.cloud.corbado.io/v1/observe/experimentRuns/{experimentRunID}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'name' => '<string>',
'startMs' => 123,
'variantIDs' => [
'<string>'
],
'timeSeriesDefinitionIDs' => [
'<string>'
],
'description' => '<string>',
'endMs' => 123,
'groups' => [
[
'label' => '<string>',
'variantIDs' => [
'<string>'
],
'expectedSharePct' => 123
]
]
]),
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.cloud.corbado.io/v1/observe/experimentRuns/{experimentRunID}"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"startMs\": 123,\n \"variantIDs\": [\n \"<string>\"\n ],\n \"timeSeriesDefinitionIDs\": [\n \"<string>\"\n ],\n \"description\": \"<string>\",\n \"endMs\": 123,\n \"groups\": [\n {\n \"label\": \"<string>\",\n \"variantIDs\": [\n \"<string>\"\n ],\n \"expectedSharePct\": 123\n }\n ]\n}")
req, _ := http.NewRequest("PUT", 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.put("https://api.cloud.corbado.io/v1/observe/experimentRuns/{experimentRunID}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"startMs\": 123,\n \"variantIDs\": [\n \"<string>\"\n ],\n \"timeSeriesDefinitionIDs\": [\n \"<string>\"\n ],\n \"description\": \"<string>\",\n \"endMs\": 123,\n \"groups\": [\n {\n \"label\": \"<string>\",\n \"variantIDs\": [\n \"<string>\"\n ],\n \"expectedSharePct\": 123\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.cloud.corbado.io/v1/observe/experimentRuns/{experimentRunID}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"startMs\": 123,\n \"variantIDs\": [\n \"<string>\"\n ],\n \"timeSeriesDefinitionIDs\": [\n \"<string>\"\n ],\n \"description\": \"<string>\",\n \"endMs\": 123,\n \"groups\": [\n {\n \"label\": \"<string>\",\n \"variantIDs\": [\n \"<string>\"\n ],\n \"expectedSharePct\": 123\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"experimentID": "<string>",
"name": "<string>",
"startMs": 123,
"variantIDs": [
"<string>"
],
"timeSeriesDefinitionIDs": [
"<string>"
],
"createdMs": 123,
"updatedMs": 123,
"description": "<string>",
"endMs": 123,
"groups": [
{
"label": "<string>",
"role": "control",
"variantIDs": [
"<string>"
],
"expectedSharePct": 123
}
]
}{
"error": {
"message": "Validation failed",
"details": [
{
"field": "projectID",
"message": "required"
}
]
}
}Experiments
Update experiment run
Updates an Observe experiment run.
Required API key permission: observe:experiments:write.
PUT
/
observe
/
experimentRuns
/
{experimentRunID}
Update experiment run
curl --request PUT \
--url https://api.cloud.corbado.io/v1/observe/experimentRuns/{experimentRunID} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>",
"startMs": 123,
"variantIDs": [
"<string>"
],
"timeSeriesDefinitionIDs": [
"<string>"
],
"description": "<string>",
"endMs": 123,
"groups": [
{
"label": "<string>",
"variantIDs": [
"<string>"
],
"expectedSharePct": 123
}
]
}
'import requests
url = "https://api.cloud.corbado.io/v1/observe/experimentRuns/{experimentRunID}"
payload = {
"name": "<string>",
"startMs": 123,
"variantIDs": ["<string>"],
"timeSeriesDefinitionIDs": ["<string>"],
"description": "<string>",
"endMs": 123,
"groups": [
{
"label": "<string>",
"variantIDs": ["<string>"],
"expectedSharePct": 123
}
]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: '<string>',
startMs: 123,
variantIDs: ['<string>'],
timeSeriesDefinitionIDs: ['<string>'],
description: '<string>',
endMs: 123,
groups: [{label: '<string>', variantIDs: ['<string>'], expectedSharePct: 123}]
})
};
fetch('https://api.cloud.corbado.io/v1/observe/experimentRuns/{experimentRunID}', 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.cloud.corbado.io/v1/observe/experimentRuns/{experimentRunID}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'name' => '<string>',
'startMs' => 123,
'variantIDs' => [
'<string>'
],
'timeSeriesDefinitionIDs' => [
'<string>'
],
'description' => '<string>',
'endMs' => 123,
'groups' => [
[
'label' => '<string>',
'variantIDs' => [
'<string>'
],
'expectedSharePct' => 123
]
]
]),
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.cloud.corbado.io/v1/observe/experimentRuns/{experimentRunID}"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"startMs\": 123,\n \"variantIDs\": [\n \"<string>\"\n ],\n \"timeSeriesDefinitionIDs\": [\n \"<string>\"\n ],\n \"description\": \"<string>\",\n \"endMs\": 123,\n \"groups\": [\n {\n \"label\": \"<string>\",\n \"variantIDs\": [\n \"<string>\"\n ],\n \"expectedSharePct\": 123\n }\n ]\n}")
req, _ := http.NewRequest("PUT", 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.put("https://api.cloud.corbado.io/v1/observe/experimentRuns/{experimentRunID}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"startMs\": 123,\n \"variantIDs\": [\n \"<string>\"\n ],\n \"timeSeriesDefinitionIDs\": [\n \"<string>\"\n ],\n \"description\": \"<string>\",\n \"endMs\": 123,\n \"groups\": [\n {\n \"label\": \"<string>\",\n \"variantIDs\": [\n \"<string>\"\n ],\n \"expectedSharePct\": 123\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.cloud.corbado.io/v1/observe/experimentRuns/{experimentRunID}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"startMs\": 123,\n \"variantIDs\": [\n \"<string>\"\n ],\n \"timeSeriesDefinitionIDs\": [\n \"<string>\"\n ],\n \"description\": \"<string>\",\n \"endMs\": 123,\n \"groups\": [\n {\n \"label\": \"<string>\",\n \"variantIDs\": [\n \"<string>\"\n ],\n \"expectedSharePct\": 123\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"experimentID": "<string>",
"name": "<string>",
"startMs": 123,
"variantIDs": [
"<string>"
],
"timeSeriesDefinitionIDs": [
"<string>"
],
"createdMs": 123,
"updatedMs": 123,
"description": "<string>",
"endMs": 123,
"groups": [
{
"label": "<string>",
"role": "control",
"variantIDs": [
"<string>"
],
"expectedSharePct": 123
}
]
}{
"error": {
"message": "Validation failed",
"details": [
{
"field": "projectID",
"message": "required"
}
]
}
}Authorizations
Use an Observe API key from the management console. The key selects the project and must grant the permission listed on the operation. Keep this key on your server.
Path Parameters
Experiment run ID (format exr-<number>).
Body
application/json
Optional A/B evaluation arms (control vs treatment) over the selected variants. Omit for a breakdown-only run.
Show child attributes
Show child attributes
Response
Experiment run updated.
ID of the experiment run (format exr-<number>).
ID of the experiment (format exp-<number>).
Time-series definition IDs (format tsd-<number>).
A/B evaluation arms (control vs treatment). Absent for breakdown-only runs.
Show child attributes
Show child attributes
Was this page helpful?