Skip to content

API keys and MCP

This page shows how to create an API key, revoke it, and use it with OhPlayer's MCP server or over HTTP.

An API key lets a tool act on your account without your password. Keys work on Lite and Pro. Right now every key has full access to your account: it can read your videos and analytics, propose recuts, publish, replace and import. Treat a key like a password.

Create a key

Click your name in the sidebar to open your account settings, then open the Developers tab. Under API keys, type an optional name (up to 40 characters, for example "Cursor laptop") and click Create key.

The Developers tab with no API keys yet. Marker 1 points to the Name field, marker 2 to the Create key button.

The Developers tab before you create a key. Marker 1 is the name field, marker 2 is Create key.

Copy the secret

The new key appears with its secret hidden. Click the eye icon (Show key) to see it, or click Copy. OhPlayer shows the secret once: "Copy it now. It won't be shown again." Paste it into a password manager or your tool's settings right away.

Use it

The secret starts with ohp_live_. Send it as a Bearer token:

Authorization: Bearer ohp_live_...

Later, the list shows the name, the start of the key (for example ohp_live_AbC1234…), when it was created and when it was last used.

Revoke a key

Click Revoke next to the key, then confirm Revoke. A revoked key stops working immediately. If a key leaks, revoke it and create a new one.

MCP

MCP is a standard way for AI tools to call other apps. OhPlayer's server takes JSON-RPC 2.0 requests:

POST https://api.ohplayer.com/mcp
Authorization: Bearer ohp_live_...

tools/list returns 13 tools, each with an input schema. To set up Cursor, Claude Code or another client, see Connect an AI assistant.

Tool What it does
list_videos Lists the videos in your library.
get_video Returns one video with its versions and captions.
get_watch_curve Returns the retention curve for the last 30 days.
get_transcript Returns timed transcript cues. Answers 409 if the video has no captions yet.
get_funnel Returns the Play → 50% → CTA → Lead funnel for the last 30 days.
get_leads Returns form submissions. On Lite it answers "Leads are on Pro. Upgrade to see them."
propose_recut Proposes cuts from the transcript. It does not publish.
apply_recut Encodes an accepted recut as a new version. Uses AI credits.
publish_version Makes a ready version the live embed.
replace_video_from_source Replaces a video's media with another video from your account.
get_embed Returns the embed snippet.
import_from_url Imports a video from a URL or a cloud source.
get_job Checks an import, recut or transcription job.

Publishing

Ask your assistant to show you a recut and wait for your approval before it publishes. replace_video_from_source goes live as soon as encoding finishes.

MCP cannot upload file bytes, and no MCP tool runs the AI edit (the Clean and Bold edit you start in the Studio). To add a new file, use the Studio or the HTTP upload below.

MCP answers with HTTP 200 even for errors. The error is in the JSON-RPC error field.

Replace a video over HTTP

A replacement keeps the same video_id and creates a new version. Do not send a version_id. The server assigns it.

Upload a new file as a replacement:

POST https://api.ohplayer.com/api/uploads
Content-Type: application/json
Authorization: Bearer ohp_live_...

{
  "size": 184231936,
  "file_name": "homepage-v4.mp4",
  "video_id": "7e2c0c8a-9b65-4b5e-9d28-2e2ff6a1c9ac"
}

Then PUT each chunk to /api/uploads/{session_id}/{chunk_index} and POST /api/uploads/{session_id}/complete.

To reuse another video from your account without uploading:

POST https://api.ohplayer.com/api/videos/{video_id}/replace-from
Content-Type: application/json
Authorization: Bearer ohp_live_...

{
  "source_video_id": "c8c4b1b2-b1b1-4d4e-8e5a-a7d2e9f4c0b1"
}

The reply is 202 with a video_id and a version_id. The new version goes live when it finishes encoding. To keep the old one live, add "publish_on_ready": false and publish later. Poll GET /api/videos/{video_id}/status until that version is ready and matches active_version_id. See Replace a video.

Request limits

Limits apply to each account per minute. If you go over, the request is refused and the reply says when to try again.

Requests Limit
Reads (GET) 300
Most writes, including POST /mcp 60
Starting an upload 10
Upload chunks 300
Imports and transcriptions 5
Recuts and publishing a version 5

Accounts in their first 7 days have lower limits on writes (30), starting uploads (3), chunks (150), imports (2) and recuts (3).

Next steps

Was this page helpful?

Your answer stays in your browser. Nothing is sent to us or to anyone else.