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/indices/{id}/newsGET
Related news drawn from the index's constituent markets, ranked by closest market match (via_market_id, via_market_question) and relevance blended with recency.
Authorization
bearerAuth *Bearer <token>
Session token from the app, or an API key (the ak_ prefix), sent as a Bearer token or an ?api_key= query parameter.. Token in: header
Query Parameters
min_similarity?number
Minimum cosine similarity a result must reach.
Default: 0.38Min: 0Max: 1
recency_half_life_days?number
Recency half-life in days for the relevance-recency blend applied to the ranking: a result's score is its similarity times 0.5^(age_days / this).
Min: 0
page?integer
Page number
Default: 1Min: 1
per_page?integer
Items per page
Default: 100Min: 1Max: 500
Response
200 · Paginated related news articles
data?object[]
Show item properties
article_id *string
similarity *number (double)
Cosine similarity of the best embedding match.
title?stringnull
url?stringnull
image_url?stringnull
published_date?string,null (date-time)
source?stringnull
Where the article was published: the publisher's name when known, otherwise the site's hostname.
via_market_id?stringnull
The market this article matched most closely. Present on index news (the winning constituent market, including a constituent rate's source market) and on rate news when a source market beat the rate itself.
via_market_question?stringnull
The question text of that market.
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.
Request example
curl -X GET "https://api.adjacent.markets/api/v1/indices/<id>/news" \ -H "Authorization: Bearer <token>"
Response example
{ "data": [ { "article_id": "a1b2c3d4", "similarity": 0.84, "title": "Senate race tightens in Pennsylvania", "url": "https://example.com/news/senate-pa", "published_date": "2026-06-01T08:00:00Z", "source": "Reuters" }, { "article_id": "e5f6g7h8", "similarity": 0.79, "title": "New polling shifts House outlook", "url": "https://example.com/news/house-outlook", "published_date": "2026-06-01T07:30:00Z", "source": "AP" } ], "meta": { "total": 2, "page": 1, "per_page": 20, "total_pages": 1, "has_next": false, "has_prev": false } }