Skip to main content
POST
/
api
/
v1
/
notifications
/
channels
curl --request POST \
  --url "${UNSTRUCTURED_API_URL}/api/v1/notifications/channels" \
  --header "unstructured-api-key: ${UNSTRUCTURED_API_KEY}" \
  --header "Content-Type: application/json" \
  --data '{
    "channel_type": "webhook",
    "url": "https://hooks.example.com/notify",
    "event_types": ["job.completed", "job.failed"],
    "description": "Job status alerts",
    "enabled": true
  }'
{
  "id": "c1d2e3f4-5a6b-7c8d-9e0f-1a2b3c4d5e6f",
  "channel_type": "webhook",
  "description": "Job status alerts",
  "event_types": ["job.completed", "job.failed"],
  "enabled": true,
  "url": "https://hooks.example.com/notify",
  "created_at": "2026-04-29T10:00:00Z",
  "updated_at": "2026-04-29T10:00:00Z"
}

Documentation Index

Fetch the complete documentation index at: https://docs.unstructured.io/llms.txt

Use this file to discover all available pages before exploring further.

The secret field is write-only and is not returned by the API after creation. To change it later, use the update channel endpoint instead.

Body

channel_type
string
required
Channel type: webhook or email.
event_types
array
required
Event types to subscribe to.
ValueDescription
job.scheduledJob queued to run
job.in_progressJob has started
job.completedJob finished processing
job.stoppedJob has stopped
job.failedJob failed to initialize without processing any files
description
string
Channel description. Maximum 255 characters.
enabled
boolean
Whether the channel is active. Default: true.
url
string
Webhook endpoint URL. Must use HTTPS. Required when channel_type is webhook.
secret
string
Signing secret for verifying incoming webhook requests. Must be between24 and 75 bytes (24 to 75 ASCII characters). Applies when channel_type is webhook.Use this secret to verify incoming webhook requests. If you do not provide a secret, you cannot use secret-based verification for incoming webhook requests.
The secret is write-only and is not returned by the API after creation. To change it later, use the update channel endpoint instead.
email_config
object
Email delivery configuration. Required when channel_type is email.
ValueRequiredDescription
recipient_emailyesEmail address to deliver notifications to.
reply_toEmail address set as the reply-to header in notification emails.
ccAdditional email addresses to copy on notification emails. Array of strings.

Response

id
string
required
Unique identifier for the channel.
channel_type
string
required
Channel type: webhook or email.
event_types
array
required
Subscribed event types.
enabled
boolean
required
Whether the channel is active.
created_at
string
required
ISO 8601 timestamp when the channel was created.
updated_at
string
required
ISO 8601 timestamp when the channel was last updated.
description
string
Channel description.
url
string
Webhook endpoint URL. Present when channel_type is webhook.
email_config
object
Email delivery configuration. Present when channel_type is email.
curl --request POST \
  --url "${UNSTRUCTURED_API_URL}/api/v1/notifications/channels" \
  --header "unstructured-api-key: ${UNSTRUCTURED_API_KEY}" \
  --header "Content-Type: application/json" \
  --data '{
    "channel_type": "webhook",
    "url": "https://hooks.example.com/notify",
    "event_types": ["job.completed", "job.failed"],
    "description": "Job status alerts",
    "enabled": true
  }'
{
  "id": "c1d2e3f4-5a6b-7c8d-9e0f-1a2b3c4d5e6f",
  "channel_type": "webhook",
  "description": "Job status alerts",
  "event_types": ["job.completed", "job.failed"],
  "enabled": true,
  "url": "https://hooks.example.com/notify",
  "created_at": "2026-04-29T10:00:00Z",
  "updated_at": "2026-04-29T10:00:00Z"
}