Track many prompts at once
curl --request POST \
--url https://api.example.com/v1/prompts/bulk \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"prompts": [
{
"text": "<string>",
"topic": "<string>",
"intent": "<string>"
}
]
}
'import requests
url = "https://api.example.com/v1/prompts/bulk"
payload = { "prompts": [
{
"text": "<string>",
"topic": "<string>",
"intent": "<string>"
}
] }
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({prompts: [{text: '<string>', topic: '<string>', intent: '<string>'}]})
};
fetch('https://api.example.com/v1/prompts/bulk', 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.example.com/v1/prompts/bulk",
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([
'prompts' => [
[
'text' => '<string>',
'topic' => '<string>',
'intent' => '<string>'
]
]
]),
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.example.com/v1/prompts/bulk"
payload := strings.NewReader("{\n \"prompts\": [\n {\n \"text\": \"<string>\",\n \"topic\": \"<string>\",\n \"intent\": \"<string>\"\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.example.com/v1/prompts/bulk")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"prompts\": [\n {\n \"text\": \"<string>\",\n \"topic\": \"<string>\",\n \"intent\": \"<string>\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/v1/prompts/bulk")
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 \"prompts\": [\n {\n \"text\": \"<string>\",\n \"topic\": \"<string>\",\n \"intent\": \"<string>\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"results": [
{
"promptId": "<string>",
"created": true
}
],
"activeCount": 14,
"cap": 50
}Prompts
Track many prompts at once
Track up to 100 prompts in one atomic operation. An incoming text matching an existing tracked prompt reuses that prompt rather than duplicating it. The prompt cap is checked once over the whole batch; a batch that would exceed it is rejected and nothing is tracked. Requires a paid plan.
POST
/
v1
/
prompts
/
bulk
Track many prompts at once
curl --request POST \
--url https://api.example.com/v1/prompts/bulk \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"prompts": [
{
"text": "<string>",
"topic": "<string>",
"intent": "<string>"
}
]
}
'import requests
url = "https://api.example.com/v1/prompts/bulk"
payload = { "prompts": [
{
"text": "<string>",
"topic": "<string>",
"intent": "<string>"
}
] }
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({prompts: [{text: '<string>', topic: '<string>', intent: '<string>'}]})
};
fetch('https://api.example.com/v1/prompts/bulk', 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.example.com/v1/prompts/bulk",
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([
'prompts' => [
[
'text' => '<string>',
'topic' => '<string>',
'intent' => '<string>'
]
]
]),
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.example.com/v1/prompts/bulk"
payload := strings.NewReader("{\n \"prompts\": [\n {\n \"text\": \"<string>\",\n \"topic\": \"<string>\",\n \"intent\": \"<string>\"\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.example.com/v1/prompts/bulk")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"prompts\": [\n {\n \"text\": \"<string>\",\n \"topic\": \"<string>\",\n \"intent\": \"<string>\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/v1/prompts/bulk")
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 \"prompts\": [\n {\n \"text\": \"<string>\",\n \"topic\": \"<string>\",\n \"intent\": \"<string>\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"results": [
{
"promptId": "<string>",
"created": true
}
],
"activeCount": 14,
"cap": 50
}Authorizations
A workspace API key issued in Settings → Developer, sent as Bearer sk_….
Body
application/json
The prompts to track (1 to 100). A text matching an existing tracked prompt reuses it.
Required array length:
1 - 100 elementsShow child attributes
Show child attributes