---
title: "Check transcript coverage for a channel or playlist"
method: GET
path: "/v1/library"
tags: ["Library"]
---

# Check transcript coverage for a channel or playlist

`GET /v1/library`

## Request

- Base URL: `https://api.scripthaul.com`
- URL: `https://api.scripthaul.com/v1/library`
- Auth: HTTP bearer

Authenticated source-caption coverage for exactly one channel or playlist. Costs 0 credits. Allows 200 requests per free key per UTC day or 2,000 per paid key, including valid warm snapshots. The allowance is checked before upstream work; exhaustion returns 429 QuotaExceeded with Retry-After until 00:00 UTC. The normal key request rate also applies. A cold first enumeration page consumes the separate normal enumeration allowance and Data API capacity; further contiguous warm pages extend the snapshot without additional cold enumeration. Missing IDs and the create_job cold selection are capped at 500. snapshot_complete is false while source enumeration is truncated; next_offset identifies the next enumeration page. Display metadata is refreshed only when the original listing snapshot changes; repeated warm calls do not rewrite unchanged fields or extend their original 30-day freshness deadline. Indexing preserves newer listing metadata. Required counts.uncaptioned counts known non-indexed videos recorded as no_captions or unavailable; they are excluded from missing and cold selections. An existing searchable index takes precedence. complete is true only for a complete source snapshot with nothing indexable missing, and may be true while counts.uncaptioned is positive. This does not promise captions for every known video.

## Query parameters

- `channel` string
- `playlist` string

## Response `200`

Source-caption coverage, cold estimate, and uncaptioned count. A complete snapshot can have complete=true with uncaptioned videos when nothing indexable is missing.

- LibraryCoverage
  - `ok` unknown, required
  - `channel` string, nullable, required
  - `playlist` string, nullable, required
  - `videos_known` integer, required
  - `indexed` integer, required
  - `missing` string[], required: Known video IDs absent from the searchable index, excluding known no_captions or unavailable outcomes. Capped at 500.
  - `counts` object, required
    - `cold` integer, required: Estimated indexable missing videos that need a cold fetch, excluding uncaptioned outcomes.
    - `uncaptioned` integer, required: Known videos without a searchable index whose recorded fetch status is no_captions or unavailable. Existing indexed captions take precedence; these videos are excluded from missing and cold selections.
  - `complete` boolean, required: True only when the source snapshot is complete and nothing indexable is missing. May be true with counts.uncaptioned greater than zero; does not promise captions for every known video.
  - `snapshot_complete` boolean, required
  - `next_offset` integer, nullable
  - `create_job` object, required
    - `url` string, required
    - `video_ids` string[]

## Other responses

- `400`: InvalidInput: missing, conflicting, malformed, or unsupported parameters. Costs zero credits.
- `401`: Forbidden: a Bearer API key is missing, malformed, unknown, or revoked. Dashboard cookies cannot authenticate this endpoint. Costs zero credits.
- `403`: AccountFrozen or Forbidden: the account is frozen or the authenticated caller cannot use this route. Costs zero credits.
- `429`: QuotaExceeded: daily library-coverage allowance (200 free or 2,000 paid requests per key), key RPM, or cold enumeration allowance exhausted. Warm snapshots count. Daily exhaustion returns Retry-After until 00:00 UTC; no upstream work occurs after refusal. Costs zero credits.
- `502`: UpstreamError: source enumeration could not be completed. Costs zero credits.
- `503`: ConfigurationError or Data API capacity guard: the library or enumeration dependency is unavailable. Costs zero credits.

---

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