Create Test
curl --request POST \
--url https://api.docketqa.com/test_blueprint/create \
--header 'Content-Type: application/json' \
--header 'X-API-KEY: <api-key>' \
--data '
{
"title": "<string>",
"type": "<string>",
"steps": [
{
"step_number": 123,
"type": "<string>",
"action": "<string>",
"use_vision": true,
"test_blueprint_module_id": 123,
"api_request": {
"url": "<string>",
"method": "<string>",
"headers": {},
"body": {},
"timeout": 123,
"retries": 123,
"backoff_seconds": 123,
"should_refresh_page": true
},
"trigger_run_config": {
"test_blueprint_id": 123
},
"attached_file_ids": [
123
],
"assert_images_count": 123,
"disable_self_healing": true,
"click_count": 123,
"hold_start_duration": 123,
"hold_end_duration": 123
}
],
"starting_url": "<string>",
"starting_prompt": "<string>",
"test_blueprint_category_id": 123,
"folder_path": "<string>",
"device_type": "<string>",
"device_name": "<string>",
"app_id": 123,
"browser_zoom": 123,
"viewport_width": 123,
"viewport_height": 123,
"num_retries": 123,
"reset_browser_on_retry": true,
"typing_speed": 123,
"persist_self_healed": true,
"file_download_mode": "<string>",
"variables": [
{
"key": "<string>",
"type": "<string>",
"value": "<string>",
"randomConfig": {}
}
],
"setup_module": 123,
"teardown_module": 123,
"status": "<string>",
"credentials": {
"username": "<string>",
"password": "<string>",
"otp_secret": "<string>"
}
}
'import requests
url = "https://api.docketqa.com/test_blueprint/create"
payload = {
"title": "<string>",
"type": "<string>",
"steps": [
{
"step_number": 123,
"type": "<string>",
"action": "<string>",
"use_vision": True,
"test_blueprint_module_id": 123,
"api_request": {
"url": "<string>",
"method": "<string>",
"headers": {},
"body": {},
"timeout": 123,
"retries": 123,
"backoff_seconds": 123,
"should_refresh_page": True
},
"trigger_run_config": { "test_blueprint_id": 123 },
"attached_file_ids": [123],
"assert_images_count": 123,
"disable_self_healing": True,
"click_count": 123,
"hold_start_duration": 123,
"hold_end_duration": 123
}
],
"starting_url": "<string>",
"starting_prompt": "<string>",
"test_blueprint_category_id": 123,
"folder_path": "<string>",
"device_type": "<string>",
"device_name": "<string>",
"app_id": 123,
"browser_zoom": 123,
"viewport_width": 123,
"viewport_height": 123,
"num_retries": 123,
"reset_browser_on_retry": True,
"typing_speed": 123,
"persist_self_healed": True,
"file_download_mode": "<string>",
"variables": [
{
"key": "<string>",
"type": "<string>",
"value": "<string>",
"randomConfig": {}
}
],
"setup_module": 123,
"teardown_module": 123,
"status": "<string>",
"credentials": {
"username": "<string>",
"password": "<string>",
"otp_secret": "<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({
title: '<string>',
type: '<string>',
steps: [
{
step_number: 123,
type: '<string>',
action: '<string>',
use_vision: true,
test_blueprint_module_id: 123,
api_request: {
url: '<string>',
method: '<string>',
headers: {},
body: JSON.stringify({}),
timeout: 123,
retries: 123,
backoff_seconds: 123,
should_refresh_page: true
},
trigger_run_config: {test_blueprint_id: 123},
attached_file_ids: [123],
assert_images_count: 123,
disable_self_healing: true,
click_count: 123,
hold_start_duration: 123,
hold_end_duration: 123
}
],
starting_url: '<string>',
starting_prompt: '<string>',
test_blueprint_category_id: 123,
folder_path: '<string>',
device_type: '<string>',
device_name: '<string>',
app_id: 123,
browser_zoom: 123,
viewport_width: 123,
viewport_height: 123,
num_retries: 123,
reset_browser_on_retry: true,
typing_speed: 123,
persist_self_healed: true,
file_download_mode: '<string>',
variables: [{key: '<string>', type: '<string>', value: '<string>', randomConfig: {}}],
setup_module: 123,
teardown_module: 123,
status: '<string>',
credentials: {username: '<string>', password: '<string>', otp_secret: '<string>'}
})
};
fetch('https://api.docketqa.com/test_blueprint/create', 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.docketqa.com/test_blueprint/create",
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([
'title' => '<string>',
'type' => '<string>',
'steps' => [
[
'step_number' => 123,
'type' => '<string>',
'action' => '<string>',
'use_vision' => true,
'test_blueprint_module_id' => 123,
'api_request' => [
'url' => '<string>',
'method' => '<string>',
'headers' => [
],
'body' => [
],
'timeout' => 123,
'retries' => 123,
'backoff_seconds' => 123,
'should_refresh_page' => true
],
'trigger_run_config' => [
'test_blueprint_id' => 123
],
'attached_file_ids' => [
123
],
'assert_images_count' => 123,
'disable_self_healing' => true,
'click_count' => 123,
'hold_start_duration' => 123,
'hold_end_duration' => 123
]
],
'starting_url' => '<string>',
'starting_prompt' => '<string>',
'test_blueprint_category_id' => 123,
'folder_path' => '<string>',
'device_type' => '<string>',
'device_name' => '<string>',
'app_id' => 123,
'browser_zoom' => 123,
'viewport_width' => 123,
'viewport_height' => 123,
'num_retries' => 123,
'reset_browser_on_retry' => true,
'typing_speed' => 123,
'persist_self_healed' => true,
'file_download_mode' => '<string>',
'variables' => [
[
'key' => '<string>',
'type' => '<string>',
'value' => '<string>',
'randomConfig' => [
]
]
],
'setup_module' => 123,
'teardown_module' => 123,
'status' => '<string>',
'credentials' => [
'username' => '<string>',
'password' => '<string>',
'otp_secret' => '<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.docketqa.com/test_blueprint/create"
payload := strings.NewReader("{\n \"title\": \"<string>\",\n \"type\": \"<string>\",\n \"steps\": [\n {\n \"step_number\": 123,\n \"type\": \"<string>\",\n \"action\": \"<string>\",\n \"use_vision\": true,\n \"test_blueprint_module_id\": 123,\n \"api_request\": {\n \"url\": \"<string>\",\n \"method\": \"<string>\",\n \"headers\": {},\n \"body\": {},\n \"timeout\": 123,\n \"retries\": 123,\n \"backoff_seconds\": 123,\n \"should_refresh_page\": true\n },\n \"trigger_run_config\": {\n \"test_blueprint_id\": 123\n },\n \"attached_file_ids\": [\n 123\n ],\n \"assert_images_count\": 123,\n \"disable_self_healing\": true,\n \"click_count\": 123,\n \"hold_start_duration\": 123,\n \"hold_end_duration\": 123\n }\n ],\n \"starting_url\": \"<string>\",\n \"starting_prompt\": \"<string>\",\n \"test_blueprint_category_id\": 123,\n \"folder_path\": \"<string>\",\n \"device_type\": \"<string>\",\n \"device_name\": \"<string>\",\n \"app_id\": 123,\n \"browser_zoom\": 123,\n \"viewport_width\": 123,\n \"viewport_height\": 123,\n \"num_retries\": 123,\n \"reset_browser_on_retry\": true,\n \"typing_speed\": 123,\n \"persist_self_healed\": true,\n \"file_download_mode\": \"<string>\",\n \"variables\": [\n {\n \"key\": \"<string>\",\n \"type\": \"<string>\",\n \"value\": \"<string>\",\n \"randomConfig\": {}\n }\n ],\n \"setup_module\": 123,\n \"teardown_module\": 123,\n \"status\": \"<string>\",\n \"credentials\": {\n \"username\": \"<string>\",\n \"password\": \"<string>\",\n \"otp_secret\": \"<string>\"\n }\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.docketqa.com/test_blueprint/create")
.header("X-API-KEY", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"title\": \"<string>\",\n \"type\": \"<string>\",\n \"steps\": [\n {\n \"step_number\": 123,\n \"type\": \"<string>\",\n \"action\": \"<string>\",\n \"use_vision\": true,\n \"test_blueprint_module_id\": 123,\n \"api_request\": {\n \"url\": \"<string>\",\n \"method\": \"<string>\",\n \"headers\": {},\n \"body\": {},\n \"timeout\": 123,\n \"retries\": 123,\n \"backoff_seconds\": 123,\n \"should_refresh_page\": true\n },\n \"trigger_run_config\": {\n \"test_blueprint_id\": 123\n },\n \"attached_file_ids\": [\n 123\n ],\n \"assert_images_count\": 123,\n \"disable_self_healing\": true,\n \"click_count\": 123,\n \"hold_start_duration\": 123,\n \"hold_end_duration\": 123\n }\n ],\n \"starting_url\": \"<string>\",\n \"starting_prompt\": \"<string>\",\n \"test_blueprint_category_id\": 123,\n \"folder_path\": \"<string>\",\n \"device_type\": \"<string>\",\n \"device_name\": \"<string>\",\n \"app_id\": 123,\n \"browser_zoom\": 123,\n \"viewport_width\": 123,\n \"viewport_height\": 123,\n \"num_retries\": 123,\n \"reset_browser_on_retry\": true,\n \"typing_speed\": 123,\n \"persist_self_healed\": true,\n \"file_download_mode\": \"<string>\",\n \"variables\": [\n {\n \"key\": \"<string>\",\n \"type\": \"<string>\",\n \"value\": \"<string>\",\n \"randomConfig\": {}\n }\n ],\n \"setup_module\": 123,\n \"teardown_module\": 123,\n \"status\": \"<string>\",\n \"credentials\": {\n \"username\": \"<string>\",\n \"password\": \"<string>\",\n \"otp_secret\": \"<string>\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.docketqa.com/test_blueprint/create")
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 \"title\": \"<string>\",\n \"type\": \"<string>\",\n \"steps\": [\n {\n \"step_number\": 123,\n \"type\": \"<string>\",\n \"action\": \"<string>\",\n \"use_vision\": true,\n \"test_blueprint_module_id\": 123,\n \"api_request\": {\n \"url\": \"<string>\",\n \"method\": \"<string>\",\n \"headers\": {},\n \"body\": {},\n \"timeout\": 123,\n \"retries\": 123,\n \"backoff_seconds\": 123,\n \"should_refresh_page\": true\n },\n \"trigger_run_config\": {\n \"test_blueprint_id\": 123\n },\n \"attached_file_ids\": [\n 123\n ],\n \"assert_images_count\": 123,\n \"disable_self_healing\": true,\n \"click_count\": 123,\n \"hold_start_duration\": 123,\n \"hold_end_duration\": 123\n }\n ],\n \"starting_url\": \"<string>\",\n \"starting_prompt\": \"<string>\",\n \"test_blueprint_category_id\": 123,\n \"folder_path\": \"<string>\",\n \"device_type\": \"<string>\",\n \"device_name\": \"<string>\",\n \"app_id\": 123,\n \"browser_zoom\": 123,\n \"viewport_width\": 123,\n \"viewport_height\": 123,\n \"num_retries\": 123,\n \"reset_browser_on_retry\": true,\n \"typing_speed\": 123,\n \"persist_self_healed\": true,\n \"file_download_mode\": \"<string>\",\n \"variables\": [\n {\n \"key\": \"<string>\",\n \"type\": \"<string>\",\n \"value\": \"<string>\",\n \"randomConfig\": {}\n }\n ],\n \"setup_module\": 123,\n \"teardown_module\": 123,\n \"status\": \"<string>\",\n \"credentials\": {\n \"username\": \"<string>\",\n \"password\": \"<string>\",\n \"otp_secret\": \"<string>\"\n }\n}"
response = http.request(request)
puts response.read_body{
"message": "<string>",
"test_blueprint": {
"id": 123,
"company_id": 123,
"title": "<string>",
"type": "<string>",
"device_type": "<string>",
"starting_url": "<string>",
"starting_prompt": "<string>",
"test_blueprint_category_id": 123,
"status": "<string>",
"browser_zoom": 123,
"viewport_width": 123,
"viewport_height": 123,
"num_retries": 123,
"persist_self_healed": true,
"file_download_mode": "<string>",
"variables": [
{}
],
"setup_module": 123,
"teardown_module": 123,
"folder_path": "<string>",
"steps": [
{}
],
"created_by": 123,
"created_at": "<string>",
"updated_at": "<string>"
}
}Tests
Create Test
POST
/
test_blueprint
/
create
Create Test
curl --request POST \
--url https://api.docketqa.com/test_blueprint/create \
--header 'Content-Type: application/json' \
--header 'X-API-KEY: <api-key>' \
--data '
{
"title": "<string>",
"type": "<string>",
"steps": [
{
"step_number": 123,
"type": "<string>",
"action": "<string>",
"use_vision": true,
"test_blueprint_module_id": 123,
"api_request": {
"url": "<string>",
"method": "<string>",
"headers": {},
"body": {},
"timeout": 123,
"retries": 123,
"backoff_seconds": 123,
"should_refresh_page": true
},
"trigger_run_config": {
"test_blueprint_id": 123
},
"attached_file_ids": [
123
],
"assert_images_count": 123,
"disable_self_healing": true,
"click_count": 123,
"hold_start_duration": 123,
"hold_end_duration": 123
}
],
"starting_url": "<string>",
"starting_prompt": "<string>",
"test_blueprint_category_id": 123,
"folder_path": "<string>",
"device_type": "<string>",
"device_name": "<string>",
"app_id": 123,
"browser_zoom": 123,
"viewport_width": 123,
"viewport_height": 123,
"num_retries": 123,
"reset_browser_on_retry": true,
"typing_speed": 123,
"persist_self_healed": true,
"file_download_mode": "<string>",
"variables": [
{
"key": "<string>",
"type": "<string>",
"value": "<string>",
"randomConfig": {}
}
],
"setup_module": 123,
"teardown_module": 123,
"status": "<string>",
"credentials": {
"username": "<string>",
"password": "<string>",
"otp_secret": "<string>"
}
}
'import requests
url = "https://api.docketqa.com/test_blueprint/create"
payload = {
"title": "<string>",
"type": "<string>",
"steps": [
{
"step_number": 123,
"type": "<string>",
"action": "<string>",
"use_vision": True,
"test_blueprint_module_id": 123,
"api_request": {
"url": "<string>",
"method": "<string>",
"headers": {},
"body": {},
"timeout": 123,
"retries": 123,
"backoff_seconds": 123,
"should_refresh_page": True
},
"trigger_run_config": { "test_blueprint_id": 123 },
"attached_file_ids": [123],
"assert_images_count": 123,
"disable_self_healing": True,
"click_count": 123,
"hold_start_duration": 123,
"hold_end_duration": 123
}
],
"starting_url": "<string>",
"starting_prompt": "<string>",
"test_blueprint_category_id": 123,
"folder_path": "<string>",
"device_type": "<string>",
"device_name": "<string>",
"app_id": 123,
"browser_zoom": 123,
"viewport_width": 123,
"viewport_height": 123,
"num_retries": 123,
"reset_browser_on_retry": True,
"typing_speed": 123,
"persist_self_healed": True,
"file_download_mode": "<string>",
"variables": [
{
"key": "<string>",
"type": "<string>",
"value": "<string>",
"randomConfig": {}
}
],
"setup_module": 123,
"teardown_module": 123,
"status": "<string>",
"credentials": {
"username": "<string>",
"password": "<string>",
"otp_secret": "<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({
title: '<string>',
type: '<string>',
steps: [
{
step_number: 123,
type: '<string>',
action: '<string>',
use_vision: true,
test_blueprint_module_id: 123,
api_request: {
url: '<string>',
method: '<string>',
headers: {},
body: JSON.stringify({}),
timeout: 123,
retries: 123,
backoff_seconds: 123,
should_refresh_page: true
},
trigger_run_config: {test_blueprint_id: 123},
attached_file_ids: [123],
assert_images_count: 123,
disable_self_healing: true,
click_count: 123,
hold_start_duration: 123,
hold_end_duration: 123
}
],
starting_url: '<string>',
starting_prompt: '<string>',
test_blueprint_category_id: 123,
folder_path: '<string>',
device_type: '<string>',
device_name: '<string>',
app_id: 123,
browser_zoom: 123,
viewport_width: 123,
viewport_height: 123,
num_retries: 123,
reset_browser_on_retry: true,
typing_speed: 123,
persist_self_healed: true,
file_download_mode: '<string>',
variables: [{key: '<string>', type: '<string>', value: '<string>', randomConfig: {}}],
setup_module: 123,
teardown_module: 123,
status: '<string>',
credentials: {username: '<string>', password: '<string>', otp_secret: '<string>'}
})
};
fetch('https://api.docketqa.com/test_blueprint/create', 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.docketqa.com/test_blueprint/create",
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([
'title' => '<string>',
'type' => '<string>',
'steps' => [
[
'step_number' => 123,
'type' => '<string>',
'action' => '<string>',
'use_vision' => true,
'test_blueprint_module_id' => 123,
'api_request' => [
'url' => '<string>',
'method' => '<string>',
'headers' => [
],
'body' => [
],
'timeout' => 123,
'retries' => 123,
'backoff_seconds' => 123,
'should_refresh_page' => true
],
'trigger_run_config' => [
'test_blueprint_id' => 123
],
'attached_file_ids' => [
123
],
'assert_images_count' => 123,
'disable_self_healing' => true,
'click_count' => 123,
'hold_start_duration' => 123,
'hold_end_duration' => 123
]
],
'starting_url' => '<string>',
'starting_prompt' => '<string>',
'test_blueprint_category_id' => 123,
'folder_path' => '<string>',
'device_type' => '<string>',
'device_name' => '<string>',
'app_id' => 123,
'browser_zoom' => 123,
'viewport_width' => 123,
'viewport_height' => 123,
'num_retries' => 123,
'reset_browser_on_retry' => true,
'typing_speed' => 123,
'persist_self_healed' => true,
'file_download_mode' => '<string>',
'variables' => [
[
'key' => '<string>',
'type' => '<string>',
'value' => '<string>',
'randomConfig' => [
]
]
],
'setup_module' => 123,
'teardown_module' => 123,
'status' => '<string>',
'credentials' => [
'username' => '<string>',
'password' => '<string>',
'otp_secret' => '<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.docketqa.com/test_blueprint/create"
payload := strings.NewReader("{\n \"title\": \"<string>\",\n \"type\": \"<string>\",\n \"steps\": [\n {\n \"step_number\": 123,\n \"type\": \"<string>\",\n \"action\": \"<string>\",\n \"use_vision\": true,\n \"test_blueprint_module_id\": 123,\n \"api_request\": {\n \"url\": \"<string>\",\n \"method\": \"<string>\",\n \"headers\": {},\n \"body\": {},\n \"timeout\": 123,\n \"retries\": 123,\n \"backoff_seconds\": 123,\n \"should_refresh_page\": true\n },\n \"trigger_run_config\": {\n \"test_blueprint_id\": 123\n },\n \"attached_file_ids\": [\n 123\n ],\n \"assert_images_count\": 123,\n \"disable_self_healing\": true,\n \"click_count\": 123,\n \"hold_start_duration\": 123,\n \"hold_end_duration\": 123\n }\n ],\n \"starting_url\": \"<string>\",\n \"starting_prompt\": \"<string>\",\n \"test_blueprint_category_id\": 123,\n \"folder_path\": \"<string>\",\n \"device_type\": \"<string>\",\n \"device_name\": \"<string>\",\n \"app_id\": 123,\n \"browser_zoom\": 123,\n \"viewport_width\": 123,\n \"viewport_height\": 123,\n \"num_retries\": 123,\n \"reset_browser_on_retry\": true,\n \"typing_speed\": 123,\n \"persist_self_healed\": true,\n \"file_download_mode\": \"<string>\",\n \"variables\": [\n {\n \"key\": \"<string>\",\n \"type\": \"<string>\",\n \"value\": \"<string>\",\n \"randomConfig\": {}\n }\n ],\n \"setup_module\": 123,\n \"teardown_module\": 123,\n \"status\": \"<string>\",\n \"credentials\": {\n \"username\": \"<string>\",\n \"password\": \"<string>\",\n \"otp_secret\": \"<string>\"\n }\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.docketqa.com/test_blueprint/create")
.header("X-API-KEY", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"title\": \"<string>\",\n \"type\": \"<string>\",\n \"steps\": [\n {\n \"step_number\": 123,\n \"type\": \"<string>\",\n \"action\": \"<string>\",\n \"use_vision\": true,\n \"test_blueprint_module_id\": 123,\n \"api_request\": {\n \"url\": \"<string>\",\n \"method\": \"<string>\",\n \"headers\": {},\n \"body\": {},\n \"timeout\": 123,\n \"retries\": 123,\n \"backoff_seconds\": 123,\n \"should_refresh_page\": true\n },\n \"trigger_run_config\": {\n \"test_blueprint_id\": 123\n },\n \"attached_file_ids\": [\n 123\n ],\n \"assert_images_count\": 123,\n \"disable_self_healing\": true,\n \"click_count\": 123,\n \"hold_start_duration\": 123,\n \"hold_end_duration\": 123\n }\n ],\n \"starting_url\": \"<string>\",\n \"starting_prompt\": \"<string>\",\n \"test_blueprint_category_id\": 123,\n \"folder_path\": \"<string>\",\n \"device_type\": \"<string>\",\n \"device_name\": \"<string>\",\n \"app_id\": 123,\n \"browser_zoom\": 123,\n \"viewport_width\": 123,\n \"viewport_height\": 123,\n \"num_retries\": 123,\n \"reset_browser_on_retry\": true,\n \"typing_speed\": 123,\n \"persist_self_healed\": true,\n \"file_download_mode\": \"<string>\",\n \"variables\": [\n {\n \"key\": \"<string>\",\n \"type\": \"<string>\",\n \"value\": \"<string>\",\n \"randomConfig\": {}\n }\n ],\n \"setup_module\": 123,\n \"teardown_module\": 123,\n \"status\": \"<string>\",\n \"credentials\": {\n \"username\": \"<string>\",\n \"password\": \"<string>\",\n \"otp_secret\": \"<string>\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.docketqa.com/test_blueprint/create")
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 \"title\": \"<string>\",\n \"type\": \"<string>\",\n \"steps\": [\n {\n \"step_number\": 123,\n \"type\": \"<string>\",\n \"action\": \"<string>\",\n \"use_vision\": true,\n \"test_blueprint_module_id\": 123,\n \"api_request\": {\n \"url\": \"<string>\",\n \"method\": \"<string>\",\n \"headers\": {},\n \"body\": {},\n \"timeout\": 123,\n \"retries\": 123,\n \"backoff_seconds\": 123,\n \"should_refresh_page\": true\n },\n \"trigger_run_config\": {\n \"test_blueprint_id\": 123\n },\n \"attached_file_ids\": [\n 123\n ],\n \"assert_images_count\": 123,\n \"disable_self_healing\": true,\n \"click_count\": 123,\n \"hold_start_duration\": 123,\n \"hold_end_duration\": 123\n }\n ],\n \"starting_url\": \"<string>\",\n \"starting_prompt\": \"<string>\",\n \"test_blueprint_category_id\": 123,\n \"folder_path\": \"<string>\",\n \"device_type\": \"<string>\",\n \"device_name\": \"<string>\",\n \"app_id\": 123,\n \"browser_zoom\": 123,\n \"viewport_width\": 123,\n \"viewport_height\": 123,\n \"num_retries\": 123,\n \"reset_browser_on_retry\": true,\n \"typing_speed\": 123,\n \"persist_self_healed\": true,\n \"file_download_mode\": \"<string>\",\n \"variables\": [\n {\n \"key\": \"<string>\",\n \"type\": \"<string>\",\n \"value\": \"<string>\",\n \"randomConfig\": {}\n }\n ],\n \"setup_module\": 123,\n \"teardown_module\": 123,\n \"status\": \"<string>\",\n \"credentials\": {\n \"username\": \"<string>\",\n \"password\": \"<string>\",\n \"otp_secret\": \"<string>\"\n }\n}"
response = http.request(request)
puts response.read_body{
"message": "<string>",
"test_blueprint": {
"id": 123,
"company_id": 123,
"title": "<string>",
"type": "<string>",
"device_type": "<string>",
"starting_url": "<string>",
"starting_prompt": "<string>",
"test_blueprint_category_id": 123,
"status": "<string>",
"browser_zoom": 123,
"viewport_width": 123,
"viewport_height": 123,
"num_retries": 123,
"persist_self_healed": true,
"file_download_mode": "<string>",
"variables": [
{}
],
"setup_module": 123,
"teardown_module": 123,
"folder_path": "<string>",
"steps": [
{}
],
"created_by": 123,
"created_at": "<string>",
"updated_at": "<string>"
}
}Create a new test blueprint with a title, starting URL, and a sequence of steps.
Request body
Required fields
The name of the test. Must be between 1 and 128 characters and unique within your account.
The blueprint type. Must be one of:
"integration"— a standard end-to-end test"module"— an account/login module (requiresstarting_urlandcredentials)
To create reusable modules, use the Create Module endpoint instead.
An ordered list of steps for the test to execute. Required for
integration type.Show Step object properties
Show Step object properties
The position of this step in the sequence (starting from 1). Must be unique within the test.
The step type. Available types:AI steps:
"act"— an AI-driven browser action (e.g. click, type, navigate). Action text must not be empty."assert"— an AI-driven assertion that verifies something on the page.
"step_module"— execute a reusable module. Requirestest_blueprint_module_id."trigger_run"— trigger another test as a sub-run. Requirestrigger_run_config.
"api"— make an HTTP request. Requiresapi_request.
"key"— press a keyboard key."type"— type text into the focused element."mouse_move"— move the mouse to coordinates."left_click"— left click at coordinates."left_click_drag"— click and drag from one point to another."right_click"— right click at coordinates."double_click"— double click at coordinates."triple_click"— triple click at coordinates."scroll"— scroll the page."wait"— wait for a duration.
"deeplink"— open a deep link URL. Only supported whendevice_typeis"android"or"ios".
A natural language instruction describing what the step should do. For recorded steps, this contains the coordinates or key data. For
api steps, this can be left empty.Whether to enable vision (screenshot analysis) for this step. Defaults to
false.The ID of the module to execute. Required when
type is "step_module".The HTTP request configuration. Required for steps with
type: "api".Show API request properties
Show API request properties
The full URL to send the request to.
The HTTP method (e.g.
"GET", "POST", "PUT", "DELETE").Key-value pairs for request headers.
The request body (for POST, PUT, PATCH requests).
Request timeout in seconds. Defaults to
60.Number of retries on failure. Defaults to
1.Delay between retries in seconds. Defaults to
2.5.Whether to refresh the browser page after the API call. Defaults to
false.Configuration for triggering another test. Required when
type is "trigger_run".Show Trigger run config properties
Show Trigger run config properties
The ID of the test blueprint to trigger as a sub-run.
Array of file IDs to attach to this step. Files must be uploaded to the test blueprint first.
Number of screenshot images to capture for assertion steps. Defaults to
5.Disable automatic self-healing for this step. Defaults to
false.Number of clicks to perform for click-type steps. Defaults to
1.Duration in seconds to hold before the action. Defaults to
0.Duration in seconds to hold after the action. Defaults to
0.Optional fields
The URL the browser navigates to before executing steps. Must be a valid URL starting with
http:// or https://. Required when type is "module".A high-level description of what the test does. Used as additional context for the AI agent.
The ID of the test suite this test belongs to. You can find this ID in the Docket dashboard URL when on the Test Suites tab.
The folder path for organizing the test. Defaults to
"/".The device to run the test on. Must be one of:
"browser"— desktop browser (default)"android"— Android device"ios"— iOS device
The specific device name to use for mobile testing (when
device_type is "android" or "ios").The ID of the mobile app to associate with this test. Used for Android and iOS testing.
Browser zoom level. Must be between
0.75 and 2.0. Defaults to 1.0.Browser viewport width in pixels. Defaults to
1440.Browser viewport height in pixels. Defaults to
900.Number of automatic retries if the test fails. Must be between
0 and 3. Defaults to 0.Whether to reset the browser session on retry. Defaults to
true.Typing speed in milliseconds per character. Must be between
1 and 1000. Defaults to null (uses the default speed of 12ms).Whether to persist self-healed action caches so future runs use the healed selectors. Defaults to
true.How to handle file downloads during the test. Must be one of:
"save_only"— save downloaded files without processing (default)"ingest_content"— save and ingest file contents for the AI agent to use
Variables that can be referenced in step actions using
{{variable_key}} syntax.The ID of a module to run before the test steps begin. Useful for common setup tasks like authentication.
The ID of a module to run after the test steps complete. Useful for cleanup tasks.
The initial status of the test. Must be
"active" or "paused". Defaults to "active".Example: Basic integration test
{
"title": "Login Flow",
"type": "integration",
"test_blueprint_category_id": 12,
"starting_url": "https://example.com/login",
"steps": [
{
"step_number": 1,
"type": "act",
"action": "Enter 'user@example.com' in the email field"
},
{
"step_number": 2,
"type": "act",
"action": "Enter 'password123' in the password field"
},
{
"step_number": 3,
"type": "act",
"action": "Click the 'Log In' button"
},
{
"step_number": 4,
"type": "assert",
"action": "Verify user is redirected to the dashboard page"
}
]
}
Example: Test with module, API step, and variables
{
"title": "Create Campaign with API Setup",
"type": "integration",
"starting_url": "https://app.example.com",
"setup_module": 42,
"num_retries": 1,
"variables": [
{
"key": "campaign_name",
"type": "random",
"randomConfig": { "prefix": "Test Campaign " }
}
],
"steps": [
{
"step_number": 1,
"type": "api",
"action": "",
"api_request": {
"url": "https://api.example.com/campaigns",
"method": "POST",
"headers": { "Authorization": "Bearer {{token}}" },
"body": { "name": "{{campaign_name}}" },
"timeout": 30
}
},
{
"step_number": 2,
"type": "act",
"action": "Navigate to the campaigns list"
},
{
"step_number": 3,
"type": "assert",
"action": "Verify '{{campaign_name}}' appears in the campaign list"
},
{
"step_number": 4,
"type": "step_module",
"action": "Run cleanup module",
"test_blueprint_module_id": 99
}
]
}
Response
A confirmation message (e.g.
"Test blueprint created successfully").The created test blueprint object.
Show Properties
Show Properties
The unique ID of the test blueprint.
Your company ID.
The test title.
The blueprint type (
"integration" or "module").The device type (
"browser", "android", or "ios").The starting URL for the test.
The high-level description of the test.
The test suite ID.
The test status (
"active" or "paused").The browser zoom level.
Browser viewport width.
Browser viewport height.
Number of automatic retries on failure.
Whether self-healed caches are persisted.
The file download handling mode.
Variables defined for this test.
The setup module ID, if set.
The teardown module ID, if set.
The folder path of the test.
The list of test steps with their generated IDs.
The ID of the user who created the test.
ISO 8601 timestamp of when the test was created.
ISO 8601 timestamp of when the test was last updated.
Example response
{
"message": "Test blueprint created successfully",
"test_blueprint": {
"id": 181,
"company_id": 2,
"title": "Login Flow",
"type": "integration",
"device_type": "browser",
"status": "active",
"starting_url": "https://example.com/login",
"starting_prompt": null,
"test_blueprint_category_id": 12,
"browser_zoom": 1.0,
"viewport_width": 1440,
"viewport_height": 900,
"num_retries": 0,
"persist_self_healed": true,
"file_download_mode": "save_only",
"variables": null,
"setup_module": null,
"teardown_module": null,
"folder_path": "/",
"created_by": 4,
"created_at": "2025-07-03T01:45:55.486917+00:00",
"updated_at": "2025-07-03T01:45:55.486923+00:00",
"steps": [
{
"id": 564,
"step_number": 1,
"test_blueprint_id": 181,
"type": "act",
"action": "Enter 'user@example.com' in the email field",
"use_vision": false,
"disable_self_healing": false,
"click_count": 1
},
{
"id": 565,
"step_number": 2,
"test_blueprint_id": 181,
"type": "act",
"action": "Enter 'password123' in the password field",
"use_vision": false,
"disable_self_healing": false,
"click_count": 1
},
{
"id": 566,
"step_number": 3,
"test_blueprint_id": 181,
"type": "act",
"action": "Click the 'Log In' button",
"use_vision": false,
"disable_self_healing": false,
"click_count": 1
},
{
"id": 567,
"step_number": 4,
"test_blueprint_id": 181,
"type": "assert",
"action": "Verify user is redirected to the dashboard page",
"use_vision": false,
"disable_self_healing": false,
"click_count": 1
}
]
}
}
⌘I

