Why use webhooks?

Depending on the length and size of the video, some jobs can take some time to complete.

Instead of polling the API for the status of the job, you can use webhooks to get notified when the job is updated.

Creating a webhook

You can create a webhook by going to our webhooks page and clicking the Create Webhook button.

From there you can specify the following:

  • The URL to send the webhook to
  • The events to subscribe to
  • Optionally, a description about the webhook for your own reference

Each webhook endpoint requires at least one event to be subscribed to.


Supported events

Currently we support the following events:

Transcribe Job

  • transcribe.job.processing
  • transcribe.job.completed
  • transcribe.job.failed

Extract Job

  • extract.job.processing
  • extract.job.completed
  • extract.job.failed

File Job

  • file.job.processing
  • file.job.completed
  • file.job.failed
  • file.job.deleted

Collection File Job

  • collection.file.job.processing
  • collection.file.job.completed
  • collection.file.job.failed
  • collection.file.job.deleted

You can subscribe to multiple events for the same endpoint.


Verifying the webhook

To verify that the events you are receiving are from Cloudglue, we send a header with each request that contains the webhook secret for your particular endpoint.

By comparing the secret in the header to the secret for your endpoint, you can verify that the request is in fact from Cloudglue.

You can find the webhook secret for an endpoint by going to the webhooks page.

Example Header:

X-Cloudglue-Webhook-Secret: your-webhook-secret

Payload

The payload will vary depending on the event.

It will always be a POST request with a JSON body.

File Payload

{
  "event_id": "string",
  "event_type": "string",
  "payload": {
    "file_id": "string",
    "uri": "string",
    "filename": "string",
    "metadata": "Record<string, string>",
    "bytes": "number",
    "status": "pending | processing | completed | failed",
    "created_at": "string"
  }
}

Transcribe Payload

{
  "event_id": "string",
  "event_type": "string",
  "payload": {
    "job_id": "string",
    "url": "string",
    "status": "pending | processing | completed | failed",
    "created_at": "string",
    "transcribe_config": "Record<string, string>"
  }
}

Extract Payload

{
  "event_id": "string",
  "event_type": "string",
  "payload": {
    "job_id": "string",
    "url": "string",
    "status": "pending | processing | completed | failed",
    "extract_config": "Record<string, string>",
    "created_at": "string"
  }
}

Collection File Payload

{
  "event_id": "string",
  "event_type": "string",
  "payload": {
    "collection_id": "string",
    "file_id": "string",
    "created_at": "string",
    "status": "pending | processing | completed | failed",
    "added_at": "string"
  }
}

To view the full object details, we recommend using the SDKs or APIs to make a request to fetch that object.

For more information on the full object details, please refer to the following sections:


Response

The endpoint expects you to return a HTTP 200 status code to confirm receipt of the webhook.

If you return a non-200 status code, we will retry the webhook up to 3 times.


Error Handling

If you return a non-200 status code, we will retry the webhook up to 3 times.

After 3 retries, we will stop retrying the event and mark it as failed.

Viewing past webhook events

You can view past webhook events by going to the webhooks page, and clicking the View Events button for an endpoint.

This will take you to a page where you can see the past events for an endpoint.


Something missing?

Want something more out of webhooks, tell us more about it in our Discord!


Other

You can make up to 10 webhook endpoints per account.