canonical: https://jentic.com/apis/api.video/apivideo

# Video api.video

Jentic publishes the only available OpenAPI specification for api.video, keeping it validated and agent-ready. api.video is a video infrastructure platform that encodes on the go to enable immediate playback across devices. The API covers video upload and management, live-streaming, players, account, analytics for live and on-demand assets, and authentication. Use it to add video upload, encoding, and playback to a product without building or operating a media pipeline.

## For AI agents

Upload, transcode, and stream live or on-demand videos through api.video, plus configure custom players and pull per-asset analytics through a 47-endpoint REST API.

## Scope

Does not handle DRM rights management, end-user authentication for paid content, or audio-only podcasting - use for video upload, live streaming, player configuration, and analytics only.

## Capabilities

- Upload a new video and let api.video transcode it for adaptive playback across devices
- Create a live stream with a unique stream key and a configurable thumbnail
- Retrieve play and engagement analytics for a specific videoId or liveStreamId
- Configure a custom player and attach a logo for branded playback
- Refresh the API key auth token before it expires to keep long-running agents authenticated
- Pull session-level event analytics to power a viewer journey dashboard

## Use cases

### User-Generated Video Upload Pipeline

A community platform lets members upload videos without running a transcoder. An agent posts uploaded files to /videos, and api.video transcodes them for adaptive bitrate playback on web and mobile. The platform stores the returned videoId and embeds the player without operating any encoding infrastructure.

Example prompt: POST a video file to /videos and return the assigned videoId and playback URL to the calling app

### Live Stream Setup for Webinars

An events team running a webinar needs a live stream with a custom thumbnail and a branded player. An agent calls /live-streams to provision the stream, sets a thumbnail through /live-streams/{liveStreamId}/thumbnail, and configures the player branding via /players. Setup that used to take hours of console clicking becomes a few API calls.

Example prompt: Create a live stream, set its thumbnail, and configure a player with the brand logo for the broadcast

### Per-Video Analytics Dashboards

Marketing teams want to see how each video performs without exporting CSVs by hand. An agent walks /analytics/videos/{videoId} and /analytics/sessions/{sessionId}/events for each tracked asset and writes the data into a dashboard. Insights about play-through and drop-off become a daily automated pull.

Example prompt: Retrieve analytics for each tracked videoId and aggregate plays, watch time, and completion into a dashboard

### Long-Running Auth Refresh for Agents

An agent that runs uploads continuously must refresh its api.video token before it expires. /auth/refresh exchanges the current token for a fresh one without re-prompting for the API key. The agent can sit in a tight upload loop without periodic credential failures.

Example prompt: Detect imminent token expiry, call POST /auth/refresh, and replace the stored bearer token before the next upload

### AI Agent Video Operations via Jentic

An AI agent that produces video content uses Jentic to upload, configure players, and pull analytics. Jentic exposes the api.video operations as discoverable tools, so the agent never reads the api.video reference - it searches by intent and executes the matching call.

Example prompt: Use Jentic to find the api.video upload operation, execute it with the file and metadata, and return the playback URL

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| POST | /auth/api-key | Exchange an API key for a bearer token |
| POST | /auth/refresh | Refresh an expiring bearer token |
| GET | /account | Retrieve account metadata and quota |
| POST | /live-streams | Create a live stream |
| GET | /live-streams/{liveStreamId} | Retrieve a live stream |
| GET | /players | List configured custom players |
| GET | /analytics/videos/{videoId} | Retrieve per-video engagement analytics |

## Key resources

- **Videos** — On-demand video objects with upload, playback, and metadata operations
- **Live Streams** — Live broadcast configuration with stream keys and thumbnails
- **Players** — Custom branded video players with logos
- **Analytics** — Engagement and session-level metrics for videos and live streams
- **Auth** — API key exchange and token refresh

## Why Jentic

- **Setup:** Wiring api.video by hand means exchanging your API key for a bearer token, refreshing it, and learning the live-stream, player, and analytics resource shapes yourself. Through Jentic you install once, import api.video from the API Directory, store the key once, and your agent calls it.
- **Permission scoping:** api.video puts the live stream id and video id in the URL path (/live-streams/{liveStreamId}, /analytics/videos/{videoId}), so a rule can pin your agent to one stream or video: it can read that resource and nothing else. You choose the operations it may call, so creating a live stream is not included unless you add it.
- **Credential handling:** Your api.video key is stored once, encrypted, by your own Jentic One instance and injected at execution time. It never enters the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'create a live stream' or 'get analytics for a video', and Jentic returns the matching api.video operation with its input schema so the agent calls the right endpoint without browsing the reference docs.

## Related APIs

- **Mux** — Mux is a developer-focused video infrastructure platform with a similar upload, encode, and playback surface to api.video.
- **Vimeo** — Vimeo's API combines hosting and a polished player surface; api.video focuses on infrastructure for app builders.
- **Bunny.net** — Bunny.net's CDN and storage often pair with api.video for global delivery of large video catalogs.

## FAQ

### Why is there no official OpenAPI spec for api.video?

api.video does not publish an OpenAPI specification. Jentic generates and maintains this spec so that AI agents and developers can call api.video via structured tooling. It is validated against the live API and kept up to date. Get started with Jentic One, the self-hosted execution layer.

### What authentication does the api.video API use?

api.video uses HTTP bearer-token authentication. Exchange your API key for a bearer token via POST /auth/api-key, send the token in the Authorization header, and renew it through POST /auth/refresh before it expires. Through Jentic, the API key is held in the credential vault and the token exchange is handled at execution time.

### Can I create a live stream with the api.video API?

Yes. POST /live-streams provisions a live stream and returns a stream key, ingest URL, and playback URL. You can then customise the thumbnail with POST /live-streams/{liveStreamId}/thumbnail. The stream is reusable across events.

### What are the rate limits for the api.video API?

The spec does not declare numeric rate limits. api.video enforces account-based throttling on uploads and analytics queries. Build retries with backoff on 429 and avoid tight polling on /analytics endpoints - fetch in batches and cache the results.

### How do I upload a video through Jentic?

Install the SDK with `pip install jentic`. Search Jentic for `upload a video to api.video`, load the schema for the video upload operation, and execute it with the file and title. Jentic injects the bearer token and returns the new videoId.

### Can I get analytics for a specific video?

Yes. GET /analytics/videos/{videoId} returns engagement and watch-time metrics for a specific asset. For per-session events, use /analytics/sessions/{sessionId}/events. Live-stream analytics live under /analytics/live-streams/{liveStreamId}.

### Can I limit what my agent is allowed to do with the api.video API?

Yes. Because api.video puts the resource id in the URL path (/live-streams/{liveStreamId}, /analytics/videos/{videoId}), your own rules in your self-hosted Jentic One let you pin the agent to a single stream or video so it can read that resource and nothing else. You decide which operations the agent may call, so a broad action like creating a live stream via POST /live-streams is excluded unless you explicitly add it. You also control which stored api.video credential the agent uses at execution time, keeping the key out of its prompt and context.
