---
title: "List Recent Videos"
method: GET
path: "/videos/recent"
tags: ["public-videos"]
---

# List Recent Videos

`GET /videos/recent`

## Request

- Base URL: `https://api.sumvid.app` (the document declares no server; this is the origin it was published from)
- URL: `https://api.sumvid.app/videos/recent`
- Auth: none declared

Recent summarized videos with titles, for the frontend to build
human-readable link hubs (`/videos/ids` returns bare ids, useless for
link text). Public, unauthenticated. `channel` (exact name) backs the
frontend's channel pages and same-channel links; `tag` (a summary's
category tag, case-insensitive) backs the library's tag filter. `lang` is the reader's language:
titles come from the summary in that language when one exists (else
English, else YouTube's). Reads never generate translations. Declared ABOVE `/videos/{video_id}`
— same Starlette route-ordering requirement as `/videos/ids`: the
literal `recent` path segment must be matched here first, otherwise it
would be captured by `{video_id}` and auth-gated.

## Query parameters

- `limit` integer
- `offset` integer
- `lang` string, nullable
- `channel` string, nullable
- `tag` string, nullable

## Response `200`

Successful Response

- RecentVideosResponse
  - `requested_language` string
  - `items` RecentVideoEntry[], required
    - `youtube_video_id` string, required
    - `title` string, nullable
    - `original_title` string, nullable
    - `channel` string, nullable
    - `language_code` string, nullable
    - `last_summarized_at` string, date-time, required
  - `limit` integer, required
  - `offset` integer, required

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/sumvid/apis/summarize-vid.md) · [All operations](https://skmtc.dev/sumvid/apis/summarize-vid/llms.txt) · [OpenAPI document](https://skmtc.dev/sumvid/apis/summarize-vid/revisions/c03d66e07deb?raw)
