# Integration API (https://openclip.app/docs/developers/api/)



The Integration API lets an external platform drive OpenClip's clipping pipeline on behalf of its own users: a Discord bot that clips a member's stream VOD, a Telegram bot that returns shorts from a link, or an internal enterprise workflow. It is aimed at partners and the Business plan, where API access, webhook integrations, and a custom integration scope are part of onboarding. If you want to drive OpenClip from an AI assistant instead, use [MCP](https://openclip.app/docs/developers/mcp/).

## Reference [#reference]

* Interactive reference (Scalar): [https://openclip.app/api/docs](https://openclip.app/api/docs)
* Raw OpenAPI 3.0 spec: [https://openclip.app/api/docs/openapi.yaml](https://openclip.app/api/docs/openapi.yaml)

The base URL for all endpoints is:

```
https://api.openclip.io/api/integration/v1
```

## Authentication [#authentication]

Every request carries your API client's token as a bearer header:

```
Authorization: Bearer {your_api_token}
```

Each integration is registered as an API client with its own token, abilities, and rate limit. Rate limits are per client, not a fixed global value; read the `X-RateLimit-Limit` and `X-RateLimit-Remaining` response headers to see yours.

Webhooks going the other way are signed. Every webhook payload carries an HMAC-SHA256 signature in the `Signature` header; verify it by computing `HMAC-SHA256(webhook_secret, raw_request_body)` and comparing the result before trusting the payload.

## What the API covers [#what-the-api-covers]

**Users.** Create or find an OpenClip user from a platform identity (`platform` + `platform_user_id`, for example a Discord user id). The same call is idempotent: it returns the existing user if one is already linked.

**Authentication.** Bridge your users into the OpenClip web app without passwords: request a 6-digit email verification code, verify it to receive a magic-link login URL, and redeem invite codes.

**Videos.** Submit a video URL for processing (with optional `webhooks` for progress and completion callbacks) and poll its status by `job_id`. Submissions are tracked from the moment they are made, including failed downloads.

**Viral Moments.** Once processing completes, list a video's detected moments: title, hook, timestamps, virality score, and clip URLs.

**Rendering.** Request a captioned render of a viral moment with a chosen caption preset; a webhook hits your `callback_url` when the render finishes.

**Caption presets.** List the available caption styles so your users can pick a look before rendering.

## Typical flow [#typical-flow]

```text
1. POST /users                      -> create or find the platform user
2. POST /videos                     -> submit a URL, get a job_id
3. GET  /videos/{job_id}/status     -> poll (or receive your webhook)
4. GET  /videos/{job_id}/viral-moments
5. POST /viral-moments/{id}/render  -> webhook fires when the render is done
```

The exact request and response shapes for every endpoint, including error responses and webhook payloads, live in the [interactive reference](https://openclip.app/api/docs).

## Getting access [#getting-access]

API clients are provisioned as part of Business plan onboarding. See [plans and pricing](https://openclip.app/pricing) or contact support from the app to scope an integration.
