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

# ContentGroove API

Jentic publishes the only available OpenAPI specification for ContentGroove API, keeping it validated and agent-ready. ContentGroove ingests video and audio media, runs AI processing for transcription, topic and keyword extraction, and suggested clips, and exposes the results through 15 endpoints across media, clips, direct uploads, and webhook subscriptions. Authentication uses an API key passed as Authorization Bearer, X-API-KEY header, or api_key query parameter, and webhook callbacks notify external systems when a media has finished processing.

## For AI agents

Upload video or audio, run ContentGroove's AI to transcribe and extract suggested clips, and receive webhook callbacks when processing completes.

## Scope

Does not handle live video streaming, video hosting, or video editing UI - use for AI transcription and clip suggestion on uploaded media only.

## Capabilities

- Ingest video or audio from a source URL or via direct upload up to 5 GB
- Trigger automatic transcription, topic extraction, and keyword detection on uploaded media
- Read suggested AI-generated video clips along with manually created clips
- Define custom video clip ranges over an existing media
- Subscribe to webhooks that fire when a media finishes processing
- Track media processing state to know when transcripts and clips are ready

## Use cases

### Podcast and Webinar Repurposing

Marketing teams upload long-form podcast episodes or webinar recordings and use ContentGroove's AI to surface suggested short clips, transcripts, and topic tags. The clips and transcript can be pulled back into a CMS or social-media scheduler so editors review rather than create from scratch. Typical processing time scales with media duration, and webhook callbacks remove the need to poll.

Example prompt: POST a media to `/api/v1/medias` with source_url pointing to a 60-minute podcast MP3, register a webhook on `/api/v1/webhook_subscriptions`, and on callback retrieve the suggested clips list

### Searchable Video Library

Education and training platforms ingest course videos, attach transcripts, and expose keywords and topics so students can search inside videos rather than scrubbing manually. ContentGroove returns transcript text, keyword lists, and topic groupings tied to the media id, which a downstream search index can pick up. Webhook callbacks make ingestion event-driven instead of poll-driven.

Example prompt: Upload a course video via direct upload, wait for the processing-complete webhook, and store the returned transcript, topics, and keywords in a search index

### Direct Upload Workflow for Large Files

When source media is not reachable by URL, applications use the direct upload flow: GET `/api/v1/direct_uploads` to obtain a signed upload URL and upload id, PUT the file to the signed URL, then POST `/api/v1/medias` with the upload id. This keeps large files (up to 5 GB) off the application server and avoids streaming through middleware. Direct uploads are the recommended path for user-generated content from a browser or mobile client.

Example prompt: Call GET `/api/v1/direct_uploads`, PUT a 2 GB MP4 to the returned URL, then POST `/api/v1/medias` with the upload id and a name

### AI Agent Video Clip Generator via Jentic

An AI agent embedded in a content production tool uses Jentic to upload a recording, wait for processing, and return a list of clip suggestions ranked by topic relevance. Jentic stores the ContentGroove API key in your Jentic One instance and signs each call with a scoped token. Webhook delivery URLs are still owned by the application; Jentic only proxies the API calls the agent makes.

Example prompt: Search Jentic for 'create a contentgroove media', execute with source_url, poll `/api/v1/medias/{id}` until state is processed, and return the suggested clips

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| POST | `/api/v1/medias` | Create a new media from a source URL or upload id |
| GET | `/api/v1/medias` | List medias in the account |
| GET | `/api/v1/medias/{id}` | Read media state, transcript, topics, and keywords |
| GET | `/api/v1/clips` | List clips across medias |
| POST | `/api/v1/clips` | Create a custom clip from a media |
| GET | `/api/v1/direct_uploads` | Obtain a signed upload URL and upload id |
| POST | `/api/v1/webhook_subscriptions` | Register a webhook for media-processing events |
| GET | `/api/v1/webhook_subscriptions` | List webhook subscriptions on the account |

## Key resources

- **Media** — Video or audio asset, ingested from a URL or upload, with transcript, topics, keywords, and suggested clips
- **Clip** — Time-coded segment of a media, either AI-suggested or user-created
- **Direct Upload** — Signed upload URL and upload id for putting large files directly to ContentGroove storage
- **Webhook Subscription** — Callback registration that POSTs JSON when media processing completes

## Why Jentic

- **Setup:** Wiring the ContentGroove API by hand means passing your api_key in the Authorization header and coordinating the media, clip, direct-upload, and webhook operations yourself. Through Jentic you install once, import the ContentGroove API from the API Directory, store the api_key once, and your agent calls it.
- **Permission scoping:** ContentGroove puts the media id in the URL path (`/api/v1/medias/{id}`), so a rule can pin your agent to reading one media item and its clips and nothing else. You choose the operations it may call, so state-changing ones like creating media or clips are not included unless you add them.
- **Credential handling:** Your ContentGroove api_key is stored once, encrypted, by your own Jentic One instance and injected into the Authorization header at execution time. It never enters the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'transcribe an uploaded video' or 'list clip suggestions', and Jentic returns the matching ContentGroove operation with its input schema so the agent calls the right endpoint without browsing the reference docs.

## Related APIs

- **AssemblyAI API** — AssemblyAI provides speech-to-text and audio intelligence with deeper transcript-level features.
- **Deepgram API** — Deepgram offers low-latency speech-to-text without ContentGroove's clip-suggestion layer.
- **Mux Video API** — Mux handles video ingest, encoding, and streaming that complements ContentGroove's AI clip output.
- **OpenAI API** — OpenAI can summarise or rewrite the transcript ContentGroove returns into headlines or social copy.

## FAQ

### Why is there no official OpenAPI spec for ContentGroove API?

ContentGroove publishes a Swagger reference at developers.contentgroove.com but does not host a stable, agent-consumable OpenAPI 3 file. Jentic generates and maintains this spec so that AI agents and developers can call ContentGroove 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 ContentGroove API use?

Server-side API keys are passed in the Authorization Bearer header, the X-API-KEY header, or the api_key query parameter. Through Jentic the API key is held in your Jentic One instance and the agent never receives the raw key - only short-lived scoped credentials applied at call time.

### Can I generate AI clip suggestions with the ContentGroove API?

Yes. POST `/api/v1/medias` creates a new media from either a source_url or a prior direct upload, and once processing finishes GET `/api/v1/medias/{id}` returns the transcript, topics, keywords, and AI-suggested clips. Custom clips can be added through POST `/api/v1/clips.`

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

ContentGroove returns 429 Too Many Requests when per-account rate limits are exceeded and 402 Payment Required when an account exceeds its plan quota; current usage is visible at app.contentgroove.com/quota_usage. Through Jentic, retries with exponential backoff are handled at the SDK level so agents do not need to implement throttling logic themselves.

### How do I upload a large video with the ContentGroove API through Jentic?

Run `jentic.search('upload a contentgroove media')`, load the operation, and the workflow returned chains GET `/api/v1/direct_uploads`, a PUT to the signed URL, then POST `/api/v1/medias` with the upload id. File uploads are limited to 5 GB per file.

### Does the ContentGroove API support webhooks?

Yes. POST `/api/v1/webhook_subscriptions` registers a callback URL that receives a JSON POST when a media finishes processing. The application must respond with HTTP 200; non-200 responses trigger retries with exponential backoff and webhooks must be treated as at-least-once.

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

Yes. Jentic One is self-hosted, so your own rules decide which ContentGroove operations and credentials the agent may use. Because ContentGroove puts the media id in the URL path (`/api/v1/medias/{id}`), you can pin the agent to reading a single media item and its clips through GET `/api/v1/medias/{id}` and GET `/api/v1/clips` and nothing else. State-changing operations such as POST `/api/v1/medias` or POST `/api/v1/clips` stay out of reach unless you explicitly add them to the allowed set.
