Get scenario
curl --request GET \
--url https://akapulu.com/api/scenarios/{config_id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://akapulu.com/api/scenarios/{config_id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://akapulu.com/api/scenarios/{config_id}', 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://akapulu.com/api/scenarios/{config_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://akapulu.com/api/scenarios/{config_id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://akapulu.com/api/scenarios/{config_id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://akapulu.com/api/scenarios/{config_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"nodes_json": {
"initial_node": "<string>",
"role_instruction": "<string>",
"nodes": {}
},
"llm_model": "gpt-4.1-nano",
"hosted_links": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"token": "<string>",
"url": "<string>",
"label": "<string>",
"scenario_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"avatar_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"runtime_vars": {},
"stt_keywords": [
"<string>"
],
"record_conversation": true,
"redirect_url": "<string>",
"created_at": "<string>"
}
]
}{
"error": "config_id is required"
}{
"error": "Invalid API key"
}{
"error": "ConversationConfig not found"
}Scenarios
Get Scenario
Fetch a scenario’s nodes_json, LLM model, and hosted links (owner only).
GET
/
scenarios
/
{config_id}
Get scenario
curl --request GET \
--url https://akapulu.com/api/scenarios/{config_id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://akapulu.com/api/scenarios/{config_id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://akapulu.com/api/scenarios/{config_id}', 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://akapulu.com/api/scenarios/{config_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://akapulu.com/api/scenarios/{config_id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://akapulu.com/api/scenarios/{config_id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://akapulu.com/api/scenarios/{config_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"nodes_json": {
"initial_node": "<string>",
"role_instruction": "<string>",
"nodes": {}
},
"llm_model": "gpt-4.1-nano",
"hosted_links": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"token": "<string>",
"url": "<string>",
"label": "<string>",
"scenario_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"avatar_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"runtime_vars": {},
"stt_keywords": [
"<string>"
],
"record_conversation": true,
"redirect_url": "<string>",
"created_at": "<string>"
}
]
}{
"error": "config_id is required"
}{
"error": "Invalid API key"
}{
"error": "ConversationConfig not found"
}Fetch a scenario you own, including
nodes_json, llm_model, and serialized hosted links.Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
Scenario ID.
Response
Scenario fetched successfully
Scenario flow JSON. See the Using JSON guide for the full contract.
Show child attributes
Show child attributes
OpenAI chat model for this scenario. Defaults to gpt-4.1-mini. Full-size models require a paid plan.
Available options:
gpt-4.1-nano, gpt-4.1-mini, gpt-4.1, gpt-5.4-nano, gpt-5.4-mini, gpt-5.4 Show child attributes
Show child attributes
⌘I

