Agent-readable docs index: /llms.txt. Full docs in one file: /llms-full.txt. Download /docs.zip to grep all markdown files locally.
/api/v1/public/announcementsGET
Paginated feed of governance notices delayed 15 minutes: rebalances, methodology updates, and corporate actions. Notices dated after the current delay window are not yet visible.
Query Parameters
type?"rebalancing" | "methodology" | "corporate_action" | "correction" | "termination" | "factsheet" | "policy"
Exact notice kind. Unknown values return 400.
from?string
Inclusive lower bound on notice date. A bare date is 00:00:00 UTC of that day. RFC3339 is used as-is.
to?string
Inclusive upper bound on notice date. A bare date is 23:59:59.999 UTC of that day. RFC3339 is used as-is.
index?string
Restrict to notices tagged with this index ticker. Case-insensitive.
page?integer
Default: 1Min: 1
per_page?integer
Default: 50Min: 1Max: 200
Response
200 · Paged announcements, newest notice first.
data *object[]
Show item properties
id *string
Stable public id.
type *"rebalancing" | "methodology" | "corporate_action" | "correction" | "termination" | "factsheet" | "policy"
notice_date *string (date-time)
When the change was announced.
effective_date?string (date-time)
When the change takes effect. Omitted when it is the notice date.
title *string
body?string
Plain-text narrative. Omitted when the notice has no body.
affected_indices *string[]
Index tickers this notice applies to. One change that fans across several indices is one row.
added_markets *string[]
Market ids added to the basket. Empty for non-rebalances.
removed_markets *string[]
Market ids removed from the basket.
provenance *object
Source back-pointer object.
meta *object
Show properties
total?integernull
Total number of records matching the request across every page, not just the current one. null on an uncounted list; page using has_next. A relevance-ranked search is uncounted, and a searched events list stays uncounted even with sort. A searched markets list with sort returns a total over the ranked matches (at most 10,000).
page?integer
The 1-based page number this response covers.
per_page?integer
Maximum number of items on a page. The last page may hold fewer.
total_pages?integernull
Total number of pages available at the current per_page. null whenever total is null; page using has_next.
has_next?boolean
True when a page exists after this one.
has_prev?boolean
True when this is not the first page.
total_capped?boolean
True when total and total_pages reflect the server's counting ceiling rather than the exact matched count: the real set is at least total large. Render such totals as a lower bound (for example "10,000+"). Omitted when the count is exact. A sorted markets search that fills the 10,000-candidate ceiling sets this flag.
400 · Invalid type, from, or to.
error?string
Stable, machine-readable code identifying the failure; branch on this rather than on message. One of bad_request, unauthorized, forbidden, not_found, conflict, service_unavailable, upstream_error, service_error, or internal_error.
message?string
Human-readable explanation, safe to show to a user. For client errors it names the specific problem; for server-side failures it is a generic notice and the underlying detail is deliberately withheld.
Request example
curl -X GET "https://api.adjacent.markets/api/v1/public/announcements"
Response example
{ "error": "bad_request", "message": "Invalid 'type' value 'churn'. Allowed: rebalancing, methodology, corporate_action, correction, termination, factsheet, policy." }