Revert test set version
curl --request POST \
--url https://api.coval.dev/v1/test-sets/{test_set_id}/versions/{version_id}/revert \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.coval.dev/v1/test-sets/{test_set_id}/versions/{version_id}/revert"
headers = {"X-API-Key": "<api-key>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.coval.dev/v1/test-sets/{test_set_id}/versions/{version_id}/revert', 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.coval.dev/v1/test-sets/{test_set_id}/versions/{version_id}/revert",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"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"
"net/http"
"io"
)
func main() {
url := "https://api.coval.dev/v1/test-sets/{test_set_id}/versions/{version_id}/revert"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
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.coval.dev/v1/test-sets/{test_set_id}/versions/{version_id}/revert")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.coval.dev/v1/test-sets/{test_set_id}/versions/{version_id}/revert")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"test_set": {
"name": "test-sets/abc12345",
"id": "abc12345",
"slug": "customer-support-scenarios",
"display_name": "Customer Support Scenarios",
"description": "Test cases for customer support agent",
"test_set_type": "SCENARIO",
"test_set_metadata": {
"category": "support",
"priority": "high"
},
"parameters": {
"customer_name": [
"Alice",
"Bob"
],
"issue_type": [
"billing",
"technical"
]
},
"test_case_count": 42,
"tags": [
"regression",
"voice"
],
"create_time": "2025-10-14T12:00:00Z",
"update_time": "2025-10-15T14:30:00Z"
}
}{
"error": {
"code": "INVALID_ARGUMENT",
"message": "Invalid request parameters",
"details": [
{
"field": "display_name",
"description": "display_name is required and cannot be empty"
}
]
}
}{
"error": {
"code": "UNAUTHENTICATED",
"message": "Authentication failed",
"details": [
{
"field": "X-API-Key",
"description": "Invalid or missing API key"
}
]
}
}{
"error": {
"code": "NOT_FOUND",
"message": "Test set not found",
"details": [
{
"field": "test_set_id",
"description": "Test set 'abc12345' not found"
}
]
}
}{
"error": {
"code": "INTERNAL",
"message": "Internal server error",
"details": [
{
"description": "An unexpected error occurred while processing the request"
}
]
}
}Versions
Revert test set version
Re-apply a prior version’s content (config + test-case grid) to the live test set. A revert is forward-only: it mints a new version (change_type=revert) and advances the test set, so the response reflects the test set’s new live config. Reverting to the version the test set already points at is rejected with 400. Test cases are not included in the response; fetch them separately via GET /test-cases.
POST
/
test-sets
/
{test_set_id}
/
versions
/
{version_id}
/
revert
Revert test set version
curl --request POST \
--url https://api.coval.dev/v1/test-sets/{test_set_id}/versions/{version_id}/revert \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.coval.dev/v1/test-sets/{test_set_id}/versions/{version_id}/revert"
headers = {"X-API-Key": "<api-key>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.coval.dev/v1/test-sets/{test_set_id}/versions/{version_id}/revert', 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.coval.dev/v1/test-sets/{test_set_id}/versions/{version_id}/revert",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"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"
"net/http"
"io"
)
func main() {
url := "https://api.coval.dev/v1/test-sets/{test_set_id}/versions/{version_id}/revert"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
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.coval.dev/v1/test-sets/{test_set_id}/versions/{version_id}/revert")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.coval.dev/v1/test-sets/{test_set_id}/versions/{version_id}/revert")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"test_set": {
"name": "test-sets/abc12345",
"id": "abc12345",
"slug": "customer-support-scenarios",
"display_name": "Customer Support Scenarios",
"description": "Test cases for customer support agent",
"test_set_type": "SCENARIO",
"test_set_metadata": {
"category": "support",
"priority": "high"
},
"parameters": {
"customer_name": [
"Alice",
"Bob"
],
"issue_type": [
"billing",
"technical"
]
},
"test_case_count": 42,
"tags": [
"regression",
"voice"
],
"create_time": "2025-10-14T12:00:00Z",
"update_time": "2025-10-15T14:30:00Z"
}
}{
"error": {
"code": "INVALID_ARGUMENT",
"message": "Invalid request parameters",
"details": [
{
"field": "display_name",
"description": "display_name is required and cannot be empty"
}
]
}
}{
"error": {
"code": "UNAUTHENTICATED",
"message": "Authentication failed",
"details": [
{
"field": "X-API-Key",
"description": "Invalid or missing API key"
}
]
}
}{
"error": {
"code": "NOT_FOUND",
"message": "Test set not found",
"details": [
{
"field": "test_set_id",
"description": "Test set 'abc12345' not found"
}
]
}
}{
"error": {
"code": "INTERNAL",
"message": "Internal server error",
"details": [
{
"description": "An unexpected error occurred while processing the request"
}
]
}
}Authorizations
Organization API key for authentication
Path Parameters
Test set ID (8-character ID)
Required string length:
8ULID of the target version to re-apply
Required string length:
26Pattern:
^[0-9A-HJKMNP-TV-Z]{26}$Response
Test set reverted successfully
Test set resource representation.
Show child attributes
Show child attributes
Was this page helpful?
⌘I