Get All Radar
curl --request GET \
--url https://api.shoal.xyz/v1/radar/all \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.shoal.xyz/v1/radar/all"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.shoal.xyz/v1/radar/all', 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.shoal.xyz/v1/radar/all",
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://api.shoal.xyz/v1/radar/all"
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://api.shoal.xyz/v1/radar/all")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.shoal.xyz/v1/radar/all")
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_bodyRadar
Get All Radar
Get all radar events
GET
/
v1
/
radar
/
all
Get All Radar
curl --request GET \
--url https://api.shoal.xyz/v1/radar/all \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.shoal.xyz/v1/radar/all"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.shoal.xyz/v1/radar/all', 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.shoal.xyz/v1/radar/all",
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://api.shoal.xyz/v1/radar/all"
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://api.shoal.xyz/v1/radar/all")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.shoal.xyz/v1/radar/all")
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_bodyRadar events are structured summaries of noteworthy activity across the digital asset ecosystem — partnerships, product launches, regulatory developments, security incidents, and more. Each event includes the organizations involved, a human-readable summary, bullet points, and the original source posts.
The live API returns both canonical field names and legacy compatibility fields during the schema transition. New integrations should build against the canonical names:
Legacy compatibility fields are still present for existing clients:
summarybulletsownersparticipantsevidencelatestEvidenceTimestampsignificance
This is a bulk feed endpoint intended for higher-tier polling and export workflows. For most applications, prefer
/v1/radar/byOrganizationId or /v1/radar/byCategory.Query Parameters
since(string, required) — ISO 8601 timestamp. Only return events newer than this time. See Polling Guide.limit(integer, default: 25, max: 25)offset(integer, default: 0, max: 250)cursor(string, optional) — Opaque cursor token from a previousnext_cursorresponse. When provided,sinceis required andoffsetis ignored.
The Invalid timestamps (e.g.
since parameter is required. Requests without it return 400:{ "error": "The 'since' parameter is required. Use an ISO 8601 timestamp (e.g. 2026-02-01T00:00:00Z)." }
since=garbage) are also rejected with 400.This endpoint is for recent monitoring, not deep historical replay. The since timestamp cannot be older than 7 days. For deeper history, use scoped routes or contact Shoal about export access.Request
cURL
curl -X GET "https://api.shoal.xyz/v1/radar/all?since=2026-04-04T00:00:00Z&limit=25&offset=0" \
-H "Authorization: Bearer YOUR_API_KEY"
Response (200)
{
"limit": 25,
"offset": 0,
"since": "2026-04-04T00:00:00Z",
"next_cursor": "eyJ0cyI6IjIwMjYtMDItMjhUMDY6MTg6NDQuMDAwWiIsImlkIjo2NTB9",
"data": [
{
"id": 650,
"title": "Event Title",
"eventCategory": "partnership",
"eventSubcategory": "acquisition",
"summary": "Summary of the event.",
"bullets": ["Bullet point 1.", "Bullet point 2."],
"owners": [
{
"id": 968,
"label": "Organization Name",
"type": "project",
"aliases": ["Alias"]
}
],
"participants": [
{
"id": 205,
"label": "Participant Name",
"type": "government_institution",
"aliases": ["Alias"]
}
],
"evidence": [
{
"id": 46970,
"content": "Post content",
"url": "https://x.com/...",
"timestamp": "2026-02-28T06:18:44+00:00"
}
],
"latestEvidenceTimestamp": "2026-02-28T06:18:44.000Z",
"significance": 7.01,
"globalSummary": "Summary of the event.",
"bulletSummary": ["Bullet point 1.", "Bullet point 2."],
"eventOwner": [
{
"id": 968,
"label": "Organization Name",
"type": "project",
"aliases": ["Alias"]
}
],
"eventParticipants": [
{
"id": 205,
"label": "Participant Name",
"type": "government_institution",
"aliases": ["Alias"]
}
],
"posts": [
{
"id": 46970,
"content": "Post content",
"url": "https://x.com/...",
"timestamp": "2026-02-28T06:18:44+00:00"
}
],
"latestPostTimestamp": "2026-02-28T06:18:44.000Z",
"signal": 7.01
}
]
}
globalSummary->summarybulletSummary->bulletseventOwner->ownerseventParticipants->participantsposts->evidencelatestPostTimestamp->latestEvidenceTimestampsignal->significance