---
url: https://docs.seen.io/api/webhook.md
description: >-
  Explains how to configure the per-project webhook that delivers a generated
  video to your system automatically, including headers and retries.
---

# Webhook

Webhook allows you to deliver videos to your system automatically upon generation. You can access your webhook settings on the [Run page](../platform/projects/run) in your project.

## General

### URL

With the URL field, you will be able to define the endpoint of the request.

You can use any properties in your project to personalise the endpoint URL. This can be useful in cases where you are required to use (e.g.) an ID as a part of the endpoint.

## Method

With the Method dropdown, you will be able to define the request method.

Currently we support the following methods: `POST, GET, PUT, DELETE, PATCH`

## Headers

With the Headers field(s) you will be able to add headers for your request as key-value pairs. You can add multiple Headers by clicking the **Add a header** button.

You can use any properties in your project as the key or the value of the Header.

## Request content

You are able to create your request content as JSON.

You can use any properties in your project within the request content.

The dynamic content for the request is divided into two menus:

* **Variables** – You will find all your project properties in this menu.
* **Outputs** – You will find the project specific outputs in this menu: **Player link**, **Email thumbnail link**, **Thumbnail link**.

## Timeouts & Retries

Seen will wait up to **5 seconds** for your endpoint to respond. If no response is received within this window, the request is considered failed.

If a request fails due to a timeout or a non-2xx response code, Seen will **retry the same request up to 5 times**.

::: warning Best Practice: Respond First, Process Later
Your webhook endpoint should follow a "fire and forget" pattern. Return a `200 OK` response **immediately** upon receiving the request, then handle any heavy processing asynchronously in the background.

If your endpoint performs slow operations (database writes, API calls to other services, sending emails) before responding, you risk exceeding the 5-second timeout, which triggers unnecessary retries and potentially duplicate processing.

**Recommended approach:**

1. Receive the webhook request
2. Return `200 OK` immediately
3. Process the payload asynchronously (e.g. via a message queue or background job)
   :::

## Security

### No Authentication

Use this if you are using an endpoint with no authentication header.

### Basic Auth

Sends requests with username and password authentication. Requires HTTPS for security.

### OAuth

OAuth 2.0 Client Credentials flow for server-to-server authentication. The system will automatically request and manage access tokens using the provided credentials.

Fill out the following fields to configure OAuth authentication:

* **Token URL**
* **Client ID**
* **Client Secret**
* **Grant Type**
* **Scope**

### JWT to Token

JWT to Token flow for server-to-server authentication. The system will automatically request and manage access tokens using the provided credentials.

Fill out the following fields to configure JWT to Token authentication:

* **JWT Token**
* **Token URL**
* **Method** (`POST, GET, PUT, PATCH`)
* **Token Key found on the response**: add the JSON key where the Token should be located in the response
