- Brand
- CutPro
- Category
- Pending
- Primary Subcategory
- Pending
Integration details
Description
CutPro finds the best moments of a long video and turns them into short, captioned vertical clips ready for TikTok, Reels and Shorts. Paste a YouTube, Twitch, Kick or TikTok link and CutPro clips the video, ranks the clips by how engaging they are, applies your saved templates, renders the final MP4s and posts them to the accounts you connected on cut.pro, now or on a schedule. ChatGPT always asks before starting a job or publishing anything. It also follows your favorite channels: CutPro clips a live stream while it airs, every 10 minutes, so the best moments are ready before the broadcast ends. And it transcribes audio and video into timed captions in SRT, VTT or plain text. Everything happens in your own CutPro workspace, the same one you use on cut.pro.
- Integration type
- Plugin
- Verification status
- Not applicable
- Platform
- ChatGPT
- Category
- Pending
- Primary Subcategory
- Pending
- Secondary Subcategories
- None listed
- Brand
- CutPro
- Access
- Account required
- First tracked
- 2026-10-17
- Tool count
- 52
- Geography
- US
The broad Category that contains the Primary Subcategory.
The Primary Subcategory used for this profile’s headline score.
Other Subcategories where the Integration is listed.
Your score is coming
ChatGPT now suggests Plugins on its own when they match a user's request.Your Plugin Discovery Score measures how often yours appears, and it will show here as soon as it’s ready.
What discovery looks like

Get alerts for CutPro
Get updates when CutPro’s Discoverability Score or category rank changes.
Competitive lineup
52 tools agents can invoke
Analyze a video Fetches metadata for a public video URL and calculates the exact credit cost before you commit to clipping. No credits are charged. Use this as a pre-flight check before calling `POST /clips`. When `credits_unlimited` is `true`, this workspace is on free usage: `credits_cost` still tells you what the job is worth, but submitting it will not move your balance. Rate-limited to **10 requests per minute** per user.
analyze_video
Apply template to broadcast clips Applies one of your templates to every clip of a broadcast, or to the `clip_ids` given, in the background. Each clip's `edit_id` shows up in `GET /monitors/{id}/broadcasts/{broadcastId}/clips` as it is done. To template every future clip instead, set `template_id` on the monitor. Only one batch runs at a time per account: another one answers `429`.
apply_broadcast_template
Apply template to clips Asynchronously applies one of your saved templates to all (or a subset of) the generated clips in a submission. The job runs in the background — returns immediately with the number of clips being processed. Once a template is applied, each clip gets its own edit settings that you can then render via `POST /clips/{videoId}/submissions/{submissionId}/clips/{clipId}/render`. Only one batch job can run at a time per account. Returns `429` if another is already running.
apply_template
Cancel a post Cancels every item of the post that is not public yet, so none of them will publish. Already-published items remain live on the destination platforms. Nothing is erased: CutPro keeps the record of the cancellation, and a fully cancelled post no longer appears in listings.
cancel_post
Cancel or delete a render Cancels a queued or active render, or permanently deletes a completed/failed/expired render record. Deleting a completed render also removes the rendered video file from storage.
delete_render
Create a post Creates a multi-platform post for one or more edited clips. Each entry under `videos` references an `edit_id` (the rendered or apply_template'd clip) plus a list of target connections with platform-specific metadata. `metadata` is the only part of this API that keeps each network's own field names (`privacyLevel`, `categoryId`, `privacyStatus`): they are forwarded to the network as-is, so renaming them here would only hide what actually goes out. Pass `scheduled_at` (ISO 8601, must be in the future) to schedule the post; omit it to publish immediately. Immediate posts kick off rendering + publishing in the background — poll `GET /posts/{id}` until every item is `completed` or `failed`. Failed items can be retried with `POST /posts/{id}/items/{itemId}/retry`. Networks still rolling out reject the whole request with `PLATFORM_UNAVAILABLE` before anything is created.
create_post
Delete a clip Permanently deletes a single generated clip. This action cannot be undone.
delete_clip
Delete a post item Cancels a single `pending`, `rendering` or `failed` item so it never publishes. A `rendering` item also aborts its render job when no other item still needs it. An item already `completed` is deleted from the destination network first, and only on networks that allow it. The network's refusal comes back as a `400` and nothing changes here. An item in `publishing` cannot be cancelled: the media is already on its way. Cancelled items stop appearing in listings, and CutPro keeps the record. When nothing of the parent post is left, `post_deleted: true` is returned.
delete_post_item
Delete a transcription Removes the job from the list and from every read endpoint. The uploaded media stays in your library, so the same `media_id` can be transcribed again, and that re-run is a cache hit, not a second charge.
delete_transcription
Delete a video Permanently deletes a video from your library along with all its submissions and generated clips. This action cannot be undone. Submissions still processing are cancelled and their credits refunded.
delete_video
Delete submission Permanently deletes a submission and all its generated clips. This action cannot be undone. A submission still processing is cancelled and its credits refunded.
delete_submission
Download a clip's captions Returns the clip's captions as an SRT file or plain text. When the clip has an edit, its own captions are used (with any fix or translation made there); otherwise the source transcript cut to the clip. Timestamps start at `00:00`, lined up with the clip's own video, so the file can go straight next to the rendered MP4.
download_clip_subtitles
Download the transcript as a subtitle file Returns the transcript as a ready-to-use subtitle file (`srt` by default, `vtt` or `txt`) with the matching `Content-Type` and a `Content-Disposition` filename. The body is the file itself, not JSON. Speaker names are written into the file only when the job was billed with `speaker_labels`; pass `speakers=false` to leave them out of a diarized transcript. Returns `409 TRANSCRIPTION_NOT_READY` while the worker is still running. Keep polling `GET /transcriptions/{transcriptionId}`.
download_transcription
Get a connection Returns a single connection by ID, with the latest captured audience metrics.
get_connection
Get a monitored channel Returns one monitored channel and whether it is on. Monitoring can also turn itself off when the balance runs out.
get_monitor
Get a post Returns full status of a post including every item. Poll this endpoint to track immediate posts through `pending → rendering → publishing → completed`.
get_post
Get balance Returns your current credit balance. Credits are consumed each time you submit a video for clipping. When `unlimited` is true this workspace is on a courtesy plan: usage still shows up in the history with what it would have cost, but the balance does not move and jobs are never blocked for lack of credits.
get_balance
Get bulk download status Returns the current state of a bulk download job. Poll every 5–10 seconds until `status` is `completed`. Once complete, `download_url` is a signed URL valid for one hour; the underlying file is purged once `expires_at` passes.
get_bulk_download
Get credit history Returns the credit transaction ledger for this workspace, newest first. Each row shows the delta (`amount`, negative for debits), the resulting balance, and what caused it (`reference_type` + `reference_id`) so you can reconcile against submissions, renewals, refunds, and bonuses.
get_balance_history
Get current workspace Returns information about the workspace this request resolved to: name, plan, credit balance, member count and the role of the user who created the key. A key bound to one workspace always resolves to it. A key bound to several resolves to the one in the `X-Workspace-Id` header, so call this whenever you need to confirm which workspace a request is actually hitting.
get_workspace
Get render download URL Returns a time-limited signed URL to download the completed rendered video as an MP4. The URL expires after **1 hour** — fetch it fresh each time rather than caching it. Returns `410` if the file has been purged from storage (renders expire according to your plan's retention period).
download_render
Get render quota Returns the workspace's current render usage and plan-level render limits. Use this before kicking off a render to avoid being throttled — if `usage.total_pending >= usage.max_concurrent`, a new render will be rejected with `429`.
get_render_limits
Get render status Returns the current status of a render job. Poll this endpoint until `status` is `completed` or `failed`. We recommend polling every **5–10 seconds**. Use `progress` (0–100) to display a progress bar to your users.
get_render
Get submission Returns the current status of a clipping submission. Poll this endpoint until `status` is `completed` or `failed`. We recommend polling every **5–10 seconds**. When `status` is `queued`, use `queue_position` and `estimated_time` to give feedback to your users. A submission can sit at `downloading` because the SOURCE is not fully published yet — a scheduled premiere, a livestream still on air, or a recording the platform is still processing. In that case `waiting_reason` is set (and `waiting_until` carries the announced start time, when the platform provides one). This is not an error and the submission is not stuck: it resumes on its own once the source becomes available. Surface it to your users instead of a generic "downloading", and offer them the option to cancel — `DELETE /v1/clips/{videoId}/submissions/{submissionId}` refunds the credits while `waiting_reason` is set.
get_submission
Get the transcript as JSON Returns the transcript as timed cues, ready to render or index without parsing a subtitle file. Timings are in seconds from the start of the audio. `speaker` is only ever filled when the job was billed with `speaker_labels`; on every other job it is `null`. Returns `409 TRANSCRIPTION_NOT_READY` while the worker is still running. Keep polling `GET /transcriptions/{transcriptionId}`.
get_transcription_cues
Get transcription status Returns the current state of a transcription job. Poll every **5–10 seconds** while `status` is `processing`. Once `status` is `ready`, fetch the text with `GET /transcriptions/{transcriptionId}/transcript` (JSON cues) or `GET /transcriptions/{transcriptionId}/download` (SRT, VTT or plain text).
get_transcription
List broadcasts of a live monitor Returns the channel's broadcasts, newest first, each with how many clips this workspace got from it. A broadcast with `ended_at: null` is on air and keeps producing clips every 10 minutes while the monitor is on. Only `live` monitors have broadcasts: a `video` monitor answers `400 INVALID_OBSERVING_TYPE`, and its clips arrive as regular submissions in `GET /clips`.
list_broadcasts
List clips of a broadcast Returns the clips this workspace got from one broadcast, best rated first by default. While the broadcast is on air, new clips land every 10 minutes, so poll this list rather than waiting for the broadcast to end. A clip with an `edit_id` is ready to render or post; one without it renders with the default layout through `POST /monitors/{id}/broadcasts/{broadcastId}/clips/{clipId}/render`. Returns `410` once the recording was purged.
list_broadcast_clips
List connections Returns the active social connections in this workspace — the IDs you pass as `connection_id` when creating a post. Each entry includes the platform, public profile info (username, avatar, bio) and the latest captured audience metrics (followers, posts, likes). Revoked or disconnected accounts are excluded.
list_connections
List generated clips Returns the AI-generated highlight clips produced by a completed submission. Each clip includes its timestamp range within the source video, an AI relevance score, and signed URLs for streaming and downloading. Sort by `rating` (default) to surface the most impactful clips first. Download and play URLs are time-limited signed URLs — fetch them fresh when needed rather than caching them long-term. Returns `410` if the submission has expired. Re-submit the video to generate new clips.
list_clips
List monitored channels Returns the channels this workspace monitors, with whether each one is on right now and the settings its clips use.
list_monitors
List posts Returns a paginated list of posts in this workspace, newest first. Each post includes its items with current status and error codes.
list_posts
List renders Returns a paginated list of all your render jobs, newest first. Filter by `status` to focus on processing, completed, or failed renders.
list_renders
List submissions Returns a paginated list of all clipping submissions for a video, newest first. Use this to audit past runs, find a specific submission ID, or check whether a job is still in progress.
list_submissions
List templates Returns a paginated list of video editing templates. Use `filter=mine` (default) to list your own templates, or `filter=public` for CutPro's built-in public templates. Pass a template's `id` to `POST /clips/{videoId}/submissions/{submissionId}/apply_template` to apply it in bulk to your generated clips.
list_templates
List transcriptions Returns a paginated list of the workspace's transcription jobs, newest first.
list_transcriptions
List videos Returns a paginated list of all source videos in your library, ordered by most recent submission. Each item includes lifecycle counters (clips generated, edits, exports, posts) and the status of the latest submission.
list_videos
Monitor a channel Starts watching a YouTube, Twitch or Kick channel from its URL. A `live` monitor clips each broadcast while it airs, charged per 10-minute batch; a `video` monitor clips each new upload. It is born on unless `enabled` is `false`, which is how a 24/7 stream is set up once and then switched with `start` and `stop`. Refusals: `400`, `402`, `403`, `404`, `409 ALREADY_MONITORING`, and `429` (10 per minute, because it looks the channel up on the platform).
create_monitor
Render a broadcast clip Queues a live clip for rendering and returns the render `id` to poll with `GET /renders/{renderId}`. The clip renders with its template when one was applied, otherwise with the default layout. If an identical render is already in storage, returns `200` with `from_cache: true` and a ready `download_url`; `409` if the same clip is already rendering.
render_broadcast_clip
Render a clip Queues a clip for video rendering. Returns the render `id` you can use to poll status via `GET /renders/{renderId}`. If a template has been applied to the clip (see `apply_template`), the rendered video will include all template customisations (captions, effects, cropping, etc.). Otherwise the clip is rendered with default settings. If an identical render has already been completed, returns `200` with `from_cache: true` and a ready `download_url`. Returns `409` if the same clip is already being rendered.
render_clip
Render an edit Renders an edit you already own and returns the render `id` to poll with `GET /renders/{renderId}`. This is how you get a fresh MP4 of a clip you published months ago: the edit never expires, so re-rendering it always works, even after the rendered file itself was purged. If an identical render is already sitting in storage, returns `200` with `from_cache: true` and a ready `download_url`. Returns `409` if the same edit is already rendering.
create_render
Retry a failed item Re-queues a `failed` item for publishing. Its `error_code` and previous `render_id` are cleared. Only items currently in `failed` state can be retried.
retry_post_item
Retry a failed submission Runs a `failed` submission again with the exact settings it was created with (strategy, timeframe, template, translation) and returns the NEW submission, charged like `POST /clips`. The failed one stays in the history. Retrying a submission that did not fail answers `409 SUBMISSION_NOT_FAILED`.
retry_submission
Start a bulk download Packages a set of completed renders into a single zip file. Returns the job `id` immediately, then poll `GET /renders/bulk-download/{jobId}` until `status` is `completed`, then download the zip from the returned URL. Up to 500 renders per job. Renders that don't belong to your workspace are silently skipped; the job fails with `NO_VALID_RENDERS` if none survive that filter.
create_bulk_download
Start monitoring Turns monitoring on. For a `live` monitor, a channel that is already live starts being recorded within about a minute, and clips come from what airs from then on; nothing before the start is clipped. Calling it on a monitor that is already on changes nothing and answers `200`. Refusals: `402`, `403`, `404`.
start_monitor
Stop monitoring Turns monitoring off. No new batch is clipped or charged after this, and a recording in progress stops within about a minute. Monitoring must stay on for at least 10 minutes before it can be stopped: earlier you get `409` with `extra.remaining_seconds`. Calling it on a monitor that is already off changes nothing and answers `200`. Refusals: `404`, `409`.
stop_monitor
Stop watching a channel Removes the monitor and turns it off. Clips it already produced stay in the workspace, and creating a monitor for the same channel and `type` again brings this one back with its history and automations, under the same `id`.
delete_monitor
Submit a video for clipping Queues a video for AI clipping. Credits are deducted immediately upon submission. Returns the submission `id` to track progress. Poll `GET /clips/{videoId}/submissions/{submissionId}` until `status` is `completed` or `failed`, then retrieve the generated clips from `GET /clips/{videoId}/submissions/{submissionId}/clips`.
create_submission
Transcribe a media file Starts a transcription for a media file you uploaded via `POST /transcriptions/upload`. Credits are charged per minute of audio, plus a surcharge when `speaker_labels` is requested. Check the balance at `GET /balance` first. Responds `202` with `status: processing` when the ASR worker was dispatched: poll `GET /transcriptions/{transcriptionId}` until `status` is `ready` (or `failed` / `no_speech`), then fetch the text. Responds `200` when nothing had to run. That happens when the same audio was already transcribed (the transcript is shared per media, so a re-run is a cache hit and `credits_charged` is `0`), or when the audio is silent, which comes back as `no_speech` and is not billed. Passing a `media_id` that is already in your library re-runs it. That is how a transcript created without diarization is upgraded: ask again with `speaker_labels: true` and the audio is reprocessed, because the speaker column cannot be added after the fact.
create_transcription
Trigger publish Forces the publishing pipeline to run for a post that is currently `pending`, `failed`, or stuck. Useful for scheduled posts you want to publish early, or to nudge a post whose worker missed its window.
publish_post
CutPro ChatGPT Plugin FAQ
How the directory, categories and Discoverability Score work.
Read the methodologyHow do I improve CutPro's ChatGPT Plugin discoverability?
The levers are the listing surface agents actually read: names, descriptions, keywords, tool metadata, and registry health. Which lever matters depends on where discovery breaks, which is what continuous measurement shows.
Where is this profile measured?
This profile uses the geography attached to the latest public registry snapshot: US. Locale tags are intentionally omitted.