One POST turns a YouTube URL into ranked, captioned, 9:16 clips. Or add Highstyle to Claude as a custom connector, sign in, and ask for clips in plain English with no key to create at all. Both draw on the same minute balance as the app, and there are no separate API fees.
Create a key on your Developers page (any account can, on any plan), then submit a video:
curl -X POST https://highstyle.ai/api/v1/clip \
-H "Authorization: Bearer hs_live_..." \
-H "Content-Type: application/json" \
-H "Idempotency-Key: my-video-42" \
-d '{
"url": "https://youtube.com/watch?v=VIDEO_ID",
"clips": 5,
"style": "spotlight",
"layout": "auto"
}'
# 202 Accepted
# { "project_id": "…", "job_id": "…", "status": "queued",
# "queued": true, "minutes_held": 60, "minutes_balance": 240,
# "poll": "/api/v1/projects/…" }Idempotency-Key is optional and worth sending: if a POST times out and you retry it with the same key, you get the original project back instead of a second run against a second hold. queued: false means we couldn't hand the job to the worker on that request, so poll before assuming it's running (a job that never starts is failed and refunded automatically).
Runs take a few minutes (the whole source is transcribed and analyzed). Poll until status is done:
curl https://highstyle.ai/api/v1/projects/PROJECT_ID \
-H "Authorization: Bearer hs_live_..."
# { "status": "done", "clips": [
# { "rank": 1, "title": "…", "hook": "…",
# "virality_score": 8.6, "duration_ms": 41000,
# "video_url": "https://…mp4",
# "share_url": "https://highstyle.ai/c/…" },
# …ranked best-first
# ] }| Endpoint | What it does |
|---|---|
| POST /api/v1/clip | Submit a YouTube URL. Options: clips (1-50, default 10), style (one of the 17 presets below, default spotlight), layout (auto | fill | balanced | fit | split | track), clip_mode (viral-short | long-short), music (auto | off | hype | chill | dramatic), sfx (boolean), title. Unknown values are rejected rather than quietly swapped for a default. |
| GET /api/v1/projects/{id} | Status, progress, and the finished clips ranked by predicted performance, each with timestamps, a direct mp4 URL and a public share page URL. |
| GET /api/v1/projects | Your recent projects, newest first, with clip counts and your minute balance. limit up to 50, before takes the previous page's oldest created_at as a cursor. |
| GET /api/v1/options | Every valid style, layout, clip mode and music value, the current limits, and your key's own state: plan, minute balance, and whether it can submit yet. |
Authentication is a bearer key on every request, and reads work on every plan so you can verify the integration before paying. Errors are JSON with an error message and a machine-readable code: 401 for a missing or revoked key, 403 upgrade_required when a free plan tries to run clips, 402 insufficient_credits when the balance is too low, 400 invalid_option for a bad value, and 429 rate_limited with a Retry-After header past 120 requests per minute per key.
Pass any of these as style. The animated presets are the default look; clean exists for creator campaigns whose rules ban styled or AI-looking subtitles, and it renders accurate captions with no glow, color emphasis, pop animation or title card.
| spotlight | Default. White title card mid-frame over the open, captions below, and a blue box that slides word to word over the spoken word. |
| reels | Glow with colored emphasis words, upper-center placement. |
| reels-nocard | reels without the opening title card. |
| reels-emotion | reels plus sentiment-colored emphasis: green for positive, red for negative, blue for neutral. |
| reels-emotion-solo | reels-emotion with solo word beats, each tagged word popped large and centered on its own. |
| inset | The picture inset with rounded corners on a flat field, the hook as plain type above it with one phrase in red, and karaoke captions inside the frame below the face. Prefers the card layout. |
| hormozi | Karaoke highlight with an active-word pop, hard black outline, white to yellow. |
| banner | Letterboxed header format. The hook stays in a black band across the top for the whole clip and the transcript arrives one word at a time below it. |
| clean | Campaign-safe. Accurate and legible with no glow, animation, color emphasis or title card, and natural casing. |
| minimal | Small plain captions low in the frame, natural casing. |
| karaoke | Yellow karaoke highlight, no pop. |
| boxed | Captions on a translucent black bar. |
| neon | Green neon text with a dark outline. |
| fire | Orange text with a dark red outline. |
| bold-center | Large two-word groups centered mid-frame. |
| top | Small captions pinned near the top of the frame. |
| default | Plain white three-word groups, the pre-preset look. |
Add Highstyle to Claude once and it can clip for you in conversation. There is no API key to create and no client ID or secret to paste: the whole setup is the URL https://highstyle.ai/mcp, after which Claude sends you to Highstyle to sign in and you approve the connection once. Custom connectors work on every Claude plan, and a free Claude account can have one.
New to this? The step-by-step guide walks the whole setup with pictures. What follows is the short version.
# Claude web, Desktop, mobile (Pro, Max, and Free) Customize > Connectors > + > Add custom connector Name: Highstyle URL: https://highstyle.ai/mcp # Then Continue, and sign in to Highstyle when Claude sends you there. # Leave Advanced settings alone: no client ID or secret is needed. # Team and Enterprise: an Owner adds it first, under # Organization settings > Connectors > Add > Custom > Web
On a Team or Enterprise plan a member cannot add one alone: an Owner adds it under Organization settings first, and it then shows up under Customize for everyone to connect individually.
# Claude Code, signing in through the browser claude mcp add --transport http highstyle https://highstyle.ai/mcp # Claude Code, using an API key instead of signing in claude mcp add --transport http highstyle https://highstyle.ai/mcp \ --header "Authorization: Bearer hs_live_..."
Claude asks Highstyle what it needs before it finishes adding the connector, so the sign-in happens there and then rather than later: you land on a Highstyle page naming the connection and the workspace it will spend minutes from, you approve once, and Claude returns holding a token tied to your account. The connection lasts until you disconnect it, in Claude or from your Connections page in Highstyle.
Claude reads the tool descriptions and picks what it needs, so you never name a tool yourself. Things people actually type:
A run takes several minutes, and Claude is told to wait rather than poll in a loop, so it holds the turn and comes back with ranked clips instead of asking you to check again. Each clip arrives with its title, hook, timestamps, a download URL and a share link, and asking to see one returns a still frame from the clip itself.
| Tool | What it does |
|---|---|
submit_clip_job | Takes a YouTube URL and starts a run. The only tool that spends minutes. |
wait_for_clips | Waits for a run to finish and returns the clips. Bounded, so it never hangs the conversation. |
get_project_status | Progress on one run, then its ranked clips once done. |
list_projects | Recent runs, clip counts, and the minutes left on the plan. |
list_clip_options | Caption styles, layouts, clip lengths and the rest of the vocabulary, so Claude uses real values rather than guessing. |
preview_clip | Returns one clip as a still frame in the conversation, plus its links. |
Signing in through the connector and using an hs_live_ key are two ways into the same account, and they meet the same limits. Minutes come from your plan balance, the one the web app spends, and a run holds up to 60 minutes then charges the video's real length when it finishes.
Reading works on every plan, so you can connect, ask what Highstyle does and list your projects before paying. Starting a run needs a paid plan, and Claude is told to say so plainly and point you at an upgrade rather than failing in a way it cannot explain.
Every connection is listed on your Connections page, with the app that asked for it and when it was last used. Disconnecting takes effect immediately: the tokens are deleted rather than flagged, so the next tool call from that Claude conversation asks you to sign in again.
API, MCP and app all spend one minute balance per workspace, so the minutes in your plan are the minutes your integration runs on and there's nothing separate to buy. A job holds up to 60 minutes when submitted; when it finishes you're charged the actual source length and the rest of the hold is refunded automatically. Failed runs refund in full. Anyone can create a key and read with it, and running clips needs any paid plan (from $19/mo).
Building something on this? We're early and responsive: webhook callbacks, uploads via API, and more tools land based on what integrators ask for. Reach us at support@highstyle.ai.