Webhook Delivery

Webhooks allow you to receive API response data automatically β€” without polling. Instead of repeatedly calling an endpoint to check if a job has completed, you can register a webhook URL and receive the result pushed directly to your server.


Setup

1. Test Your Webhook URL

Before using a URL in your API calls, verify it is publicly reachable using the test endpoint:

POST https://dashboard.transcriptdownloader.com/api/webhook/test

Body:

{
    "url": "https://your-domain.com/webhook"
}
Parameter Type Required Description
url string Yes The webhook URL to test. Must be a publicly reachable http:// or https:// URL.

Success response β€” URL is reachable and returned a 2xx:

{
    "status": "success",
    "message": "Webhook URL is reachable and returned a successful response. You can now use this URL in your API calls.",
    "http_status": 200
}

Error response β€” URL is unreachable or returned a non-2xx:

{
    "status": "error",
    "message": "Your URL is reachable but returned HTTP 405 (Method Not Allowed). Make sure your endpoint accepts POST requests.",
    "http_status": 405
}

πŸ“‹ Note: Private/internal addresses (localhost, 192.168.*, etc.) are blocked. The test sends a real POST request with a sample payload to verify reachability.

2. Pass include_webhook in Your Request

Add "include_webhook": "<your-url>" to the body of any supported API request. When the job completes (or fails), the full response payload will be POSTed to that URL.

{
    "youtube_video_id": "Fqdz6A-5d04",
    "include_webhook": "https://your-domain.com/webhook"
}

No global webhook URL configuration is required β€” the URL is passed directly with each request.


How It Works

Header Description
X-Webhook-Endpoint The API endpoint that triggered this webhook (e.g. downloads/audio)
X-Webhook-Original-Status The HTTP status code of the result (200 for success, 400/500 for failure)
X-Webhook-Download-Id The ULID of the download record (when available)

Supported Endpoints

All async endpoints support include_webhook. The webhook fires once when processing completes.

YouTube

Endpoint X-Webhook-Endpoint value Fires when
POST /api/downloads/audio downloads/audio Audio download succeeds or fails
POST /api/downloads/video downloads/video Video download succeeds or fails
POST /api/transcripts transcripts Transcript is ready or fails
POST /api/transcriptspeakerid transcriptspeakerid Speaker diarization completes or fails
POST /api/channel/profile channel/videos Channel profile & video list completes

Instagram

Endpoint X-Webhook-Endpoint value Fires when
POST /api/instagram/profile instagram/profile Profile fetch completes or fails
POST /api/instagram/content instagram/content Content metadata fetch completes or fails
POST /api/instagram/list instagram/list Full posts & reels list is ready or fails
POST /api/instagram/audio instagram/audio Instagram audio download completes or fails

Request Headers Sent to Your Server

Every webhook delivery includes these headers:

Content-Type: application/json
User-Agent: TranscriptDownloader-Webhook/1.0
X-Webhook-Endpoint: downloads/audio
X-Webhook-Original-Status: 200
X-Webhook-Download-Id: 01JW72M0AGW3M6R3QDCS30RD2P

The payload body is the exact same JSON the API endpoint would return β€” see each endpoint’s documentation for the full response structure.


Retry Behaviour

Attempt Delay before retry
1st retry 10 seconds
2nd retry 30 seconds
3rd retry 60 seconds

After 3 failed attempts the delivery is permanently abandoned. Ensure your endpoint returns a 2xx status code promptly to acknowledge receipt.


Important Notes


Support

If you need assistance or have any questions, please contact our support team at https://transcriptdownloader.com/#contact.