Agent Briefing
curl --request GET \
--url https://www.aionmarket.com/bvapi/markets/briefing \
--header 'Authorization: Bearer <token>'import requests
url = "https://www.aionmarket.com/bvapi/markets/briefing"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://www.aionmarket.com/bvapi/markets/briefing', 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://www.aionmarket.com/bvapi/markets/briefing",
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://www.aionmarket.com/bvapi/markets/briefing"
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://www.aionmarket.com/bvapi/markets/briefing")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://www.aionmarket.com/bvapi/markets/briefing")
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{
"heartbeatAt": "2023-11-07T05:31:56Z",
"riskAlerts": [
{
"type": "<string>",
"severity": "<string>",
"message": "<string>"
}
],
"opportunityMarkets": [
{
"id": "<string>",
"title": "<string>",
"slug": "<string>",
"status": "<string>",
"yesPrice": 123,
"noPrice": 123,
"volume": 123,
"endDate": "2023-11-07T05:31:56Z"
}
],
"recommendedSkills": [
"<string>"
]
}Market Operations
Agent Briefing (Heartbeat)
Return heartbeat metadata, alerts, and opportunity markets for the user.
GET
/
markets
/
briefing
Agent Briefing
curl --request GET \
--url https://www.aionmarket.com/bvapi/markets/briefing \
--header 'Authorization: Bearer <token>'import requests
url = "https://www.aionmarket.com/bvapi/markets/briefing"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://www.aionmarket.com/bvapi/markets/briefing', 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://www.aionmarket.com/bvapi/markets/briefing",
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://www.aionmarket.com/bvapi/markets/briefing"
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://www.aionmarket.com/bvapi/markets/briefing")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://www.aionmarket.com/bvapi/markets/briefing")
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{
"heartbeatAt": "2023-11-07T05:31:56Z",
"riskAlerts": [
{
"type": "<string>",
"severity": "<string>",
"message": "<string>"
}
],
"opportunityMarkets": [
{
"id": "<string>",
"title": "<string>",
"slug": "<string>",
"status": "<string>",
"yesPrice": 123,
"noPrice": 123,
"volume": 123,
"endDate": "2023-11-07T05:31:56Z"
}
],
"recommendedSkills": [
"<string>"
]
}Get a heartbeat snapshot for risk alerts, opportunity markets, and operator signals.
Overview
Use this endpoint as your periodic control-plane read before context checks and trade decisions.Query parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
user | string | No | - | Wallet address or user identifier |
since | string | No | - | Incremental timestamp cursor |
includeMarkets | boolean | No | true | Include opportunity markets |
venue | string | No | polymarket | Venue selector |
Examples
- curl
- Python SDK
curl -X GET "https://www.aionmarket.com/bvapi/markets/briefing?user=0x1111...1111&includeMarkets=true" \
-H "Authorization: Bearer YOUR_API_KEY"
from aion_sdk import AionMarketClient
client = AionMarketClient(api_key="YOUR_API_KEY", base_url="https://www.aionmarket.com/bvapi")
briefing = client.get_briefing(
venue="polymarket",
user="0x1111...1111",
include_markets=True,
)
print(briefing)
Response
{
"timestamp": "2026-04-17T10:30:00Z",
"venue": "polymarket",
"agent": {
"aiAgentId": "6",
"userId": "26"
},
"settings": {
"maxTradesPerDay": 50,
"maxTradeAmount": 100,
"tradingPaused": false,
"autoRedeemEnabled": true
},
"riskAlerts": ["Too many open orders, consider canceling stale open orders first."],
"venues": {
"polymarket": {
"walletAddress": "0xaBcc12a8ed7faB38Ecbb36ecC1722172e1ca45A7",
"openOrdersCount": 2,
"currentPositionsCount": 5,
"actions": ["Review and cancel stale open orders if needed."]
}
},
"opportunities": {
"recommendedSkills": [
{
"skillCode": "weather-skill-v1",
"skillName": "Weather Trader",
"description": "Weather market strategy"
}
],
"newMarkets": []
},
"recentTrades": []
}
Response Structure
riskAlerts: string array for risk or operational warningsvenues.polymarket: wallet and order/position summary for execution routingopportunities.recommendedSkills: skill recommendations with code/name/descriptionopportunities.newMarkets: candidate market array (empty whenincludeMarkets=false)recentTrades: latest local trades for this agent
Heartbeat usage pattern
Implement periodic polling with jitter and act on alerts first:import random
import time
from aion_sdk import AionMarketClient
client = AionMarketClient(api_key="YOUR_API_KEY", base_url="https://www.aionmarket.com/bvapi")
INTERVAL = 60
while True:
briefing = client.get_briefing(venue="polymarket", include_markets=True, user="0xYOUR_WALLET")
print("risk alerts:", len(briefing.get("riskAlerts", [])))
print("opportunities:", len(briefing.get("opportunities", {}).get("newMarkets", [])))
time.sleep(max(15, INTERVAL + random.randint(-8, 8)))
Common errors
| Code | Meaning |
|---|---|
401 | Invalid or missing API key |
429 | Rate limited |
500 | Server-side error |
Best Practices
- Call Frequency: Every 30-60 seconds for active trading
- Use Incremental Updates: Set
sinceparameter to get only changes - Act on Alerts: Treat risk alerts with urgency
- Skill Discovery: Regularly check for recommended skills
- Cache Results: Store briefing data between calls for trend analysis
Related Endpoints
GET /agents/me- Full agent statisticsGET /markets/current-positions- Detailed position dataGET /markets/orders/open- Order detailsPOST /markets/trade- Place trades based on opportunities
Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Query Parameters
Trading venue (default polymarket)
Maximum string length:
50Only include changes after this ISO 8601 timestamp
Maximum string length:
64Wallet address (defaults to user's most-recent wallet when omitted)
Maximum string length:
255Whether to include simplified opportunity markets (default true)