curl --request GET \
--url https://api.example.com/api/graph/v1/debate/{symbol}/quickimport requests
url = "https://api.example.com/api/graph/v1/debate/{symbol}/quick"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.example.com/api/graph/v1/debate/{symbol}/quick', 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/api/graph/v1/debate/{symbol}/quick",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$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://api.example.com/api/graph/v1/debate/{symbol}/quick"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.example.com/api/graph/v1/debate/{symbol}/quick")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/api/graph/v1/debate/{symbol}/quick")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"bear_thesis": {
"confidence": 58,
"headline": "Extended valuation and earnings risk",
"strength": "MODERATE",
"symbol": "NVDA"
},
"bull_thesis": {
"confidence": 72,
"headline": "Strong momentum with volume confirmation",
"strength": "STRONG",
"symbol": "NVDA"
},
"request": {
"include_historical": true,
"risk_appetite": "moderate",
"symbol": "NVDA",
"timeframe": "swing",
"verbose": false
},
"symbol": "NVDA",
"timestamp": "2026-01-29T10:30:00Z",
"verdict": {
"confidence": 65,
"deciding_factors": [
"Technical momentum outweighs valuation concern",
"FPT suggests favorable timing"
],
"key_risk": "Earnings in 2 weeks",
"timing_recommendation": "Enter on pullback to support",
"verdict": "BUY"
}
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Quick debate with defaults
Run a debate with sensible defaults for quick analysis.
Uses:
- Timeframe: swing
- Risk Appetite: moderate
- Include Historical: true
This is a GET endpoint for easy testing and browser access.
Warning: This runs the full 3-agent debate (15-30s). Use /debate/{symbol}/latest
for cached results.
curl --request GET \
--url https://api.example.com/api/graph/v1/debate/{symbol}/quickimport requests
url = "https://api.example.com/api/graph/v1/debate/{symbol}/quick"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.example.com/api/graph/v1/debate/{symbol}/quick', 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/api/graph/v1/debate/{symbol}/quick",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$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://api.example.com/api/graph/v1/debate/{symbol}/quick"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.example.com/api/graph/v1/debate/{symbol}/quick")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/api/graph/v1/debate/{symbol}/quick")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"bear_thesis": {
"confidence": 58,
"headline": "Extended valuation and earnings risk",
"strength": "MODERATE",
"symbol": "NVDA"
},
"bull_thesis": {
"confidence": 72,
"headline": "Strong momentum with volume confirmation",
"strength": "STRONG",
"symbol": "NVDA"
},
"request": {
"include_historical": true,
"risk_appetite": "moderate",
"symbol": "NVDA",
"timeframe": "swing",
"verbose": false
},
"symbol": "NVDA",
"timestamp": "2026-01-29T10:30:00Z",
"verdict": {
"confidence": 65,
"deciding_factors": [
"Technical momentum outweighs valuation concern",
"FPT suggests favorable timing"
],
"key_risk": "Earnings in 2 weeks",
"timing_recommendation": "Enter on pullback to support",
"verdict": "BUY"
}
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Path Parameters
Response
Debate completed successfully
Complete debate response with all agent outputs.
Stock ticker symbol
Original request parameters
Show child attributes
Show child attributes
Bull agent thesis
Show child attributes
Show child attributes
Bear agent counter-thesis
Show child attributes
Show child attributes
Arbiter final verdict
Show child attributes
Show child attributes
Market data context used in debate
Show child attributes
Show child attributes
When debate completed
UUID of persisted debate run
Total debate duration in milliseconds
Total tokens consumed across all agents
Whether all critical validations passed
True if debate was not persisted due to validation failure
Overall quality score (0-100)
0 <= x <= 100List of validation issues found
Status of historical analog retrieval
unavailable, empty, found Show child attributes
Show child attributes