Skip to main content
POST
/
libraries
/
{libraryId}
/
webhooks
/
endpoints
Create Webhook Endpoint
curl --request POST \
  --url https://api.tenbyte.io/v1/vidinfra/libraries/{libraryId}/webhooks/endpoints \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "url": "https://example.com/webhook",
  "name": "Video processing events",
  "events": [
    "created",
    "queued"
  ]
}
'
import requests

url = "https://api.tenbyte.io/v1/vidinfra/libraries/{libraryId}/webhooks/endpoints"

payload = {
"url": "https://example.com/webhook",
"name": "Video processing events",
"events": ["created", "queued"]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.text)
const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
url: 'https://example.com/webhook',
name: 'Video processing events',
events: ['created', 'queued']
})
};

fetch('https://api.tenbyte.io/v1/vidinfra/libraries/{libraryId}/webhooks/endpoints', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));
package main

import (
"fmt"
"strings"
"net/http"
"io"
)

func main() {

url := "https://api.tenbyte.io/v1/vidinfra/libraries/{libraryId}/webhooks/endpoints"

payload := strings.NewReader("{\n \"url\": \"https://example.com/webhook\",\n \"name\": \"Video processing events\",\n \"events\": [\n \"created\",\n \"queued\"\n ]\n}")

req, _ := http.NewRequest("POST", url, payload)

req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")

res, _ := http.DefaultClient.Do(req)

defer res.Body.Close()
body, _ := io.ReadAll(res.Body)

fmt.Println(string(body))

}
require 'uri'
require 'net/http'

url = URI("https://api.tenbyte.io/v1/vidinfra/libraries/{libraryId}/webhooks/endpoints")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"url\": \"https://example.com/webhook\",\n \"name\": \"Video processing events\",\n \"events\": [\n \"created\",\n \"queued\"\n ]\n}"

response = http.request(request)
puts response.read_body
HttpResponse<String> response = Unirest.post("https://api.tenbyte.io/v1/vidinfra/libraries/{libraryId}/webhooks/endpoints")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"url\": \"https://example.com/webhook\",\n \"name\": \"Video processing events\",\n \"events\": [\n \"created\",\n \"queued\"\n ]\n}")
.asString();
using RestSharp;


var options = new RestClientOptions("https://api.tenbyte.io/v1/vidinfra/libraries/{libraryId}/webhooks/endpoints");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("Authorization", "Bearer <token>");
request.AddJsonBody("{\n \"url\": \"https://example.com/webhook\",\n \"name\": \"Video processing events\",\n \"events\": [\n \"created\",\n \"queued\"\n ]\n}", false);
var response = await client.PostAsync(request);

Console.WriteLine("{0}", response.Content);
<?php

$curl = curl_init();

curl_setopt_array($curl, [
CURLOPT_URL => "https://api.tenbyte.io/v1/vidinfra/libraries/{libraryId}/webhooks/endpoints",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'url' => 'https://example.com/webhook',
'name' => 'Video processing events',
'events' => [
'created',
'queued'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
{
  "data": {
    "updated_at": "2025-10-15T13:06:54.816373335+06:00",
    "created_at": "2025-10-15T13:06:54.816373335+06:00",
    "library_id": "78542c6f-0dc1-4859-a122-35ad6f139827",
    "updated_by": null,
    "created_by": "2fa3fe27-ffcd-470b-becf-83f6f22a93ab",
    "headers": null,
    "name": "Video processing events",
    "url": "https://example.com/webhooks/tenbyte",
    "events": [
      "uploaded",
      "transcoded"
    ],
    "id": "8e5f8558-50dc-453f-9c36-4e4e9033b36a",
    "organization_id": "677826f5-1aea-4cba-8973-043cdbc60f35",
    "is_active": true
  },
  "message": "Webhook Endpoint Created Successfully",
  "success": true
}
{
"message": "Invalid Request",
"success": false
}
{
"code": "auth_type_not_found",
"message": "Could not determine authentication type from request. Please provide a valid Authorization header or X-API-Key header.",
"success": false
}
{
"message": "Resource not found",
"success": false
}
{
"message": "Invalid Request",
"errors": [
{
"field": "field_name",
"code": "validation_required",
"message": "This field is required"
}
],
"success": false
}
{
"message": "Internal server error",
"success": false
}

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Path Parameters

libraryId
string
required

Unique identifier of the library.

Body

application/json
url
string
required

The destination URL where webhook events will be sent.

name
string
required

A descriptive name for the webhook endpoint, used for identification.

events
string[]
required

List of event types that will trigger this webhook (e.g., 'video.created', 'transcoding.completed').

secret
string

Optional secret key used to sign webhook payloads for verification and security.

Response

data
object
required
message
string
required
success
boolean
required