# Prediction outcome history

- Method: `GET`
- Path: `/predictions/history`
- Credits: 1
- x402 wallet payment: https://nebula-api.hiddensystems.ai/api/v1/x402/predictions/history (no Nebula account or API key; check the payment offer before signing)
- Payment guide: https://docs.hiddensystems.ai/nebula/api/#x402
- HTML docs: https://docs.hiddensystems.ai/nebula/reference/get-prediction-history/
- Interactive docs: https://docs.hiddensystems.ai/nebula/api/#endpoint=get-predictions-history

## Description

Observed bid-ask midpoints for one venue outcome, as fractions from 0 to 1. The series contains UTC timestamps and up to 1002 observations without interpolation across gaps. History begins when Nebula first observes the listing; points is retained as a deprecated compatibility mirror.

## cURL Example

```bash
curl --get \
  --url 'https://nebula-api.hiddensystems.ai/api/v1/public/predictions/history' \
  --data-urlencode 'listing_id=polymarket:123' \
  --data-urlencode 'outcome_id=yes' \
  --header 'X-API-Key: YOUR_API_KEY'
```

## Path Parameters

No path parameters for this endpoint.

## Query Parameters

- `listing_id` (string, required): Listing ID
- `outcome_id` (string, required): Outcome ID within the listing
- `hours` (integer, optional, default: 168, range: 1–8784): Lookback window in hours. Free plans reach back 90 days; further returns 403.

## Response

OK

- `listing_id` (string, required): Venue-prefixed native market identity.
- `outcome_id` (string, required): Native outcome identity within the listing.
- `points` (array<object>, required): Deprecated compatibility mirror of series, using time instead of timestamp. Use series for new integrations.
- `points[].price` (number (double), required): Bid-ask midpoint as a fraction from 0 to 1; null without a valid two-sided quote. No last-trade fallback. Not subject sentiment.
- `points[].price_basis` (string, required): midpoint or unavailable for displayed quotes.
- `points[].time` (string (date-time), required): UTC observation time.
- `series` (array<object>, required): Actual midpoint observations in chronological order; no interpolation across gaps.
- `series[].price` (number (double), required): Bid-ask midpoint as a fraction from 0 to 1; null without a valid two-sided quote. No last-trade fallback. Not subject sentiment.
- `series[].price_basis` (string, required): midpoint or unavailable for displayed quotes.
- `series[].timestamp` (string (date-time), required): Observation time in UTC RFC 3339.

Media type: `application/json`

## JSON Response

```json
{
  "listing_id": "polymarket:123",
  "outcome_id": "yes",
  "points": [
    {
      "price": 0.65,
      "price_basis": "midpoint",
      "time": "2026-10-06T12:00:00Z"
    }
  ],
  "series": [
    {
      "price": 0.65,
      "price_basis": "midpoint",
      "timestamp": "2026-10-06T12:00:00Z"
    }
  ]
}
```
