curl --request POST \
--url https://api.athenahq.ai/api/v1/response-streaming/start \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"website_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"schedule_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"prompt_ids": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"selected_models": {},
"prompt_variations": 5,
"use_personas": true,
"use_locations": true,
"only_locations": true
}
'import requests
url = "https://api.athenahq.ai/api/v1/response-streaming/start"
payload = {
"website_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"schedule_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"prompt_ids": ["3c90c3cc-0d44-4b50-8888-8dd25736052a"],
"selected_models": {},
"prompt_variations": 5,
"use_personas": True,
"use_locations": True,
"only_locations": True
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
website_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
schedule_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
prompt_ids: ['3c90c3cc-0d44-4b50-8888-8dd25736052a'],
selected_models: {},
prompt_variations: 5,
use_personas: true,
use_locations: true,
only_locations: true
})
};
fetch('https://api.athenahq.ai/api/v1/response-streaming/start', 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.athenahq.ai/api/v1/response-streaming/start",
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([
'website_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'schedule_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'prompt_ids' => [
'3c90c3cc-0d44-4b50-8888-8dd25736052a'
],
'selected_models' => [
],
'prompt_variations' => 5,
'use_personas' => true,
'use_locations' => true,
'only_locations' => true
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <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.athenahq.ai/api/v1/response-streaming/start"
payload := strings.NewReader("{\n \"website_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"schedule_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"prompt_ids\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"selected_models\": {},\n \"prompt_variations\": 5,\n \"use_personas\": true,\n \"use_locations\": true,\n \"only_locations\": true\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<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.athenahq.ai/api/v1/response-streaming/start")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"website_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"schedule_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"prompt_ids\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"selected_models\": {},\n \"prompt_variations\": 5,\n \"use_personas\": true,\n \"use_locations\": true,\n \"only_locations\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.athenahq.ai/api/v1/response-streaming/start")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"website_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"schedule_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"prompt_ids\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"selected_models\": {},\n \"prompt_variations\": 5,\n \"use_personas\": true,\n \"use_locations\": true,\n \"only_locations\": true\n}"
response = http.request(request)
puts response.read_body{
"workflow_id": "<string>",
"status": "running"
}{
"error": "Unauthorized"
}{
"error": "Unauthorized"
}{
"error": "Unauthorized"
}{
"error": "A response-streaming run is already in progress for this website"
}{
"error": "Unauthorized"
}{
"error": "Unauthorized"
}Start Response Streaming
Kicks off a response-streaming run for a website: Athena queries the selected AI models for the website’s prompts and ingests the responses. Omit prompt_ids to run every active prompt, or pass a selection (up to 1,000). Returns immediately with the workflow_id of the run and status: "running"; poll GET /api/v1/response-streaming/status for progress. Requires a website-admin API key.
curl --request POST \
--url https://api.athenahq.ai/api/v1/response-streaming/start \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"website_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"schedule_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"prompt_ids": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"selected_models": {},
"prompt_variations": 5,
"use_personas": true,
"use_locations": true,
"only_locations": true
}
'import requests
url = "https://api.athenahq.ai/api/v1/response-streaming/start"
payload = {
"website_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"schedule_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"prompt_ids": ["3c90c3cc-0d44-4b50-8888-8dd25736052a"],
"selected_models": {},
"prompt_variations": 5,
"use_personas": True,
"use_locations": True,
"only_locations": True
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
website_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
schedule_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
prompt_ids: ['3c90c3cc-0d44-4b50-8888-8dd25736052a'],
selected_models: {},
prompt_variations: 5,
use_personas: true,
use_locations: true,
only_locations: true
})
};
fetch('https://api.athenahq.ai/api/v1/response-streaming/start', 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.athenahq.ai/api/v1/response-streaming/start",
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([
'website_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'schedule_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'prompt_ids' => [
'3c90c3cc-0d44-4b50-8888-8dd25736052a'
],
'selected_models' => [
],
'prompt_variations' => 5,
'use_personas' => true,
'use_locations' => true,
'only_locations' => true
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <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.athenahq.ai/api/v1/response-streaming/start"
payload := strings.NewReader("{\n \"website_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"schedule_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"prompt_ids\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"selected_models\": {},\n \"prompt_variations\": 5,\n \"use_personas\": true,\n \"use_locations\": true,\n \"only_locations\": true\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<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.athenahq.ai/api/v1/response-streaming/start")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"website_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"schedule_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"prompt_ids\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"selected_models\": {},\n \"prompt_variations\": 5,\n \"use_personas\": true,\n \"use_locations\": true,\n \"only_locations\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.athenahq.ai/api/v1/response-streaming/start")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"website_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"schedule_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"prompt_ids\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"selected_models\": {},\n \"prompt_variations\": 5,\n \"use_personas\": true,\n \"use_locations\": true,\n \"only_locations\": true\n}"
response = http.request(request)
puts response.read_body{
"workflow_id": "<string>",
"status": "running"
}{
"error": "Unauthorized"
}{
"error": "Unauthorized"
}{
"error": "Unauthorized"
}{
"error": "A response-streaming run is already in progress for this website"
}{
"error": "Unauthorized"
}{
"error": "Unauthorized"
}Body
Website to run the response streaming for.
Schedule UUID to attribute the run to and take prompt selectors from. Omit for Default. Explicit model, fan-out, persona and location options apply to this run. The schedule must belong to this website and must not be archived.
Specific prompts to run (1–1,000). Omit to run all active prompts for the website. Only active prompts are executed: paused prompt IDs are accepted (the run still returns 201) but are silently skipped and never queued, so pass active prompt IDs.
Map of model id to enabled flag (e.g. { "ai_overview": true, "ai_mode": false }). Omit to run every currently active model — this is not the dashboard's saved default selection. An explicit selection that resolves to no available models is rejected with 400.
Show child attributes
Show child attributes
Number of paraphrased variations to generate per prompt (0–10).
0 <= x <= 10Whether to run the prompts through configured personas.
Whether to run the prompts across the website's configured locations.
When true, skip the base (non-localized) run and execute only the location-scoped variants. Requires use_locations: true: sending only_locations: true without use_locations: true queues nothing (the base run is skipped and no location variants are added), so the run completes as a no-op.
Was this page helpful?