curl --request POST \
--url https://api-prod.interactly.ai/workflows/v1/llm-configs/test \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"system_prompt": "<string>",
"config": {
"logical_id": "<string>",
"named_llm_config_id": "<string>",
"named_llm_config_name": "<string>",
"provider": "azure_openai",
"streaming": false,
"max_retries": 3,
"max_parse_retries": 3,
"max_tokens": 123,
"temperature": 0.5,
"request_timeout_ms": 123,
"seed": 123,
"model_kwargs": {},
"api_key": "<string>",
"do_not_split_sentences": false,
"truncated_max_recent_messages": 123,
"model": "gpt-5-mini",
"type": "azure_openai_llm",
"endpoint": "<string>",
"api_version": "<string>",
"reasoning_effort": "low"
},
"messages": [
{
"content": "<string>",
"role": "human"
}
]
}
'import requests
url = "https://api-prod.interactly.ai/workflows/v1/llm-configs/test"
payload = {
"system_prompt": "<string>",
"config": {
"logical_id": "<string>",
"named_llm_config_id": "<string>",
"named_llm_config_name": "<string>",
"provider": "azure_openai",
"streaming": False,
"max_retries": 3,
"max_parse_retries": 3,
"max_tokens": 123,
"temperature": 0.5,
"request_timeout_ms": 123,
"seed": 123,
"model_kwargs": {},
"api_key": "<string>",
"do_not_split_sentences": False,
"truncated_max_recent_messages": 123,
"model": "gpt-5-mini",
"type": "azure_openai_llm",
"endpoint": "<string>",
"api_version": "<string>",
"reasoning_effort": "low"
},
"messages": [
{
"content": "<string>",
"role": "human"
}
]
}
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({
system_prompt: '<string>',
config: {
logical_id: '<string>',
named_llm_config_id: '<string>',
named_llm_config_name: '<string>',
provider: 'azure_openai',
streaming: false,
max_retries: 3,
max_parse_retries: 3,
max_tokens: 123,
temperature: 0.5,
request_timeout_ms: 123,
seed: 123,
model_kwargs: {},
api_key: '<string>',
do_not_split_sentences: false,
truncated_max_recent_messages: 123,
model: 'gpt-5-mini',
type: 'azure_openai_llm',
endpoint: '<string>',
api_version: '<string>',
reasoning_effort: 'low'
},
messages: [{content: '<string>', role: 'human'}]
})
};
fetch('https://api-prod.interactly.ai/workflows/v1/llm-configs/test', 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-prod.interactly.ai/workflows/v1/llm-configs/test",
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([
'system_prompt' => '<string>',
'config' => [
'logical_id' => '<string>',
'named_llm_config_id' => '<string>',
'named_llm_config_name' => '<string>',
'provider' => 'azure_openai',
'streaming' => false,
'max_retries' => 3,
'max_parse_retries' => 3,
'max_tokens' => 123,
'temperature' => 0.5,
'request_timeout_ms' => 123,
'seed' => 123,
'model_kwargs' => [
],
'api_key' => '<string>',
'do_not_split_sentences' => false,
'truncated_max_recent_messages' => 123,
'model' => 'gpt-5-mini',
'type' => 'azure_openai_llm',
'endpoint' => '<string>',
'api_version' => '<string>',
'reasoning_effort' => 'low'
],
'messages' => [
[
'content' => '<string>',
'role' => 'human'
]
]
]),
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-prod.interactly.ai/workflows/v1/llm-configs/test"
payload := strings.NewReader("{\n \"system_prompt\": \"<string>\",\n \"config\": {\n \"logical_id\": \"<string>\",\n \"named_llm_config_id\": \"<string>\",\n \"named_llm_config_name\": \"<string>\",\n \"provider\": \"azure_openai\",\n \"streaming\": false,\n \"max_retries\": 3,\n \"max_parse_retries\": 3,\n \"max_tokens\": 123,\n \"temperature\": 0.5,\n \"request_timeout_ms\": 123,\n \"seed\": 123,\n \"model_kwargs\": {},\n \"api_key\": \"<string>\",\n \"do_not_split_sentences\": false,\n \"truncated_max_recent_messages\": 123,\n \"model\": \"gpt-5-mini\",\n \"type\": \"azure_openai_llm\",\n \"endpoint\": \"<string>\",\n \"api_version\": \"<string>\",\n \"reasoning_effort\": \"low\"\n },\n \"messages\": [\n {\n \"content\": \"<string>\",\n \"role\": \"human\"\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-prod.interactly.ai/workflows/v1/llm-configs/test")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"system_prompt\": \"<string>\",\n \"config\": {\n \"logical_id\": \"<string>\",\n \"named_llm_config_id\": \"<string>\",\n \"named_llm_config_name\": \"<string>\",\n \"provider\": \"azure_openai\",\n \"streaming\": false,\n \"max_retries\": 3,\n \"max_parse_retries\": 3,\n \"max_tokens\": 123,\n \"temperature\": 0.5,\n \"request_timeout_ms\": 123,\n \"seed\": 123,\n \"model_kwargs\": {},\n \"api_key\": \"<string>\",\n \"do_not_split_sentences\": false,\n \"truncated_max_recent_messages\": 123,\n \"model\": \"gpt-5-mini\",\n \"type\": \"azure_openai_llm\",\n \"endpoint\": \"<string>\",\n \"api_version\": \"<string>\",\n \"reasoning_effort\": \"low\"\n },\n \"messages\": [\n {\n \"content\": \"<string>\",\n \"role\": \"human\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-prod.interactly.ai/workflows/v1/llm-configs/test")
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 \"system_prompt\": \"<string>\",\n \"config\": {\n \"logical_id\": \"<string>\",\n \"named_llm_config_id\": \"<string>\",\n \"named_llm_config_name\": \"<string>\",\n \"provider\": \"azure_openai\",\n \"streaming\": false,\n \"max_retries\": 3,\n \"max_parse_retries\": 3,\n \"max_tokens\": 123,\n \"temperature\": 0.5,\n \"request_timeout_ms\": 123,\n \"seed\": 123,\n \"model_kwargs\": {},\n \"api_key\": \"<string>\",\n \"do_not_split_sentences\": false,\n \"truncated_max_recent_messages\": 123,\n \"model\": \"gpt-5-mini\",\n \"type\": \"azure_openai_llm\",\n \"endpoint\": \"<string>\",\n \"api_version\": \"<string>\",\n \"reasoning_effort\": \"low\"\n },\n \"messages\": [\n {\n \"content\": \"<string>\",\n \"role\": \"human\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"response": "<string>",
"error": "<string>",
"provider": "<string>",
"model": "<string>",
"prompt_tokens": 123,
"completion_tokens": 123,
"total_tokens": 123,
"latency_ms": 123,
"winning_member": {
"index": 123,
"logical_id": "<string>",
"provider": "<string>",
"model": "<string>"
},
"backchannel_response": "<string>",
"backchannel_member": {
"index": 123,
"logical_id": "<string>",
"provider": "<string>",
"model": "<string>"
},
"backchannel_prompt_tokens": 123,
"backchannel_completion_tokens": 123,
"backchannel_total_tokens": 123
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Test Llm Config Inline
Run a one-shot test invocation against a fully inline LLM configuration that has not been persisted yet (the create flow), and return the model’s reply.
Because there is no stored record to recover secrets from, the provider api_key must be supplied in
body.config (or omitted to fall back to the team’s stored vendor credentials). Provider/runtime
failures are returned as HTTP 200 with success=False and a clean error message, mirroring the
saved-config test endpoint, so the dashboard can render them inline.
curl --request POST \
--url https://api-prod.interactly.ai/workflows/v1/llm-configs/test \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"system_prompt": "<string>",
"config": {
"logical_id": "<string>",
"named_llm_config_id": "<string>",
"named_llm_config_name": "<string>",
"provider": "azure_openai",
"streaming": false,
"max_retries": 3,
"max_parse_retries": 3,
"max_tokens": 123,
"temperature": 0.5,
"request_timeout_ms": 123,
"seed": 123,
"model_kwargs": {},
"api_key": "<string>",
"do_not_split_sentences": false,
"truncated_max_recent_messages": 123,
"model": "gpt-5-mini",
"type": "azure_openai_llm",
"endpoint": "<string>",
"api_version": "<string>",
"reasoning_effort": "low"
},
"messages": [
{
"content": "<string>",
"role": "human"
}
]
}
'import requests
url = "https://api-prod.interactly.ai/workflows/v1/llm-configs/test"
payload = {
"system_prompt": "<string>",
"config": {
"logical_id": "<string>",
"named_llm_config_id": "<string>",
"named_llm_config_name": "<string>",
"provider": "azure_openai",
"streaming": False,
"max_retries": 3,
"max_parse_retries": 3,
"max_tokens": 123,
"temperature": 0.5,
"request_timeout_ms": 123,
"seed": 123,
"model_kwargs": {},
"api_key": "<string>",
"do_not_split_sentences": False,
"truncated_max_recent_messages": 123,
"model": "gpt-5-mini",
"type": "azure_openai_llm",
"endpoint": "<string>",
"api_version": "<string>",
"reasoning_effort": "low"
},
"messages": [
{
"content": "<string>",
"role": "human"
}
]
}
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({
system_prompt: '<string>',
config: {
logical_id: '<string>',
named_llm_config_id: '<string>',
named_llm_config_name: '<string>',
provider: 'azure_openai',
streaming: false,
max_retries: 3,
max_parse_retries: 3,
max_tokens: 123,
temperature: 0.5,
request_timeout_ms: 123,
seed: 123,
model_kwargs: {},
api_key: '<string>',
do_not_split_sentences: false,
truncated_max_recent_messages: 123,
model: 'gpt-5-mini',
type: 'azure_openai_llm',
endpoint: '<string>',
api_version: '<string>',
reasoning_effort: 'low'
},
messages: [{content: '<string>', role: 'human'}]
})
};
fetch('https://api-prod.interactly.ai/workflows/v1/llm-configs/test', 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-prod.interactly.ai/workflows/v1/llm-configs/test",
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([
'system_prompt' => '<string>',
'config' => [
'logical_id' => '<string>',
'named_llm_config_id' => '<string>',
'named_llm_config_name' => '<string>',
'provider' => 'azure_openai',
'streaming' => false,
'max_retries' => 3,
'max_parse_retries' => 3,
'max_tokens' => 123,
'temperature' => 0.5,
'request_timeout_ms' => 123,
'seed' => 123,
'model_kwargs' => [
],
'api_key' => '<string>',
'do_not_split_sentences' => false,
'truncated_max_recent_messages' => 123,
'model' => 'gpt-5-mini',
'type' => 'azure_openai_llm',
'endpoint' => '<string>',
'api_version' => '<string>',
'reasoning_effort' => 'low'
],
'messages' => [
[
'content' => '<string>',
'role' => 'human'
]
]
]),
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-prod.interactly.ai/workflows/v1/llm-configs/test"
payload := strings.NewReader("{\n \"system_prompt\": \"<string>\",\n \"config\": {\n \"logical_id\": \"<string>\",\n \"named_llm_config_id\": \"<string>\",\n \"named_llm_config_name\": \"<string>\",\n \"provider\": \"azure_openai\",\n \"streaming\": false,\n \"max_retries\": 3,\n \"max_parse_retries\": 3,\n \"max_tokens\": 123,\n \"temperature\": 0.5,\n \"request_timeout_ms\": 123,\n \"seed\": 123,\n \"model_kwargs\": {},\n \"api_key\": \"<string>\",\n \"do_not_split_sentences\": false,\n \"truncated_max_recent_messages\": 123,\n \"model\": \"gpt-5-mini\",\n \"type\": \"azure_openai_llm\",\n \"endpoint\": \"<string>\",\n \"api_version\": \"<string>\",\n \"reasoning_effort\": \"low\"\n },\n \"messages\": [\n {\n \"content\": \"<string>\",\n \"role\": \"human\"\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-prod.interactly.ai/workflows/v1/llm-configs/test")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"system_prompt\": \"<string>\",\n \"config\": {\n \"logical_id\": \"<string>\",\n \"named_llm_config_id\": \"<string>\",\n \"named_llm_config_name\": \"<string>\",\n \"provider\": \"azure_openai\",\n \"streaming\": false,\n \"max_retries\": 3,\n \"max_parse_retries\": 3,\n \"max_tokens\": 123,\n \"temperature\": 0.5,\n \"request_timeout_ms\": 123,\n \"seed\": 123,\n \"model_kwargs\": {},\n \"api_key\": \"<string>\",\n \"do_not_split_sentences\": false,\n \"truncated_max_recent_messages\": 123,\n \"model\": \"gpt-5-mini\",\n \"type\": \"azure_openai_llm\",\n \"endpoint\": \"<string>\",\n \"api_version\": \"<string>\",\n \"reasoning_effort\": \"low\"\n },\n \"messages\": [\n {\n \"content\": \"<string>\",\n \"role\": \"human\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-prod.interactly.ai/workflows/v1/llm-configs/test")
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 \"system_prompt\": \"<string>\",\n \"config\": {\n \"logical_id\": \"<string>\",\n \"named_llm_config_id\": \"<string>\",\n \"named_llm_config_name\": \"<string>\",\n \"provider\": \"azure_openai\",\n \"streaming\": false,\n \"max_retries\": 3,\n \"max_parse_retries\": 3,\n \"max_tokens\": 123,\n \"temperature\": 0.5,\n \"request_timeout_ms\": 123,\n \"seed\": 123,\n \"model_kwargs\": {},\n \"api_key\": \"<string>\",\n \"do_not_split_sentences\": false,\n \"truncated_max_recent_messages\": 123,\n \"model\": \"gpt-5-mini\",\n \"type\": \"azure_openai_llm\",\n \"endpoint\": \"<string>\",\n \"api_version\": \"<string>\",\n \"reasoning_effort\": \"low\"\n },\n \"messages\": [\n {\n \"content\": \"<string>\",\n \"role\": \"human\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"response": "<string>",
"error": "<string>",
"provider": "<string>",
"model": "<string>",
"prompt_tokens": 123,
"completion_tokens": 123,
"total_tokens": 123,
"latency_ms": 123,
"winning_member": {
"index": 123,
"logical_id": "<string>",
"provider": "<string>",
"model": "<string>"
},
"backchannel_response": "<string>",
"backchannel_member": {
"index": 123,
"logical_id": "<string>",
"provider": "<string>",
"model": "<string>"
},
"backchannel_prompt_tokens": 123,
"backchannel_completion_tokens": 123,
"backchannel_total_tokens": 123
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Authorizations
Retrieve your API Key from Dashboard API Keys Section.
Body
Required, non-empty system prompt.
1Full config to test inline, before any config record is persisted (create flow). Unlike the saved-config test, there is no stored record to recover secrets from: the provider api_key must be supplied here, or omitted to fall back to the team's stored vendor credentials.
- Azure OpenAI
- OpenAI
- Google
- Anthropic
- Custom LLM
- Workflow Default LLM
- No LLM
- Group of LLMs
- Group of regular and backchanneling LLMs
Show child attributes
Show child attributes
Optional ordered conversation history to send to the model.
Show child attributes
Show child attributes
Response
Successful Response
Concatenated model output text on success.
Clean error message when success is False.
Which group member produced the main response.
Show child attributes
Show child attributes
Backchannel text emitted before the main response, if any.
Producer of the backchannel response (null for a static backchannel).
Show child attributes
Show child attributes