curl --request POST \
--url https://api.{environment}.corti.app/v2/agentic/contexts/{contextId}/tasks/{taskId}/feedback \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'Tenant-Name: <api-key>' \
--data '
{
"rating": {
"scale": "binary",
"value": 1
}
}
'import { CortiClient, CortiEnvironment } from "@corti/sdk";
const client = new CortiClient({
environment: CortiEnvironment.Eu,
auth: {
clientId: "YOUR_CLIENT_ID",
clientSecret: "YOUR_CLIENT_SECRET"
},
tenantName: "YOUR_TENANT_NAME"
});
await client.agentic.contexts.tasks.feedback.create("ctx.0192f4c8-3d6b-7c4f-a02b-4d9e7f3c8b51", "task.0192f4c8-4e7c-7d50-b13c-5eaf8a4d9c62", {
rating: {
scale: "binary",
value: 0
},
labels: ["unsupportedClaim"],
reason: "The response stated that the patient had diabetes, but this was not present in the available data.",
target: {
messageId: "msg.0192f4c8-5f8d-7e61-924d-6fb09b5ead73"
},
metadata: {
collectionMethod: "caseReview",
clientReference: "case-review-728193",
actor: {
externalId: "clinician_4182"
}
}
});
using Corti.Agentic.Contexts.Tasks;
using Corti;
var client = new CortiClient(
"TENANT_NAME",
CortiClientEnvironment.Eu,
new CortiClientAuth.ClientCredentials("client_id", "client_secret")
);
await client.Agentic.Contexts.Tasks.Feedback.CreateAsync(
"ctx.0192f4c8-3d6b-7c4f-a02b-4d9e7f3c8b51",
"task.0192f4c8-4e7c-7d50-b13c-5eaf8a4d9c62",
new AgenticFeedbackCreateRequest
{
Rating = new AgenticFeedbackRating { Scale = AgenticFeedbackRatingScale.Binary, Value = 0 },
Labels = new List<AgenticFeedbackLabel>() { AgenticFeedbackLabel.UnsupportedClaim },
Reason =
"The response stated that the patient had diabetes, but this was not present in the available data.",
Target = new AgenticFeedbackTarget
{
MessageId = "msg.0192f4c8-5f8d-7e61-924d-6fb09b5ead73",
},
Metadata = new AgenticFeedbackMetadata
{
CollectionMethod = "caseReview",
ClientReference = "case-review-728193",
Actor = new AgenticFeedbackActor { ExternalId = "clinician_4182" },
},
}
);
import requests
url = "https://api.{environment}.corti.app/v2/agentic/contexts/{contextId}/tasks/{taskId}/feedback"
payload = { "rating": {
"scale": "binary",
"value": 1
} }
headers = {
"Authorization": "Bearer <token>",
"Tenant-Name": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.{environment}.corti.app/v2/agentic/contexts/{contextId}/tasks/{taskId}/feedback",
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([
'rating' => [
'scale' => 'binary',
'value' => 1
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json",
"Tenant-Name: <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.{environment}.corti.app/v2/agentic/contexts/{contextId}/tasks/{taskId}/feedback"
payload := strings.NewReader("{\n \"rating\": {\n \"scale\": \"binary\",\n \"value\": 1\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Tenant-Name", "<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.{environment}.corti.app/v2/agentic/contexts/{contextId}/tasks/{taskId}/feedback")
.header("Authorization", "Bearer <token>")
.header("Tenant-Name", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"rating\": {\n \"scale\": \"binary\",\n \"value\": 1\n }\n}")
.asString();{
"id": "fb.0192f4c8-9a3b-7e2f-9c4d-5a6b7c8d9e0f",
"taskId": "task.0192f4c8-4e7c-7d50-b13c-5eaf8a4d9c62",
"rating": {
"scale": "binary",
"value": 1
},
"normalizedScore": 1,
"labels": [],
"createdAt": "2026-05-19T12:00:00Z"
}{
"error": {
"code": "ASSIGNMENT_CONFLICT",
"message": "could not complete assignment",
"details": {
"assignment_id": "asg_99",
"expert_id": "exp_42"
}
}
}{
"error": {
"code": "ASSIGNMENT_CONFLICT",
"message": "could not complete assignment",
"details": {
"assignment_id": "asg_99",
"expert_id": "exp_42"
}
}
}{
"error": {
"code": "ASSIGNMENT_CONFLICT",
"message": "could not complete assignment",
"details": {
"assignment_id": "asg_99",
"expert_id": "exp_42"
}
}
}{
"error": {
"code": "ASSIGNMENT_CONFLICT",
"message": "could not complete assignment",
"details": {
"assignment_id": "asg_99",
"expert_id": "exp_42"
}
}
}Submit feedback for a task
Submits feedback about a task as a whole or about a specific user-visible message within the task. The task must exist, belong to the supplied context, and belong to the authenticated customer. Multiple feedback resources may be submitted for the same task or message.
curl --request POST \
--url https://api.{environment}.corti.app/v2/agentic/contexts/{contextId}/tasks/{taskId}/feedback \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'Tenant-Name: <api-key>' \
--data '
{
"rating": {
"scale": "binary",
"value": 1
}
}
'import { CortiClient, CortiEnvironment } from "@corti/sdk";
const client = new CortiClient({
environment: CortiEnvironment.Eu,
auth: {
clientId: "YOUR_CLIENT_ID",
clientSecret: "YOUR_CLIENT_SECRET"
},
tenantName: "YOUR_TENANT_NAME"
});
await client.agentic.contexts.tasks.feedback.create("ctx.0192f4c8-3d6b-7c4f-a02b-4d9e7f3c8b51", "task.0192f4c8-4e7c-7d50-b13c-5eaf8a4d9c62", {
rating: {
scale: "binary",
value: 0
},
labels: ["unsupportedClaim"],
reason: "The response stated that the patient had diabetes, but this was not present in the available data.",
target: {
messageId: "msg.0192f4c8-5f8d-7e61-924d-6fb09b5ead73"
},
metadata: {
collectionMethod: "caseReview",
clientReference: "case-review-728193",
actor: {
externalId: "clinician_4182"
}
}
});
using Corti.Agentic.Contexts.Tasks;
using Corti;
var client = new CortiClient(
"TENANT_NAME",
CortiClientEnvironment.Eu,
new CortiClientAuth.ClientCredentials("client_id", "client_secret")
);
await client.Agentic.Contexts.Tasks.Feedback.CreateAsync(
"ctx.0192f4c8-3d6b-7c4f-a02b-4d9e7f3c8b51",
"task.0192f4c8-4e7c-7d50-b13c-5eaf8a4d9c62",
new AgenticFeedbackCreateRequest
{
Rating = new AgenticFeedbackRating { Scale = AgenticFeedbackRatingScale.Binary, Value = 0 },
Labels = new List<AgenticFeedbackLabel>() { AgenticFeedbackLabel.UnsupportedClaim },
Reason =
"The response stated that the patient had diabetes, but this was not present in the available data.",
Target = new AgenticFeedbackTarget
{
MessageId = "msg.0192f4c8-5f8d-7e61-924d-6fb09b5ead73",
},
Metadata = new AgenticFeedbackMetadata
{
CollectionMethod = "caseReview",
ClientReference = "case-review-728193",
Actor = new AgenticFeedbackActor { ExternalId = "clinician_4182" },
},
}
);
import requests
url = "https://api.{environment}.corti.app/v2/agentic/contexts/{contextId}/tasks/{taskId}/feedback"
payload = { "rating": {
"scale": "binary",
"value": 1
} }
headers = {
"Authorization": "Bearer <token>",
"Tenant-Name": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.{environment}.corti.app/v2/agentic/contexts/{contextId}/tasks/{taskId}/feedback",
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([
'rating' => [
'scale' => 'binary',
'value' => 1
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json",
"Tenant-Name: <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.{environment}.corti.app/v2/agentic/contexts/{contextId}/tasks/{taskId}/feedback"
payload := strings.NewReader("{\n \"rating\": {\n \"scale\": \"binary\",\n \"value\": 1\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Tenant-Name", "<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.{environment}.corti.app/v2/agentic/contexts/{contextId}/tasks/{taskId}/feedback")
.header("Authorization", "Bearer <token>")
.header("Tenant-Name", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"rating\": {\n \"scale\": \"binary\",\n \"value\": 1\n }\n}")
.asString();{
"id": "fb.0192f4c8-9a3b-7e2f-9c4d-5a6b7c8d9e0f",
"taskId": "task.0192f4c8-4e7c-7d50-b13c-5eaf8a4d9c62",
"rating": {
"scale": "binary",
"value": 1
},
"normalizedScore": 1,
"labels": [],
"createdAt": "2026-05-19T12:00:00Z"
}{
"error": {
"code": "ASSIGNMENT_CONFLICT",
"message": "could not complete assignment",
"details": {
"assignment_id": "asg_99",
"expert_id": "exp_42"
}
}
}{
"error": {
"code": "ASSIGNMENT_CONFLICT",
"message": "could not complete assignment",
"details": {
"assignment_id": "asg_99",
"expert_id": "exp_42"
}
}
}{
"error": {
"code": "ASSIGNMENT_CONFLICT",
"message": "could not complete assignment",
"details": {
"assignment_id": "asg_99",
"expert_id": "exp_42"
}
}
}{
"error": {
"code": "ASSIGNMENT_CONFLICT",
"message": "could not complete assignment",
"details": {
"assignment_id": "asg_99",
"expert_id": "exp_42"
}
}
}Authorizations
OAuth 2.0 / OIDC bearer token.
The tenant the request operates within.
Path Parameters
Context identifier (prefixed UUIDv7).
Context identifier. Accepts ctx.<uuidv7> or a bare UUIDv7 on input; always returned prefixed.
^(ctx\.)?[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"ctx.0192f4c8-3d6b-7c4f-a02b-4d9e7f3c8b51"
Task identifier (prefixed UUIDv7).
Task identifier. Accepts task.<uuidv7> or a bare UUIDv7 on input; always returned prefixed.
^(task\.)?[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"task.0192f4c8-4e7c-7d50-b13c-5eaf8a4d9c62"
Body
The feedback to submit.
Request body for submitting task feedback.
The original rating supplied by the customer.
Show child attributes
Show child attributes
{ "scale": "binary", "value": 1 }
Structured observations about the result. Defaults to an empty array. Positive and negative labels may be combined. Duplicate labels are rejected. A maximum of five labels may be submitted.
5Structured observation about the result. Positive and negative labels share one taxonomy so customers can represent mixed feedback.
correct— factually and contextually correct (positive).complete— included the important expected information (positive).helpful— materially helped the user complete their task (positive).wellPresented— clear, readable, appropriately structured (positive).efficient— reached a useful result without unnecessary content (positive).incorrect— one or more claims, conclusions, or actions were wrong (negative).missingInformation— important or expected information was omitted (negative).irrelevant— included content that did not address the request (negative).misunderstoodRequest— the system responded to the wrong intent (negative).unsupportedClaim— a claim not supported by available information (negative).unsafeOrInappropriate— unsafe, disallowed, or unsuitable (negative).poorlyPresented— difficult to read or unsuitably structured (negative).tooVerbose— substantially more detail than useful (negative).other— another observation described inreason(both).
correct, complete, helpful, wellPresented, efficient, incorrect, missingInformation, irrelevant, misunderstoodRequest, unsupportedClaim, unsafeOrInappropriate, poorlyPresented, tooVerbose, other The user's explanation of the rating or labels. Required when labels
contains other.
1000"The response stated the patient had diabetes"
"but this was not present in the available data."
Identifies the specific user-visible response being evaluated. If omitted, the feedback applies to the task as a whole.
Show child attributes
Show child attributes
Customer-provided provenance and correlation information.
Show child attributes
Show child attributes
Response
Feedback created.
A stored feedback resource.
Feedback identifier. Accepts fb.<uuidv7> or a bare UUIDv7 on input; always returned prefixed.
^(fb\.)?[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"fb.0192f4c8-7e2a-7b3c-9d4e-5f6a7b8c9d01"
Task identifier. Accepts task.<uuidv7> or a bare UUIDv7 on input; always returned prefixed.
^(task\.)?[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"task.0192f4c8-4e7c-7d50-b13c-5eaf8a4d9c62"
The original rating supplied by the customer.
Show child attributes
Show child attributes
{ "scale": "binary", "value": 1 }
Corti-derived internal score between 0 and 1. The original scale and value are always retained alongside this score.
0 <= x <= 11
Structured observations about the result.
Structured observation about the result. Positive and negative labels share one taxonomy so customers can represent mixed feedback.
correct— factually and contextually correct (positive).complete— included the important expected information (positive).helpful— materially helped the user complete their task (positive).wellPresented— clear, readable, appropriately structured (positive).efficient— reached a useful result without unnecessary content (positive).incorrect— one or more claims, conclusions, or actions were wrong (negative).missingInformation— important or expected information was omitted (negative).irrelevant— included content that did not address the request (negative).misunderstoodRequest— the system responded to the wrong intent (negative).unsupportedClaim— a claim not supported by available information (negative).unsafeOrInappropriate— unsafe, disallowed, or unsuitable (negative).poorlyPresented— difficult to read or unsuitably structured (negative).tooVerbose— substantially more detail than useful (negative).other— another observation described inreason(both).
correct, complete, helpful, wellPresented, efficient, incorrect, missingInformation, irrelevant, misunderstoodRequest, unsupportedClaim, unsafeOrInappropriate, poorlyPresented, tooVerbose, other ["correct", "helpful"]
When the feedback was created.
"2026-05-19T12:00:00Z"
Free-text explanation of the rating or labels.
1000"The response stated the patient had diabetes"
"but this was not present in the available data."
Identifies the specific user-visible response being evaluated. If omitted, the feedback applies to the task as a whole.
Show child attributes
Show child attributes
Customer-provided provenance and correlation information.
Show child attributes
Show child attributes
Was this page helpful?