Score Analysis
curl --request POST \
--url https://api.chicago.global/v1/score-analysis \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.chicago.global/v1/score-analysis"
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.chicago.global/v1/score-analysis', 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.chicago.global/v1/score-analysis",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
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://api.chicago.global/v1/score-analysis"
req, _ := http.NewRequest("POST", 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.post("https://api.chicago.global/v1/score-analysis")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.chicago.global/v1/score-analysis")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Analysis
Score Analysis
Get AI-generated score analysis (ASYNC - returns job_id immediately).
Creates a background job for AI-powered score analysis. Analysis typically takes 30-60 seconds. Use GET /jobs/ to check status and retrieve results.
POST
/
v1
/
score-analysis
Score Analysis
curl --request POST \
--url https://api.chicago.global/v1/score-analysis \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.chicago.global/v1/score-analysis"
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.chicago.global/v1/score-analysis', 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.chicago.global/v1/score-analysis",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
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://api.chicago.global/v1/score-analysis"
req, _ := http.NewRequest("POST", 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.post("https://api.chicago.global/v1/score-analysis")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.chicago.global/v1/score-analysis")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Generate an AI-powered narrative analysis of a stock’s Parallax factor scores, interpreting what the scores mean in the current market context.
How It Works
This endpoint uses async job processing:- Submit Request: POST with a stock symbol
- Receive Job ID: Get a job ID and polling URL immediately
- Poll for Status: Check
/v1/jobs/{job_id}until status iscompleted - Get Analysis: The completed job contains a narrative interpretation of the stock’s scores
Analysis typically takes 30-60 seconds.
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
symbol | string | Yes | Stock symbol (e.g., AAPL, MSFT) |
Response (202 Accepted)
{
"job_id": "stock-c96e0635-3459-47cd-9f52-ef0ab04d00ee",
"status": "pending",
"symbol": "AAPL.O",
"check_url": "/v1/jobs/stock-c96e0635-3459-47cd-9f52-ef0ab04d00ee",
"estimated_duration_seconds": 60,
"message": "Score analysis started for AAPL.O."
}
Completed Response
When the job completes,GET /v1/jobs/{job_id} returns:
{
"job_id": "stock-c96e0635-...",
"status": "completed",
"result": {
"symbol": "AAPL.O",
"analysis": "Apple stands as a fortress of quality in turbulent markets, ranking at the 50th percentile for business fundamentals while its defensive characteristics shine at the 86th percentile — a profile that resonates powerfully amid Middle East conflicts driving energy volatility and Fed hawkishness. The company's valuation remains stretched at the 52nd percentile, yet this premium feels justified as AI capital expenditure cycles and geopolitical uncertainty favor companies with Apple's cash-generative moats and supply chain resilience. Tactically, the 66th percentile momentum score suggests near-term outperformance potential as investors seek quality havens, though the 24% distance from recent highs reflects broader market caution around growth multiples in a higher-for-longer rate environment."
}
}
Result Fields
| Field | Description |
|---|---|
symbol | Resolved RIC |
analysis | AI-generated narrative interpreting the stock’s factor scores in current market context |
Example
curl -X POST "https://api.chicago.global/v1/score-analysis?symbol=AAPL" \
-H "Authorization: Bearer YOUR_API_KEY"
const response = await fetch(
'https://api.chicago.global/v1/score-analysis?symbol=AAPL',
{
method: 'POST',
headers: { 'Authorization': `Bearer ${API_KEY}` }
}
);
const { job_id, check_url } = await response.json();
const interval = setInterval(async () => {
const status = await fetch(
`https://api.chicago.global${check_url}`,
{ headers: { 'Authorization': `Bearer ${API_KEY}` } }
).then(r => r.json());
if (status.status === 'completed') {
clearInterval(interval);
console.log(status.result.analysis);
} else if (status.status === 'failed') {
clearInterval(interval);
console.error('Failed:', status.error);
}
}, 5000);
Last modified on April 1, 2026
⌘I