> ## Documentation Index
> Fetch the complete documentation index at: https://docs.useotto.xyz/llms.txt
> Use this file to discover all available pages before exploring further.

# US midterms odds and recap with x402

> Temporary, retiring 8 November 2026: Polymarket odds on the US midterms with Polymarket US, Kalshi and PredictIt prices named by venue, a movers board and an anchor-style recap, paid per call over x402.

> [!NOTE]
>
> Temporary: these three routes retire on 8 November 2026.

Three x402 routes read the US midterm election markets. Each is a `GET` with no inputs, paid per call in USDC on Base or Solana, and answers JSON. Odds are market prices, not forecasts. Data only, not advice.

## Choose a route

| Route | Price | What it returns |
| - | - | - |
| [`GET /midterms-alpha`](https://x402.ottoai.services/service-detail?path=/midterms-alpha) | 0.01 USDC | House, Senate and Balance of Power control, plus the 10 most-traded races. Each comes with its Polymarket odds, its 24-hour move, the money in trades of \$1,000 or more behind that move, the net flow of the five biggest wallets and the USD it takes to move the odds 5 points. Each also carries its price on Polymarket US, Kalshi and PredictIt, named by venue. Refreshed every 2 minutes. |
| [`GET /midterms-movers`](https://x402.ottoai.services/service-detail?path=/midterms-movers) | 0.01 USDC | The fastest 15-minute and 24-hour Polymarket odds moves across open midterm markets (control, Senate, governor and House races). Plus a board of up to 150 markets with live odds, 15-minute, 1-hour and 24-hour moves, and each row's price on Polymarket US, Kalshi and PredictIt, named by venue. Refreshed every minute. |
| [`GET /midterms-recap`](https://x402.ottoai.services/service-detail?path=/midterms-recap) | 0.05 USDC | A short news-anchor update on the Polymarket midterms odds, rewritten at most every 15 minutes from Otto's own midterms data. It opens with control of the House and Senate and which way the markets are moving, then the big moves. A headline, 150 to 250 words of plain prose, and every cited figure as data. |

A venue's price appears only where that venue lists the race. Otherwise the row marks it as not listed, or as unavailable when the venue could not be read.

## Make the first request

```bash theme={null}
curl -i https://x402.ottoai.services/midterms-recap
```

The unpaid request answers `402 Payment Required`. Its body and its `PAYMENT-REQUIRED` header carry the `accepts` array: USDC on Base (`eip155:8453`) or on Solana, with the amount in the token's smallest unit (`50000` is 0.05 USDC). Pay one entry with any x402 client, then send the same request again to receive the data.

The [HTTP API](https://docs.useotto.xyz/acp-swarm/x402.md#make-a-paid-request) page covers the payment client, receipts and [failures](https://docs.useotto.xyz/acp-swarm/x402.md#handle-failures).

## Read the result

Read `status` first: `success` or `failed`. On success, `data` holds the route's figures. The [OpenAPI document](https://x402.ottoai.services/openapi.json) lists each route's current description, price and networks.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.