import Antimetal from '@antimetal/sdk';
const client = new Antimetal({
apiKey: process.env['ANTIMETAL_API_KEY'], // This is the default and can be omitted
});
const queryResponse = await client.query.ask({ question: 'x' });
console.log(queryResponse.conversation_id);curl --request POST \
--url https://bff.antimetal.com/api/v2/query \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"question": "<string>",
"conversation_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"stream": true
}
'import requests
url = "https://bff.antimetal.com/api/v2/query"
payload = {
"question": "<string>",
"conversation_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"stream": True
}
headers = {
"Authorization": "Bearer <token>",
"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://bff.antimetal.com/api/v2/query",
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([
'question' => '<string>',
'conversation_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'stream' => true
]),
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://bff.antimetal.com/api/v2/query"
payload := strings.NewReader("{\n \"question\": \"<string>\",\n \"conversation_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"stream\": true\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://bff.antimetal.com/api/v2/query")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"question\": \"<string>\",\n \"conversation_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"stream\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://bff.antimetal.com/api/v2/query")
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 \"question\": \"<string>\",\n \"conversation_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"stream\": true\n}"
response = http.request(request)
puts response.read_body{
"conversation_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"answer": "<string>",
"artifacts": [
{
"id": "<string>",
"tool_name": "<string>",
"data_type": "<string>",
"provider": "<string>",
"summary": "<string>"
}
]
}{
"type": "api_error",
"message": "<string>",
"request_id": "<string>",
"details": {}
}{
"type": "api_error",
"message": "<string>",
"request_id": "<string>",
"details": {}
}{
"type": "api_error",
"message": "<string>",
"request_id": "<string>",
"details": {}
}{
"type": "api_error",
"message": "<string>",
"request_id": "<string>",
"details": {}
}{
"type": "api_error",
"message": "<string>",
"request_id": "<string>",
"details": {}
}Ask Antimetal's AI agent a question
Sends a question to Antimetal’s AI agent and returns a natural language answer. Pass the returned conversation_id in subsequent requests to continue the conversation. Set stream: true (and Accept: text/event-stream) to receive a Server-Sent Events stream.
import Antimetal from '@antimetal/sdk';
const client = new Antimetal({
apiKey: process.env['ANTIMETAL_API_KEY'], // This is the default and can be omitted
});
const queryResponse = await client.query.ask({ question: 'x' });
console.log(queryResponse.conversation_id);curl --request POST \
--url https://bff.antimetal.com/api/v2/query \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"question": "<string>",
"conversation_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"stream": true
}
'import requests
url = "https://bff.antimetal.com/api/v2/query"
payload = {
"question": "<string>",
"conversation_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"stream": True
}
headers = {
"Authorization": "Bearer <token>",
"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://bff.antimetal.com/api/v2/query",
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([
'question' => '<string>',
'conversation_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'stream' => true
]),
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://bff.antimetal.com/api/v2/query"
payload := strings.NewReader("{\n \"question\": \"<string>\",\n \"conversation_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"stream\": true\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://bff.antimetal.com/api/v2/query")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"question\": \"<string>\",\n \"conversation_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"stream\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://bff.antimetal.com/api/v2/query")
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 \"question\": \"<string>\",\n \"conversation_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"stream\": true\n}"
response = http.request(request)
puts response.read_body{
"conversation_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"answer": "<string>",
"artifacts": [
{
"id": "<string>",
"tool_name": "<string>",
"data_type": "<string>",
"provider": "<string>",
"summary": "<string>"
}
]
}{
"type": "api_error",
"message": "<string>",
"request_id": "<string>",
"details": {}
}{
"type": "api_error",
"message": "<string>",
"request_id": "<string>",
"details": {}
}{
"type": "api_error",
"message": "<string>",
"request_id": "<string>",
"details": {}
}{
"type": "api_error",
"message": "<string>",
"request_id": "<string>",
"details": {}
}{
"type": "api_error",
"message": "<string>",
"request_id": "<string>",
"details": {}
}Authorizations
API key authentication via Bearer token
Headers
The API version to use. Defaults to the latest stable version if omitted. Pin to the version string in this document's info.version field to opt into exactly this version's schema.
"2026-03-17"
Body
Natural language question to ask the AI agent
1Conversation ID from a previous query response — pass to continue that conversation
^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$When true, returns a Server-Sent Events stream. Must also send Accept: text/event-stream header.
Response
Pass in subsequent requests to continue this conversation
^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$The AI agent's natural language answer
Artifacts (metrics, logs, traces, etc.) the agent found while answering
Show child attributes
Show child attributes