canonical: https://jentic.com/apis/dyntube.com/dyntube

# DynTube API

Jentic publishes the only available OpenAPI specification for the DynTube API, keeping it validated and agent-ready. DynTube is a video hosting and delivery platform that lets developers programmatically upload videos by URL, organise them into projects and channels, run live streams, manage member access plans, and pull video analytics. The API spans three hosts (api.dyntube.com for management, upload.dyntube.com for upload, stats.dyntube.com for analytics) and is aimed at apps that embed gated or paid video alongside their own product.

## For AI agents

Upload, organise, and stream video content; manage projects, channels, live streams, member access plans, and pull analytics for any video in the DynTube account.

## Scope

Does not transcode arbitrary user uploads on the management host, run real-time meetings, or host non-video assets - use for video hosting, live streams, and gated video membership only.

## Capabilities

- Upload a video by URL and track its processing status until ready for delivery
- Organise videos into projects and channels with templated channel layouts
- Schedule, list, and update live streams with per-account stream limits
- Create paid or free member plans and manage members enrolled in those plans
- Pause, resume, or cancel a member plan immediately or at the end of the period
- Fetch video analytics by posting log queries to `/logs/data`
- Inspect account-level plan and live-stream entitlements before uploading

## Use cases

### Course Platform Video Hosting

An online course platform uploads each lesson video by URL via POST /videos, organises them under a project per course and a channel per module, and delivers them to enrolled members through DynTube's playback layer. Because uploads are URL-based, the platform can re-encode original masters in storage and let DynTube fetch them directly.

Example prompt: POST /videos with the master video URL and project ID for a new lesson, then poll GET `/videos/{id}/status` until processing completes

### Live Stream Scheduling for Webinars

A webinar tool creates a live stream with POST /live-streams, returns the stream key to the host, and tracks active streams against the per-account limit via GET `/live-streams/limit.` The same API surface lets the tool update or cancel the stream and then read the resulting recording back as a regular video.

Example prompt: POST /live-streams with title and start time to create a new stream, then GET `/live-streams/{id}` to retrieve the stream key for the broadcaster

### Membership-Gated Video Access

A subscription product creates plans via POST /plans, enrols users with POST /members, and grants access to a channel of paid videos. When a member churns, POST `/member-plans/{id}/cancel-now` revokes access immediately; for end-of-period cancellation, POST `/member-plans/{id}/cancel-at-period-end` keeps access until renewal would have happened.

Example prompt: POST /plans for a new monthly tier, POST /members to enrol the user, then POST `/member-plans/{id}/cancel-at-period-end` if the user requests cancellation

### Agent-Driven Video Management via Jentic

An AI assistant helping a creator publish a new lesson asks Jentic to 'upload a video to DynTube'. Jentic returns the POST /videos operation, the agent supplies the master URL and project ID, and DynTube ingests and processes the video - the bearer token is never exposed to the agent.

Example prompt: Use Jentic to search 'upload a video to DynTube', load the POST /videos operation, and execute it with the source URL and target project ID

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| POST | `/videos` | Upload a video by URL |
| GET | `/videos/{id}/status` | Get a video's processing status |
| POST | `/live-streams` | Create a live stream |
| POST | `/channels` | Create a channel |
| POST | `/plans` | Create a plan |
| POST | `/members` | Create a member |
| POST | `/member-plans/{id}/cancel-now` | Cancel a member plan immediately |
| POST | `/logs/data` | Get video analytics |

## Key resources

- **Videos** — Upload by URL, list, retrieve, update, delete, and check processing status
- **Projects** — Create, list, retrieve, update, and delete projects that group related videos
- **Channels** — Create, list, retrieve, update, and delete channels and list channel templates
- **Live Streams** — Create, list, retrieve, update, delete, count, and read live-stream limits
- **Plans** — Create, list, and delete subscription plans for video access
- **Members** — Create, list, retrieve, and view activity for members enrolled in plans
- **Member Plans** — List member plans and cancel, pause, or resume an individual plan
- **Analytics** — Fetch video and account analytics via POST `/logs/data` and GET `/account/plans`

## Why Jentic

- **Setup:** Wiring DynTube by hand means setting up its bearer auth against the /v1 host, tracking video and member ids, and coding the upload, live-stream, and membership calls yourself. Through Jentic you install once, import DynTube from the API Directory, store the token once, and your agent calls it.
- **Permission scoping:** DynTube puts the video and member id in the URL path (`/videos/{id}/status`, `/member-plans/{id}/cancel-now`), so a rule can pin your agent to one video or member: it can act on that resource and nothing else. You choose the operations it may call, so actions like cancelling a member plan or creating a live stream are not included unless you add them.
- **Credential handling:** Your DynTube token 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 'upload a video' or 'create a live stream', and Jentic returns the matching DynTube operation with its input schema and host context so the agent calls the right endpoint without browsing the reference docs.

## Related APIs

- **Dyte REST APIs** — Live video meetings, recording, and livestreaming - real-time-first compared to DynTube's hosting-first scope
- **DynaPictures API** — Generate video thumbnails and personalised cover images for DynTube videos
- **Dynosend API** — Email new video releases or live stream invites to subscribers via Dynosend

## FAQ

### Why is there no official OpenAPI spec for the DynTube API?

DynTube does not publish an OpenAPI specification. Jentic generates and maintains this spec so that AI agents and developers can call the DynTube API 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 DynTube API use?

The API uses bearer token authentication - pass your DynTube API key in the 'Authorization: Bearer <token>' header. The same token works across the API, upload, and stats hosts. Through Jentic, the token is held in the vault and the agent receives a scoped execution token instead.

### Can I upload a video file directly with the DynTube API?

POST /videos accepts an upload via URL - DynTube fetches from the URL you provide. For binary uploads use the upload.dyntube.com host as documented in the spec; the management host (api.dyntube.com) only handles URL-based uploads and metadata.

### What are the rate limits for the DynTube API?

The OpenAPI spec does not declare a numeric rate limit. DynTube applies plan-based caps on storage, bandwidth, and concurrent live streams - check GET `/live-streams/limit` and GET `/account/plans` before ramping up usage.

### How do I publish a new video through Jentic?

Run pip install jentic, search for 'upload a video to DynTube', load the operation for POST /videos, then execute it with the source URL and the project ID. Poll GET `/videos/{id}/status` until the processing state reaches ready.

### Can I cancel a member's plan at the end of the billing period?

Yes. POST `/member-plans/{id}/cancel-at-period-end` schedules cancellation so the member keeps access until renewal would have happened. POST `/member-plans/{id}/cancel-now` revokes access immediately, and POST `/member-plans/{id}/resume` reverses a scheduled cancellation.

### Can I limit what my agent is allowed to do with the DynTube API?

Yes. Jentic One runs self-hosted, so your own rules decide which DynTube operations the agent may call and which credentials it may use. Because DynTube puts the video or member id in the URL path, such as `/videos/{id}/status` or `/member-plans/{id}/cancel-now`, you can pin the agent to a single video or member so it acts on that resource and nothing else. Higher-impact actions like creating a live stream with POST /live-streams or cancelling a member plan stay off the agent's allowed list unless you explicitly add them.
