curl --request POST \
--url https://api.critique-labs.ai/v1/design-api/{api_id}/versions \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"version_notes": "<string>"
}
'import requests
url = "https://api.critique-labs.ai/v1/design-api/{api_id}/versions"
payload = { "version_notes": "<string>" }
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({version_notes: '<string>'})
};
fetch('https://api.critique-labs.ai/v1/design-api/{api_id}/versions', 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.critique-labs.ai/v1/design-api/{api_id}/versions",
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([
'version_notes' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-Key: <api-key>"
],
]);
$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.critique-labs.ai/v1/design-api/{api_id}/versions"
payload := strings.NewReader("{\n \"version_notes\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-Key", "<api-key>")
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.critique-labs.ai/v1/design-api/{api_id}/versions")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"version_notes\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.critique-labs.ai/v1/design-api/{api_id}/versions")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"version_notes\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Create a new version of an endpoint
Copies the endpoint (and its graph) into a new, editable draft. If the source is the current draft it is released first (made immutable and, as the newest released version, live), so callers on the unversioned URL keep the behaviour they tested. An older, already-released source is left unchanged and stays where it is. The new draft runs only at its pinned /v URL until it is released or published. Creating a version while the endpoint already has another unreleased draft responds 409: release or delete that draft first. Creating a version from an older, released version is how an owner reverts.
curl --request POST \
--url https://api.critique-labs.ai/v1/design-api/{api_id}/versions \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"version_notes": "<string>"
}
'import requests
url = "https://api.critique-labs.ai/v1/design-api/{api_id}/versions"
payload = { "version_notes": "<string>" }
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({version_notes: '<string>'})
};
fetch('https://api.critique-labs.ai/v1/design-api/{api_id}/versions', 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.critique-labs.ai/v1/design-api/{api_id}/versions",
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([
'version_notes' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-Key: <api-key>"
],
]);
$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.critique-labs.ai/v1/design-api/{api_id}/versions"
payload := strings.NewReader("{\n \"version_notes\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-Key", "<api-key>")
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.critique-labs.ai/v1/design-api/{api_id}/versions")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"version_notes\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.critique-labs.ai/v1/design-api/{api_id}/versions")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"version_notes\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Authorizations
Your API key for authentication. Get one at https://critique-labs.ai/en/dashboard
Path Parameters
Body
Body for POST /v1/design-api/{id}/versions. version and frozen_at are
server-managed and are deliberately not accepted from clients.
Response
Successful Response

