curl --request POST \
--url https://api.valiqor.com/v2/failure-analysis/analyze \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"dataset": [
{
"context": [
"France is a country in Western Europe. Its capital is Paris."
],
"input": "What is the capital of France?",
"output": "The capital of France is Berlin."
}
],
"feature_kind": "rag",
"run_eval": true,
"run_security": false
}
'import requests
url = "https://api.valiqor.com/v2/failure-analysis/analyze"
payload = {
"dataset": [
{
"context": ["France is a country in Western Europe. Its capital is Paris."],
"input": "What is the capital of France?",
"output": "The capital of France is Berlin."
}
],
"feature_kind": "rag",
"run_eval": True,
"run_security": False
}
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({
dataset: [
{
context: ['France is a country in Western Europe. Its capital is Paris.'],
input: 'What is the capital of France?',
output: 'The capital of France is Berlin.'
}
],
feature_kind: 'rag',
run_eval: true,
run_security: false
})
};
fetch('https://api.valiqor.com/v2/failure-analysis/analyze', 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.valiqor.com/v2/failure-analysis/analyze",
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([
'dataset' => [
[
'context' => [
'France is a country in Western Europe. Its capital is Paris.'
],
'input' => 'What is the capital of France?',
'output' => 'The capital of France is Berlin.'
]
],
'feature_kind' => 'rag',
'run_eval' => true,
'run_security' => false
]),
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.valiqor.com/v2/failure-analysis/analyze"
payload := strings.NewReader("{\n \"dataset\": [\n {\n \"context\": [\n \"France is a country in Western Europe. Its capital is Paris.\"\n ],\n \"input\": \"What is the capital of France?\",\n \"output\": \"The capital of France is Berlin.\"\n }\n ],\n \"feature_kind\": \"rag\",\n \"run_eval\": true,\n \"run_security\": false\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.valiqor.com/v2/failure-analysis/analyze")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"dataset\": [\n {\n \"context\": [\n \"France is a country in Western Europe. Its capital is Paris.\"\n ],\n \"input\": \"What is the capital of France?\",\n \"output\": \"The capital of France is Berlin.\"\n }\n ],\n \"feature_kind\": \"rag\",\n \"run_eval\": true,\n \"run_security\": false\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.valiqor.com/v2/failure-analysis/analyze")
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 \"dataset\": [\n {\n \"context\": [\n \"France is a country in Western Europe. Its capital is Paris.\"\n ],\n \"input\": \"What is the capital of France?\",\n \"output\": \"The capital of France is Berlin.\"\n }\n ],\n \"feature_kind\": \"rag\",\n \"run_eval\": true,\n \"run_security\": false\n}"
response = http.request(request)
puts response.read_body{
"run_id": "<string>",
"status": "<string>",
"mode": "<string>",
"input_type": "<string>",
"feature_kind": "<string>",
"summary": {
"primary_failure": "<string>",
"primary_failure_name": "<string>",
"overall_severity": 0,
"overall_confidence": 0,
"total_failures_detected": 0,
"total_passes": 0,
"total_uncertain": 0,
"total_items": 0,
"items_with_failures": 0,
"items_all_passed": 0,
"buckets_affected": [
"<string>"
],
"should_alert": false,
"should_gate_ci": false,
"needs_human_review": false
},
"failure_tags": [
{
"tag_id": "<string>",
"bucket_id": "<string>",
"bucket_name": "<string>",
"subcategory_id": "<string>",
"subcategory_name": "<string>",
"decision": "<string>",
"severity": 2.5,
"confidence": 0.5,
"detector_type_used": "<string>",
"scoring_breakdown": {
"impact": 123,
"risk": 123,
"final_severity": 123,
"final_confidence": 123,
"frequency_weight": 1,
"security_override": "<string>",
"deterministic_weight": 0,
"judge_weight": 0,
"security_weight": 0,
"metric_agreement_bonus": 0,
"disagreement_penalty": 0
},
"item_index": 123,
"judge_rationale": "<string>",
"eval_metric_values": {},
"evidence_items": [
{
"item_id": "<string>",
"evidence_type": "<string>",
"description": "<string>",
"source": "<string>",
"content_snippet": "<string>",
"confidence": 1,
"metadata": {}
}
]
}
],
"inputs": [
{
"item_index": 123,
"input_text": "<string>",
"output_text": "<string>",
"input_preview": "",
"output_preview": "",
"context": [
"<string>"
],
"tool_calls": [
{}
],
"trace_id": "<string>",
"failure_count": 0,
"pass_count": 0,
"unsure_count": 0,
"max_severity": 0
}
],
"eval_metrics": {},
"eval_run_id": "<string>",
"security_flags": {},
"security_batch_id": "<string>",
"detectors_run": [
"<string>"
],
"detectors_skipped": [
"<string>"
],
"duration_ms": 0,
"tokens_used": 0,
"created_at": "2023-11-07T05:31:56Z"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Run failure analysis
Run failure analysis on a trace or minimal input dataset
curl --request POST \
--url https://api.valiqor.com/v2/failure-analysis/analyze \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"dataset": [
{
"context": [
"France is a country in Western Europe. Its capital is Paris."
],
"input": "What is the capital of France?",
"output": "The capital of France is Berlin."
}
],
"feature_kind": "rag",
"run_eval": true,
"run_security": false
}
'import requests
url = "https://api.valiqor.com/v2/failure-analysis/analyze"
payload = {
"dataset": [
{
"context": ["France is a country in Western Europe. Its capital is Paris."],
"input": "What is the capital of France?",
"output": "The capital of France is Berlin."
}
],
"feature_kind": "rag",
"run_eval": True,
"run_security": False
}
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({
dataset: [
{
context: ['France is a country in Western Europe. Its capital is Paris.'],
input: 'What is the capital of France?',
output: 'The capital of France is Berlin.'
}
],
feature_kind: 'rag',
run_eval: true,
run_security: false
})
};
fetch('https://api.valiqor.com/v2/failure-analysis/analyze', 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.valiqor.com/v2/failure-analysis/analyze",
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([
'dataset' => [
[
'context' => [
'France is a country in Western Europe. Its capital is Paris.'
],
'input' => 'What is the capital of France?',
'output' => 'The capital of France is Berlin.'
]
],
'feature_kind' => 'rag',
'run_eval' => true,
'run_security' => false
]),
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.valiqor.com/v2/failure-analysis/analyze"
payload := strings.NewReader("{\n \"dataset\": [\n {\n \"context\": [\n \"France is a country in Western Europe. Its capital is Paris.\"\n ],\n \"input\": \"What is the capital of France?\",\n \"output\": \"The capital of France is Berlin.\"\n }\n ],\n \"feature_kind\": \"rag\",\n \"run_eval\": true,\n \"run_security\": false\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.valiqor.com/v2/failure-analysis/analyze")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"dataset\": [\n {\n \"context\": [\n \"France is a country in Western Europe. Its capital is Paris.\"\n ],\n \"input\": \"What is the capital of France?\",\n \"output\": \"The capital of France is Berlin.\"\n }\n ],\n \"feature_kind\": \"rag\",\n \"run_eval\": true,\n \"run_security\": false\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.valiqor.com/v2/failure-analysis/analyze")
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 \"dataset\": [\n {\n \"context\": [\n \"France is a country in Western Europe. Its capital is Paris.\"\n ],\n \"input\": \"What is the capital of France?\",\n \"output\": \"The capital of France is Berlin.\"\n }\n ],\n \"feature_kind\": \"rag\",\n \"run_eval\": true,\n \"run_security\": false\n}"
response = http.request(request)
puts response.read_body{
"run_id": "<string>",
"status": "<string>",
"mode": "<string>",
"input_type": "<string>",
"feature_kind": "<string>",
"summary": {
"primary_failure": "<string>",
"primary_failure_name": "<string>",
"overall_severity": 0,
"overall_confidence": 0,
"total_failures_detected": 0,
"total_passes": 0,
"total_uncertain": 0,
"total_items": 0,
"items_with_failures": 0,
"items_all_passed": 0,
"buckets_affected": [
"<string>"
],
"should_alert": false,
"should_gate_ci": false,
"needs_human_review": false
},
"failure_tags": [
{
"tag_id": "<string>",
"bucket_id": "<string>",
"bucket_name": "<string>",
"subcategory_id": "<string>",
"subcategory_name": "<string>",
"decision": "<string>",
"severity": 2.5,
"confidence": 0.5,
"detector_type_used": "<string>",
"scoring_breakdown": {
"impact": 123,
"risk": 123,
"final_severity": 123,
"final_confidence": 123,
"frequency_weight": 1,
"security_override": "<string>",
"deterministic_weight": 0,
"judge_weight": 0,
"security_weight": 0,
"metric_agreement_bonus": 0,
"disagreement_penalty": 0
},
"item_index": 123,
"judge_rationale": "<string>",
"eval_metric_values": {},
"evidence_items": [
{
"item_id": "<string>",
"evidence_type": "<string>",
"description": "<string>",
"source": "<string>",
"content_snippet": "<string>",
"confidence": 1,
"metadata": {}
}
]
}
],
"inputs": [
{
"item_index": 123,
"input_text": "<string>",
"output_text": "<string>",
"input_preview": "",
"output_preview": "",
"context": [
"<string>"
],
"tool_calls": [
{}
],
"trace_id": "<string>",
"failure_count": 0,
"pass_count": 0,
"unsure_count": 0,
"max_severity": 0
}
],
"eval_metrics": {},
"eval_run_id": "<string>",
"security_flags": {},
"security_batch_id": "<string>",
"detectors_run": [
"<string>"
],
"detectors_skipped": [
"<string>"
],
"duration_ms": 0,
"tokens_used": 0,
"created_at": "2023-11-07T05:31:56Z"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Authorizations
Valiqor API key. Pass as Bearer token: Authorization: Bearer vq-xxxxxxxxxxxxxxxxxxxx
Body
Request for failure analysis.
Trace ID for full trace analysis
Dataset items for minimal input analysis
Show child attributes
Show child attributes
Project name for organization
App type hint: 'rag', 'agent', 'agentic_rag', 'generic_llm'. Auto-detected if not provided.
Run evaluation metrics alongside failure analysis
Run security audit alongside failure analysis
Fetch and attach AST scan data if available (auto-enabled for trace inputs)
User-specified eval metrics that must run
User-specified security categories that must run
Filter to specific failure subcategories. If None, runs all applicable.
Filter to specific failure buckets (e.g., 'hallucination_grounding', 'instruction_compliance'). All subcategories within the specified buckets will be included. If both buckets and subcategories are provided, they are merged (union).
OpenAI API key for LLM judges
Response
Successful Response
Full failure analysis response.
'completed', 'processing', 'failed'
'minimal' or 'full'
'trace', 'json', or 'csv'
Detected or specified app type
Summary of failure analysis results.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Original input items with per-item failure stats
Show child attributes
Show child attributes
Evaluation metric scores
Show child attributes
Show child attributes
ID of linked evaluation run
Security category flags
Show child attributes
Show child attributes
ID of linked security audit batch
Subcategories that were analyzed
Subcategories skipped (not applicable)