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}GET
Get detailed information about a specific index
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
Response
200 · Index details
index_id *string
Stable identifier for the index (for example red). Use it as the {id} path parameter on the index detail, constituents, and price endpoints.
name *string
Full display name of the index.
ticker *string
Short uppercase symbol for the index (for example RED). This endpoint accepts either this ticker (case-insensitively) or index_id as its path parameter.
description *stringnull
Free-text description of what the index tracks.
methodology?stringnull
Registered methodology key used to compute the index. Omitted only when no methodology is stored.
quote_convention?"percent" | "points"
The unit this index quotes trailing performance in. percent: render the change_* fields. points: render the price_change_* fields, because the level is a point sum and a percent of it carries no meaning.
constituents_count *integer
Number of constituents in the index: member markets for a market-basket index, or child sub-indices for a composite. A derived index that inherits its book from a base index reports 0 and names that base in base_index_id.
is_composite *boolean
True for a composite index (its constituents are other indices and its price blends child sub-index values); false for a market-basket index (its constituents are exchange markets). Always present, so a client can branch on index kind even when the index has no constituents yet.
office_category *stringnull
The index's declared office category (lowercase, e.g. "senate"), the input to methodology weighting and composite child-weight derivation. Null for composites and uncategorized indices; always present.
base_index_id?stringnull
For a derived total_return index, the composite index it compounds the returns of; null for the curated families, which have no base. The detail page shows this in place of the constituent count a derived index lacks.
latest_price?numbernull
Most recent index level, on the base-100 index scale (100 is neutral). See level_interpretation for how this index's methodology frames the level, since a probability family and a total-return family read the same number differently.
level_interpretation?object[]
Methodology-resolved rows explaining what latest_price means, formatted server-side (the curated families frame it as a composite probability, total_return as a compounding return). The client renders them verbatim; omitted when the level or the methodology is unavailable.
Show item properties
label *string
value *string
price_change_1d?numbernull
Absolute change in index points (not a percent) from the previous daily close to latest_price. The baseline is the last completed daily close before the current day in US Eastern time, so this is a change against a settled value rather than a rolling 24-hour window.
price_change_7d?numbernull
Absolute change in index points (not a percent) from the daily close seven days before the current day in US Eastern time to latest_price. Null when the index has no daily close that far back.
previous_close_1d?numbernull
The index level at the previous daily close, meaning the last completed daily close before the current day in US Eastern time, not a rolling 24-hour window. Returned by GET /api/v1/public/indices/{id}; omitted on GET /api/v1/indices/{id}.
previous_close_7d?numbernull
The index level at the daily close seven days before the current day in US Eastern time, the baseline price_change_7d is measured against. Returned by GET /api/v1/public/indices/{id}; omitted on GET /api/v1/indices/{id}.
stats?object | null
Trailing returns and risk statistics computed from the index's daily close series over roughly the trailing 400 days. Returned by both index detail endpoints; the values are null individually when the series is too short for that window.
composition?object | null
Breakdown of the index over its flattened constituents: per-state exposure and a maturity profile of when those constituents expire.
halted?boolean
True when the latest index value was carried forward because the index fell below its constituent floor.
halt_valid_constituents?integernull
When halted, the valid (priced, guardrail-passing) constituents at the most recent halt cycle. Omitted when not halted.
halt_min_constituents?integernull
When halted, the category constituent floor the index fell below. Omitted when not halted.
halt_reason?stringnull
When halted, a human-readable explanation of the halt, composed from the constituent halt counts. Omitted when not halted.
visibility?"public" | "superuser" | "organization"
Access level of the index. public is visible to everyone; organization is visible to members of listed organizations. Other reserved values may appear on authenticated responses. Omitted on the anonymous public tier, which returns only public indices.
official_daily_value?object | null
Most recent official daily value. Null when this index family does not publish daily values.
sleeves?object[]
Current sleeve state for an NFL team index. Empty for other index families.
Show item properties
sleeve *"super_bowl" | "conference" | "division" | "wins"
Stable sleeve name.
label?string
Display label for this sleeve (for example Super Bowl).
empty_seat_label?string
Copy to render when the sleeve has no live member.
active *boolean
Whether the sleeve holds an active member. An inactive sleeve keeps its seat and contributes nothing until a successor is admitted.
market_id?stringnull
The current member's market id. Omitted for rate-backed unit-sleeve members.
rate_id?stringnull
The current member's rate id. Omitted for an inactive sleeve.
rate_ids?arraynull
Rate ids when the sleeve holds more than one member.
display_ticker?stringnull
Display label for the current member. Omitted for an inactive sleeve.
name?stringnull
Joined member names when the sleeve holds more than one member.
members *object[]
Members of this sleeve. One entry for a single seat, two for a wrapping pair, empty when the seat is vacant. Each entry may include active_from and active_until.
Show item properties
rate_id *string
The member's rate id.
name *string
The member's rate name.
mark_price?numbernull
This member's latest approved mark, 0-1 probability dollars. Omitted before the first mark.
active_from?string (date-time)
When this rate entered the priced sleeve. Omitted when unknown.
active_until?string (date-time)
When this rate left the priced sleeve. Omitted while that rate is still in the priced sleeve.
mark_price?numbernull
The sleeve's latest approved mark, 0-1 probability dollars. A wrapping pair also sends each leg on members. Omitted for an inactive sleeve or before the sleeve's first computed mark.
cumulative_points *number
The sleeve's cumulative contribution to the index level since base, in index points.
403 · The organization has no paid plan, so the realtime read scopes are refused. Distinct from a 429, which means a plan's budget ran out: nothing here resets on a timer, and the request succeeds only once the organization holds a plan.
error *string
Human-readable reason the request was refused.
status *integer
HTTP status code, repeated in the body.
upgrade_url?string (uri)
Page listing the plans and their request allowances, for buying access. Absent when no plan is available for purchase.
404 · Index not found
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.
429 · The organization's minute or UTC-day request budget is exhausted, or the organization has reached its cap on requests running at the same time (`limit: "concurrency"`). Wait `Retry-After` seconds before retrying; for a concurrency 429, reduce parallelism.
error *"rate_limited"
Always rate_limited. Branch on this to detect a throttled request.
limit *"rpm" | "daily" | "concurrency"
Which limit was hit: rpm for the per-minute cap, daily for the daily one, or concurrency for the cap on requests running at the same time.
message *string
Human-readable explanation naming the limit that was exceeded.
upgrade_url?string (uri)
Page listing the plans and their request allowances, for buying a larger budget. Absent when no plan is available for purchase.
Request example
curl -X GET "https://api.adjacent.markets/api/v1/indices/<id>" \ -H "Authorization: Bearer <token>"
Response example
{ "index_id": "red", "name": "Republican Political Future Index", "ticker": "RED", "description": "Composite of Republican party-line contests across all levels of office in the United States", "constituents_count": 5, "latest_price": 91.3069, "price_change_1d": 0.2663, "price_change_7d": -0.3112, "halted": false }