Overview
Webhooks let Reap push status updates to your server the moment a video project reaches a final state — no more polling. When a project completes, fails, or expires, Reap sends a POST request to your configured endpoint with the project’s status.How It Works
Reap Sends a Webhook
A POST request with the project status is sent to every active webhook URL configured in your studio.
Webhook Payload
Every webhook delivery sends a JSON POST request with this structure:Unique identifier of the project.
Type of project:
clipping, captions, reframe, or dubbing.Source of the original video:
youtube, user_upload, or external.The final status that triggered the webhook.
Statuses That Trigger Webhooks
| Status | Description |
|---|---|
completed | Project finished processing successfully. Clips/results are ready. |
invalid | The source video was invalid or processing failed. |
expired | Project results expired and are no longer available. |
Webhooks are only sent when a project reaches a final state. You will not receive webhooks for intermediate states like
processing.Setting Up a Webhook
Webhooks are configured from the Reap dashboard, not via the API.Open Webhook Settings
Log in to your Reap dashboard and navigate to Profile > Settings > Webhooks.
Validation
Reap sends a test POST request to your URL with the following dummy payload. Your endpoint must return HTTP 200 with an empty response body within 5 seconds.
Endpoint Requirements
Your webhook endpoint must meet these requirements:HTTPS Only
The URL must use HTTPS. HTTP, localhost, and private IP addresses are not allowed.
Accept POST with JSON
Your endpoint must accept POST requests with a
Content-Type: application/json body.Return 200 Empty
Respond with HTTP status 200 and an empty response body. Any other status code is treated as a failure.
Respond Within Timeout
Respond within 5 seconds during webhook creation/validation, and within 10 seconds for live deliveries. Exceeding the timeout counts as a failure.
URL Restrictions
Your webhook URL must pass these validation checks:- Must use the
https://scheme - Cannot point to
localhost,127.0.0.1, or0.0.0.0 - Cannot point to private or reserved IP address ranges
Example Webhook Receiver
Managing Webhooks
All webhook management is done from the Reap dashboard under Profile > Settings > Webhooks. You can:- Update the name or URL of an existing webhook. Changing the URL triggers a new test request.
- Disable/Enable a webhook. Re-enabling a disabled webhook triggers a test request to verify your endpoint is working.
- Delete a webhook to stop receiving notifications permanently.
- View delivery history for each webhook, including response codes and delivery times.
Auto-Disable on Failures
Reap tracks consecutive delivery failures for each webhook:- Each failed delivery (non-200 response, timeout, or unreachable endpoint) increments the failure counter.
- After 5 consecutive failures, the webhook is automatically disabled and you are notified via email.
- Any successful delivery resets the failure counter back to 0.
- Fix the issue with your endpoint
- Go to Profile > Settings > Webhooks in the dashboard
- Toggle the webhook back on (this triggers a test request)
Plan Limits
| Plan | Max Active Webhooks |
|---|---|
| Free | 0 (no webhook access) |
| Creator | 1 |
| Studio | 5 |
Best Practices
Respond Fast
Return 200 immediately and process the event asynchronously. Don’t do heavy work before responding.
Handle Duplicates
Design your handler to be idempotent. In rare cases, you may receive the same event more than once.
Monitor Deliveries
Check webhook delivery history in your dashboard regularly to catch issues before the auto-disable threshold.
Have a Fallback
Use Get Project Status as a fallback for critical workflows in case a webhook delivery is missed.
Next Steps
- Get Project Status — fallback polling endpoint
- Get Project Details — fetch full project data after a
completedwebhook - Get Project Clips — retrieve generated clips after completion