---
title: "Liveness report"
method: GET
path: "/webcams/stats"
tags: ["Webcams"]
---

# Liveness report

`GET /webcams/stats`

## Request

- Base URL: `https://status.live/api/v1`
- URL: `https://status.live/api/v1/webcams/stats`
- Auth: none required

Cameras by status and by source, why the broken ones fail, those that went down in the last two days, the largest regions, and the checking itself (checks in the last 24 hours, overdue checks, each source's last sync).

## Response `200`

OK

- object
  - `cameras` integer
  - `by_status` object
    - `working` integer
    - `frozen` integer
    - `offline` integer
    - `unverified` integer
    - `unchecked` integer
    - `retired` integer
  - `checked_once` integer
  - `by_source` object[]
    - `source` string
    - `cameras` integer
    - `working` integer
    - `frozen` integer
    - `offline` integer
    - `unverified` integer
    - `unchecked` integer
  - `failures` object[]
    - `reason` string
    - `cameras` integer
  - `recently_down` CatalogWebcam[]
    - `as_of` string, date-time, nullable, required: When it was read from the source (UTC)
    - `age_s` integer, nullable, required: Its age in seconds
    - `stale` boolean, required: Older than about three refreshes of its source
    - `id` string, required
    - `name` string, required
    - `kind` 'still' | 'hls' | 'embed' | 'page', required: still: an image URL; hls: a live stream; embed: a player page; page: a page with the camera
    - `status` 'working' | 'frozen' | 'offline' | 'unverified' | 'unchecked', required
    - `last_ok` string, date-time, nullable
    - `last_changed` string, date-time, nullable: When its image last changed between checks
    - `reason` string: Why it is not working, e.g. "placeholder card"
    - `location` Location, nullable, required
      - `lat` number, required
      - `lon` number, required
    - `km` number: From `near`
    - `country` string, nullable
    - `region` string, nullable
    - `area` string, nullable
    - `route` string, nullable
    - `direction` string, nullable
    - `tags` string[]
    - `image_url` string, uri, nullable
    - `hls_url` string, uri, nullable
    - `player_url` string, uri, nullable
    - `page_url` string, uri, nullable
    - `near` object
      - `ski_resort` object
        - `id` string
        - `km` number, nullable
        - `api_url` string, uri
    - `license` string, required
    - `attribution` string, required: Show this with the image
    - `url` string, uri, nullable
    - `api_url` string, uri
  - `regions` object[]
    - `region` string
    - `cameras` integer
    - `working` integer
    - `checked` integer
  - `pipeline` object
    - `checks_24h` integer
    - `ok_24h` integer
    - `changed_24h` integer
    - `overdue` integer
    - `check_interval_h` integer
    - `syncs` object[]
      - `source` string
      - `at` string, date-time
      - `cameras` integer
  - `generated_at` string, date-time
  - `meta` Meta
    - `generated_at` string, date-time, required
    - `api_version` 'v1', required
    - `terms` string, uri, required
    - `attribution` string, required: Show this where you show the data
    - `sources` Source[], required
      - `name` string, required
      - `url` string, uri
      - `license` string

## Other responses

- `429`: Rate limited: 120 requests a minute per IP. Wait `Retry-After` seconds.

---

[API](https://skmtc.dev/status-live/apis/status-live-api.md) · [All operations](https://skmtc.dev/status-live/apis/status-live-api/llms.txt) · [OpenAPI document](https://skmtc.dev/status-live/apis/status-live-api/revisions/5fe517d19575?raw)
