curl --request POST \
--url https://api.duvo.ai/v2/queues/{queue_id}/cases \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"cases": [
{
"title": "<string>",
"data": "<string>",
"json_data": {},
"labels": [
{
"value": "<string>",
"key": ""
}
]
}
]
}
'import requests
url = "https://api.duvo.ai/v2/queues/{queue_id}/cases"
payload = { "cases": [
{
"title": "<string>",
"data": "<string>",
"json_data": {},
"labels": [
{
"value": "<string>",
"key": ""
}
]
}
] }
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({
cases: [
{
title: '<string>',
data: '<string>',
json_data: {},
labels: [{value: '<string>', key: ''}]
}
]
})
};
fetch('https://api.duvo.ai/v2/queues/{queue_id}/cases', 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.duvo.ai/v2/queues/{queue_id}/cases",
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([
'cases' => [
[
'title' => '<string>',
'data' => '<string>',
'json_data' => [
],
'labels' => [
[
'value' => '<string>',
'key' => ''
]
]
]
]
]),
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.duvo.ai/v2/queues/{queue_id}/cases"
payload := strings.NewReader("{\n \"cases\": [\n {\n \"title\": \"<string>\",\n \"data\": \"<string>\",\n \"json_data\": {},\n \"labels\": [\n {\n \"value\": \"<string>\",\n \"key\": \"\"\n }\n ]\n }\n ]\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.duvo.ai/v2/queues/{queue_id}/cases")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"cases\": [\n {\n \"title\": \"<string>\",\n \"data\": \"<string>\",\n \"json_data\": {},\n \"labels\": [\n {\n \"value\": \"<string>\",\n \"key\": \"\"\n }\n ]\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.duvo.ai/v2/queues/{queue_id}/cases")
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 \"cases\": [\n {\n \"title\": \"<string>\",\n \"data\": \"<string>\",\n \"json_data\": {},\n \"labels\": [\n {\n \"value\": \"<string>\",\n \"key\": \"\"\n }\n ]\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"added_cases": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"queue_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"title": "<string>",
"data": "<string>",
"status": "pending",
"priority": "none",
"display_status": "pending",
"claimed_at": "<string>",
"claimed_by_run_id": "<string>",
"completed_at": "<string>",
"postponed_to": "<string>",
"created_at": "<string>",
"updated_at": "<string>",
"created_by_user_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"created_by_user_name": "<string>",
"created_by_user_email": "<string>",
"agent_run_status": "<string>",
"agent_run_user_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"pending_human_request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"pending_approval_batch_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"pending_approval_assignee_user_ids": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"approval_approved_count": 4503599627370495,
"approval_rejected_count": 4503599627370495,
"labels": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"key": "<string>",
"value": "<string>",
"color_hue": 180
}
],
"json_data": {},
"json_schema_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"outcome_source": "system",
"outcome_severity": "critical",
"eval_summary": {
"passed": 123,
"total": 123,
"status": "ready",
"evaluationId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"final_comment": "<string>",
"severityCounts": {
"critical": 4503599627370495,
"medium": 4503599627370495,
"low": 4503599627370495
}
},
"search_match_data_snippet": {
"before": "<string>",
"match": "<string>",
"after": "<string>"
}
}
]
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}Create Cases
Create one or more cases in a queue. Provide either a single case object or a cases array (1-100); providing both returns 400. Each case takes a title (max 500 chars), optional labels that will be assigned to the case on creation (missing labels are created on the queue), and an optional priority (none, medium, or high; medium/high raise it above the default in the queue, none is the default; priority only affects the order pending cases are picked up in: due postponed cases are handled first, then higher priority). For the case payload, send free-form data OR a structured json_data object, never both, and a single request must be all free-text or all structured. json_data is validated against the queue’s Case schema and requires the queue to have one; a schema-guarded queue accepts only json_data, while a queue without the guard also accepts free-text data. A guarded queue that has no schema yet accepts free-text data only when the team has typed Case schemas turned off (there is then no way to declare a schema, so the guard cannot apply).
curl --request POST \
--url https://api.duvo.ai/v2/queues/{queue_id}/cases \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"cases": [
{
"title": "<string>",
"data": "<string>",
"json_data": {},
"labels": [
{
"value": "<string>",
"key": ""
}
]
}
]
}
'import requests
url = "https://api.duvo.ai/v2/queues/{queue_id}/cases"
payload = { "cases": [
{
"title": "<string>",
"data": "<string>",
"json_data": {},
"labels": [
{
"value": "<string>",
"key": ""
}
]
}
] }
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({
cases: [
{
title: '<string>',
data: '<string>',
json_data: {},
labels: [{value: '<string>', key: ''}]
}
]
})
};
fetch('https://api.duvo.ai/v2/queues/{queue_id}/cases', 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.duvo.ai/v2/queues/{queue_id}/cases",
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([
'cases' => [
[
'title' => '<string>',
'data' => '<string>',
'json_data' => [
],
'labels' => [
[
'value' => '<string>',
'key' => ''
]
]
]
]
]),
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.duvo.ai/v2/queues/{queue_id}/cases"
payload := strings.NewReader("{\n \"cases\": [\n {\n \"title\": \"<string>\",\n \"data\": \"<string>\",\n \"json_data\": {},\n \"labels\": [\n {\n \"value\": \"<string>\",\n \"key\": \"\"\n }\n ]\n }\n ]\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.duvo.ai/v2/queues/{queue_id}/cases")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"cases\": [\n {\n \"title\": \"<string>\",\n \"data\": \"<string>\",\n \"json_data\": {},\n \"labels\": [\n {\n \"value\": \"<string>\",\n \"key\": \"\"\n }\n ]\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.duvo.ai/v2/queues/{queue_id}/cases")
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 \"cases\": [\n {\n \"title\": \"<string>\",\n \"data\": \"<string>\",\n \"json_data\": {},\n \"labels\": [\n {\n \"value\": \"<string>\",\n \"key\": \"\"\n }\n ]\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"added_cases": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"queue_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"title": "<string>",
"data": "<string>",
"status": "pending",
"priority": "none",
"display_status": "pending",
"claimed_at": "<string>",
"claimed_by_run_id": "<string>",
"completed_at": "<string>",
"postponed_to": "<string>",
"created_at": "<string>",
"updated_at": "<string>",
"created_by_user_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"created_by_user_name": "<string>",
"created_by_user_email": "<string>",
"agent_run_status": "<string>",
"agent_run_user_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"pending_human_request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"pending_approval_batch_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"pending_approval_assignee_user_ids": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"approval_approved_count": 4503599627370495,
"approval_rejected_count": 4503599627370495,
"labels": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"key": "<string>",
"value": "<string>",
"color_hue": 180
}
],
"json_data": {},
"json_schema_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"outcome_source": "system",
"outcome_severity": "critical",
"eval_summary": {
"passed": 123,
"total": 123,
"status": "ready",
"evaluationId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"final_comment": "<string>",
"severityCounts": {
"critical": 4503599627370495,
"medium": 4503599627370495,
"low": 4503599627370495
}
},
"search_match_data_snippet": {
"before": "<string>",
"match": "<string>",
"after": "<string>"
}
}
]
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}Authorizations
API key authentication. Get your API key from the Duvo dashboard.
Path Parameters
The queue's unique identifier
Body
Response
Default Response
Show child attributes
Show child attributes
Was this page helpful?