Skip to main content
GET
/
videos
/
search
Search videos
curl --request GET \
  --url https://app.nivo.video/api/v1/videos/search \
  --header 'Authorization: <api-key>'
{
  "videos": [
    {
      "id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
      "duration": 123,
      "title": "<string>",
      "description": "<string>",
      "folderId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
      "externalProviderId": "<string>",
      "externalStatus": "<string>",
      "externalStreamUrl": "<string>",
      "hlsPlaylistUrl": "<string>",
      "processedAt": "2023-11-07T05:31:56Z",
      "sizeInBytes": 123,
      "language": "<string>",
      "requestedDeletionAt": "2023-11-07T05:31:56Z",
      "metadata": {},
      "createdAt": "2023-11-07T05:31:56Z",
      "author": {
        "name": "<string>",
        "image": "<string>"
      }
    }
  ],
  "pageCount": 123,
  "amountOfUploads": 123
}
Search processed videos inside a collection using optional title text, folder, and tag slugs. Use the same API key authentication as the upload endpoint. Each video object excludes internal tenant identifiers (authorId, collectionId, organizationId), R2 storage keys, upload batch metadata (uploadBatchId, uploadOrder), and transcription regeneration status fields; see the OpenAPI schema for the exact response shape.

Authorizations

Authorization
string
header
required

API key for authentication. Include your company's API key in the Authorization header.

Query Parameters

collection_id
string<uuid>
required

Collection to search within (must belong to the organization for the API key).

q
string

Case-insensitive substring match on the video title. % and _ act as SQL LIKE wildcards.

folder_id
string<uuid>

Optional folder UUID. Unknown or out-of-collection folders yield an empty videos array (not 404).

tags
string[]

Tag slug per query key; repeat the parameter for multiple slugs (e.g. tags=foo&tags=bar). Same semantics as an array in URLSearchParams. Slugs are scoped to your organization. OR semantics across listed tags. Empty values are ignored. Unknown slugs yield 400.

page_index
integer
default:0

Zero-based page index.

Required range: x >= 0
page_size
integer
default:10

Page size (1–100).

Required range: 1 <= x <= 100
sort_by
enum<string>

Optional sort field. When omitted, results are ordered by created_at descending.

Available options:
title,
duration,
size_in_bytes
sort_order
enum<string>
default:asc

Sort direction when sort_by is set. Default asc.

Available options:
asc,
desc

Response

Search results

videos
object[]
required
pageCount
integer
required

Total pages for the current page_size.

amountOfUploads
integer
required

Total number of matching videos (distinct uploads).