Get Organization by ID
curl --request GET \
--url https://api.shoal.xyz/v1/organizations/byOrganizationId \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.shoal.xyz/v1/organizations/byOrganizationId"
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/organizations/byOrganizationId', 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/organizations/byOrganizationId",
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/organizations/byOrganizationId"
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/organizations/byOrganizationId")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.shoal.xyz/v1/organizations/byOrganizationId")
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_bodyOrganizations (Compatibility)
Get Organization by ID
Get canonical organization info by ID
GET
/
v1
/
organizations
/
byOrganizationId
Get Organization by ID
curl --request GET \
--url https://api.shoal.xyz/v1/organizations/byOrganizationId \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.shoal.xyz/v1/organizations/byOrganizationId"
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/organizations/byOrganizationId', 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/organizations/byOrganizationId",
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/organizations/byOrganizationId"
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/organizations/byOrganizationId")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.shoal.xyz/v1/organizations/byOrganizationId")
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_bodyReturns details for a single canonical organization by numeric ID. Use the optional
include parameter to embed recent radar and/or signal events in the same response.
When embedded radar or signal data is requested, Shoal prioritizes direct organization matches first and may also include strongly related context when it is clearly relevant.
Query Parameters
id(integer, required)include(string, optional) - Comma-separated list:radar,signal. Embeds recent events in the response.includeLimit(integer, optional, default: 5, max: 20) - Number of embedded events per type.
Request
cURL
curl -X GET "https://api.shoal.xyz/v1/organizations/byOrganizationId?id=526" \
-H "Authorization: Bearer YOUR_API_KEY"
Request with include
cURL
curl -X GET "https://api.shoal.xyz/v1/organizations/byOrganizationId?id=526&include=radar,signal&includeLimit=3" \
-H "Authorization: Bearer YOUR_API_KEY"
Response (200)
{
"data": {
"id": 526,
"label": "Ethereum",
"aliases": ["ETH", "Ethereum Foundation"]
}
}
aliases is a small public hint set, not a full alias inventory.
Response with include (200)
{
"data": {
"id": 526,
"label": "Ethereum",
"aliases": ["ETH", "Ethereum Foundation"]
},
"radar": [
{
"id": 650,
"title": "Event Title",
"signal": 7.01
}
],
"signal": [
{
"id": 707,
"title": "Signal Event Title",
"signal": 12.45
}
]
}
Notes
- Organization IDs represent canonical organization profiles.
- Aliases resolve to the same canonical profile.
- Embedded radar and signal results may include closely related organization or asset context when it is strongly relevant to the requested organization.
Errors
- 400 if
idmissing - 500 on internal server error