Base URL:Documentation Index
Fetch the complete documentation index at: https://docs.shoal.xyz/llms.txt
Use this file to discover all available pages before exploring further.
https://api.shoal.xyz/v1
Fastest Path
For launch, the default Shoal flow should be entity-first:- resolve a canonical entity by name
- inspect its recent timeline or relationships
- use search when you need broader discovery beyond one entity
/v1/entities/byName.
Get an API Key
- Sign in at https://app.shoal.xyz
- Create an API key and copy it somewhere secure
Access Model
Shoal routes are packaged into three access layers:evaluation— lookup, scoped feeds, search, and usage introspectionoperational— higher-value workflow surfaces like briefspremium— bulk feeds, directory-style export surfaces, and delivery primitives like webhooks
X-Api-SurfaceX-Access-LayerX-Endpoint-Policy
/v1/entities/byName->registrysurface,evaluationlayer/v1/search->querysurface,evaluationlayer/v1/radar/all->feedsurface,premiumlayer
- resolve an entity by name
- inspect entity detail, relationships, or timeline
- use search for broader discovery
- use feed, webhook, and export surfaces only when the workflow justifies them
Install the CLI (Optional)
The fastest way to explore the API — no code required.Connect an AI Agent (Optional)
If you want Shoal available as native tools inside an MCP-compatible agent, use the hosted MCP server:app.shoal.xyz. The account must already have a valid API key with remaining quota.
Full setup: MCP Server
Make Your First Request
Test Request (Python)
Test Request (JavaScript)
Resolve an Entity When Needed
organizations/byOrganizationName route remains available as a compatibility surface.
Core Event Shape
Radar, Signal, Search, Brief, and webhook payloads are converging on one shared event object. Build new integrations against these canonical fields:summarybulletsownersparticipantsevidencelatestEvidenceTimestampsignificance
globalSummary, bulletSummary, eventOwner, eventParticipants, posts, latestPostTimestamp, and signal may still appear during the transition.
Next Steps
- Resolve an entity name:
/v1/entities/byName?name=ethereum - Fetch one entity:
/v1/entities/byId?id=<entity_id> - Traverse relationships:
/v1/entities/<entity_id>/relationships - Query one entity timeline:
/v1/timeline/byOrganizationId?id=<entity_id>&since=<iso_timestamp> - Search broader context:
/v1/search?query=ethereum%20foundation - Inspect current budget and plan headers:
/v1/usage
Common Errors
- 400 Bad Request: missing required parameter (e.g.,
since,id,category) or invalid timestamp - 401 Unauthorized: missing or malformed Authorization header
- 403 Forbidden: invalid API key or endpoint not available on the current plan
- 404 Not Found: invalid endpoint path
- 429 Too Many Requests: rate limit exceeded (100 req/min per key)
- 500 Internal Server Error: temporary issue; retry with backoff