About octen-video-search
octen-video-search is a skill that searches web videos using text queries. It returns matched timestamps alongside video details, helping researchers and viewers locate relevant moments; the service is currently in invite-only beta and requires an API key.
Key features
- 01Search videos with text queries
- 02Return matched segment timestamps
- 03Filter by relative or ISO 8601 dates
- 04Set result count and safe-search mode
- 05Include source, author and cover details
Use cases
- 01Finding a specific moment in a video
- 02Searching for recent videos on a topic
- 03Filtering video results by publication period
Install
Copy the command and run it in a terminal.
npx skills add https:/ / github.com/ octen-team/ octen-skills --skill octen-video-searchAfter installing, type/octen-video-searchin Claude Code to confirm it loaded.
Bundled filesagents/openai.yaml
Details
From the project READMEOcten Video Search
Find web videos by a text query. Each result includes the matched segment (start/end timestamps within the video), duration, cover image, source page, and author — so you can jump straight to the relevant moment.
In Beta. Contact us to request beta access. Octen Video Search is in invite-only beta — request access via https://octen.ai (or [email protected]). Calls will fail without access; if so, tell the user it's in beta and how to reach Octen.
API Key Setup
Before searching, ensure OCTEN_API_KEY is set. If it is missing — or any call returns 401 — stop and do not retry blindly: tell the user a key is required, point them to https://octen.ai, help them configure it for their agent, then continue once it's set. A 403 means the key is valid but the request was refused — either no beta access or insufficient account balance; relay both possibilities and how to request beta access.
Configure the key for the relevant agent (same as other Octen skills):
- Claude Code — add
{ "env": { "OCTEN_API_KEY": "your-key" } }to~/.claude/settings.json - Cursor / generic shell —
export OCTEN_API_KEY="your-key"in~/.zshrcor~/.bashrc - Codex —
~/.codex/config.toml→[shell_environment_policy],set = { OCTEN_API_KEY = "your-key" } - OpenClaw — add
OCTEN_API_KEY=your-keyto~/.openclaw/.env
Endpoint
POST https://api.octen.ai/video-search
Authentication: X-Api-Key: <API_KEY> header · Content-Type: application/json
Quick Start (cURL)
curl -s -X POST "https://api.octen.ai/video-search" \
-H "Content-Type: application/json" \
-H "X-Api-Key: ${OCTEN_API_KEY}" \
-d '{
"inputs": [{"type": "text", "data": "how to tie a tie"}],
"count": 5
}'
With Time Filtering
curl -s -X POST "https://api.octen.ai/video-search" \
-H "Content-Type: application/json" \
-H "X-Api-Key: ${OCTEN_API_KEY}" \
-d '{
"inputs": [{"type": "text", "data": "GPT-5 launch keynote"}],
"count": 10,
"time_range": "month"
}'
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
inputs | array | Yes | - | One text input: [{"type": "text", "data": "<query>"}] (query max 500 chars) |
count | integer | No | 5 | Number of results (1–10) |
time_range | string | No | - | Relative time window: day, week, month, year (or d, w, m, y) |
start_time | string | No | - | Start time filter, ISO 8601 |
end_time | string | No | - | End time filter, ISO 8601 (must be after start_time) |
safesearch | string | No | strict | Adult content filter: off or strict |
Response Format
| Field | Type | Description |
|---|---|---|
request_id | string | Unique request identifier |
data.results[] | array | List of video results |
data.results[].title | string | Video title |
data.results[].url | string | Video URL |
data.results[].source_page | string | Page the video was found on |
data.results[].description | string? | Video description |
data.results[].cover_url | string? | Cover/thumbnail image URL |
data.results[].duration_seconds | integer? | Total video duration in seconds |
data.results[].match_segment | object? | Matched segment {start_seconds, end_seconds} |
data.results[].authors | string? | Channel / author |
data.results[].time_published | string? | Publish time, ISO 8601 |
data.results[].time_last_crawled | string? | Last crawl time, ISO 8601 |
meta.latency | number | Response time in milliseconds |
meta.warning | string? | Warning message, if any |
Error Codes
| HTTP Status | Description |
|---|---|
400 | Missing or invalid parameter |
401 | Invalid or missing API key |
403 | Insufficient balance, or no beta access |
429 | Rate limited |
500 | Internal server error |
Notes
- Input is text only today (
{"type": "text", "data": "..."}). match_segmentgives the timestamps of the most relevant moment — surface them so the user can jump straight to it.countis capped at 10.