Create Webhook
Create a new webhook that listens for events from a saved search and sends real-time HTTP POST notifications to your specified URL. Configure event types, filters, and delivery settings for automated data pipelines.
BearerAuthorizationBearer <token>application/json- active_event_typesarray<WebhookEventType>nullable
Event types this webhook subscribes to. If None, defaults to the search type's primary event (job_new for jobs, company_new for companies).
- job_new
- company_new
- job_closed
- descriptionstringnullable
Description of the webhook
- listening_start_timestringnullabledate-time
Date when the webhook started listening for events. If listening_start_time is None, the webhook will listen to all events matching the search query regardless of when they occurred.
- max_events_per_dayintegernullable1 <= value
Most new records the webhook takes on per UTC day, or null for no cap. A job webhook counts jobs: each can send its job.new and, when it closes, its job.closed, so a job costs at most two credits. Records over it are dropped, never sent, charged or queued for the next day. Minimum 1: to send nothing, disable the webhook.
- search_idintegerrequired
ID of the search that the webhook is listening to.
- secretstringnullablelength: 16 <= length
Secret used to sign webhook payloads with HMAC-SHA256. If set, deliveries include an X-TheirStack-Signature-256 header.
- trigger_once_per_companybooleandefault: false
Only for webhook type ='job.new'. If true, Company A with 5 jobs → 1 event triggered. If false, Company A with 5 jobs → 5 events triggered
- urlstringlength: 1 <= length <= 2083urirequired
URL of the webhook
Successful Response
application/json- active_event_typesarray<WebhookEventType>required
- job_new
- company_new
- job_closed
- created_atstringdate-timerequired
- descriptionstringnullable
Description of the webhook
- event_typestringdeprecatedrequired
Deprecated: use active_event_types. Primary event type derived from webhook_type.
- job_new
- company_new
- job_closed
- has_secretbooleanrequired
- idintegerrequired
- is_activebooleanrequired
- is_archivedbooleanrequired
- listening_start_timestringnullabledate-time
Date when the webhook started listening for events. If listening_start_time is None, the webhook will listen to all events matching the search query regardless of when they occurred.
- max_events_per_dayintegernullable1 <= value
Most new records the webhook takes on per UTC day, or null for no cap. A job webhook counts jobs: each can send its job.new and, when it closes, its job.closed, so a job costs at most two credits. Records over it are dropped, never sent, charged or queued for the next day. Minimum 1: to send nothing, disable the webhook.
- scanning_frequencystringdefault: "10m"
Scanning frequency for the webhook
- search_idintegerrequired
ID of the search that the webhook is listening to.
- search_namestringrequired
- team_idintegerrequired
- trigger_once_per_companybooleandefault: false
Only for webhook type ='job.new'. If true, Company A with 5 jobs → 1 event triggered. If false, Company A with 5 jobs → 5 events triggered
- updated_atstringdate-timerequired
- urlstringlength: 1 <= length <= 2083urirequired
URL of the webhook
- user_idintegerrequired
- webhook_typestringrequired
- jobs
- companies
curl -X POST 'https://api.theirstack.com/v0/webhooks' \ -H 'Content-Type: application/json' \ -d '{ "search_id": 123, "url": "https://example.com/webhook"}'{ "active_event_types": [ "job_new" ], "created_at": "2019-08-24T14:15:22Z", "description": "Webhook for new jobs", "event_type": "job_new", "has_secret": true, "id": 0, "is_active": true, "is_archived": true, "listening_start_time": "2024-01-01T00:00:00Z", "max_events_per_day": 500, "scanning_frequency": "10m", "search_id": 123, "search_name": "string", "team_id": 0, "trigger_once_per_company": true, "updated_at": "2019-08-24T14:15:22Z", "url": "https://example.com/webhook", "user_id": 0, "webhook_type": "jobs"}How is this guide?
Last updated on
