---
title: "Source-observed soccer and NFL fixture timing"
method: GET
path: "/txodds/fixtures/{fixture_id}/timing"
tags: ["Sports"]
---

# Source-observed soccer and NFL fixture timing

`GET /txodds/fixtures/{fixture_id}/timing`

## Request

- Base URL: `https://data.kairos.trade`
- URL: `https://data.kairos.trade/txodds/fixtures/{fixture_id}/timing`
- Auth: API key in header `X-Client-Id` and API key in header `X-Api-Key` and API key in header `X-Api-Secret`

Fresh source clock evidence for one TxODDS fixture. No response caching or client countdown extrapolation. Missing, legacy, stale, interrupted, unsupported, or malformed evidence returns usableForLateGame=false with an explicit reason. Requires a verified fixture-to-market mapping before use by a trading strategy.

## Path parameters

- `fixture_id` integer, required

## Response `200`

Timing evidence, including explicit unavailability.

- TxoddsFixtureTiming: Source-observed fixture timing. Eligibility describes supported clock evidence, not whether a game is late or a market is safe to trade. Soccer exposes the nominal second-half clock, excluding any unknown added time; NFL exposes regulation clock time. No field predicts the final whistle or extrapolates between observations.
  - `fixtureId` integer, required
  - `competitionId` integer, required
  - `sport` string, required
  - `source` string
  - `phase` string, nullable
  - `status` string
  - `observedAt` string, nullable
  - `evaluatedAt` string, required
  - `stateAgeSeconds` number, nullable
  - `staleAfterSeconds` integer
  - `stale` boolean
  - `clockSeconds` integer, nullable
  - `clockRunning` boolean, nullable
  - `clockDirection` string
  - `periodRemainingSeconds` integer, nullable
  - `regulationRemainingSeconds` integer, nullable
  - `gameRemainingSeconds` integer, nullable
  - `elapsedMatchSeconds` integer, nullable
  - `lateGameBasis` string, nullable
  - `usableForLateGame` boolean
  - `unavailableReason` string, nullable

## Other responses

- `401`: No valid credential presented — missing/invalid API-key headers, or an invalid/expired session token.
- `403`: Authenticated but not permitted. Three distinct causes: the session user is not invited (`Invite required`), the API key lacks the operation's scope, or API-key access to the requested venue is switched off (`API access is disabled for <provider>`). Admin and API-key callers bypass the invite check; session and admin callers bypass scope and venue checks.
- `404`: Fixture not found.
- `422`: Request failed FastAPI parameter validation.
- `429`: Rate limit exceeded for this route's sliding window, keyed on the session `sub` when authenticated and on the trusted client IP otherwise. Honor `Retry-After`. A per-API-key data ceiling (set per credential) rejects with `{"detail": "API key data rate limit exceeded"}` instead of the `error` envelope below.
- `500`: Timing source unavailable; no eligible fallback is returned.
- `502`: Invalid source observation.

---

[API](https://skmtc.dev/kairos/apis/kairos-data-api.md) - [All operations](https://skmtc.dev/kairos/apis/kairos-data-api/llms.txt) - [OpenAPI document](https://skmtc.dev/kairos/apis/kairos-data-api/revisions/cf6b76079e38?raw)
