Skip to main content
POST
/
user
/
slack
Configure Slack Webhook
curl --request POST \
  --url https://api.tornadoapi.io/user/slack \
  --header 'Content-Type: application/json' \
  --header 'x-api-key: <x-api-key>' \
  --data '
{
  "webhook_url": "<string>",
  "notify_level": "<string>"
}
'
{
  "message": "Slack webhook configured successfully",
  "configured": true,
  "notify_level": "all"
}

Overview

Configure a Slack incoming webhook to receive notifications when jobs fail. You can choose to receive all failure notifications, errors only (technical failures), or warnings only (content issues like private/unavailable videos). The webhook URL is stored securely and encrypted at rest.

Header Parameters

x-api-key
string
required
Your API key for authentication

Request

webhook_url
string
required
Slack incoming webhook URL. Must start with https://hooks.slack.com/services/.
notify_level
string
default:"all"
Controls which failure types trigger a Slack notification:
  • all — Both errors and warnings (default)
  • errors_only — Only technical failures (rate limits, bot detection, connection errors)
  • warnings_only — Only content issues (private video, members-only, geo-blocked, unavailable)

Examples

curl -X POST "https://api.tornadoapi.io/user/slack" \
  -H "x-api-key: sk_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "webhook_url": "https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX"
  }'

Success Response

{
  "message": "Slack webhook configured successfully",
  "configured": true,
  "notify_level": "all"
}

Error Responses

{
  "error": "Slack webhook URL must start with https://hooks.slack.com/services/"
}
If you already have a Slack webhook configured, calling this endpoint again will replace the existing webhook and notify level.

Notification Format

When a job fails, Tornado sends a Slack message with a colored attachment:
  • Red (:x:) for technical errors (rate limits, connection issues, bot detection)
  • Orange (:warning:) for content warnings (private video, members-only, geo-blocked, unavailable)
The message includes the Job ID, a sanitized error category (no internal infrastructure details are exposed), and the source URL.

Notify Level Reference

LevelErrors (red)Warnings (orange)
all
errors_only
warnings_only

What counts as an error vs warning?

TypeExamples
Error (technical)Bot detection, rate limited, connection error, upload failed, processing failed
Warning (content)Private video, members-only, video unavailable, age-restricted, geo-blocked, channel terminated, copyright restricted
Only failed jobs trigger Slack notifications. Completed, pending, and processing jobs do not send any notification to Slack.