{
"monitor": {
"id": "61111111-1111-4111-8111-111111111111",
"name": "Target accounts",
"frequency": "weekly",
"status": "active",
"audience": "companies",
"legacy": false,
"filters": {
"job_titles": [
"VP Sales",
"Head of Sales"
],
"excluded_job_titles": [],
"title_match": "strict",
"seniorities": [],
"hire_types": [
"external"
],
"industries": [],
"company_size": null,
"company_location": null,
"person_location": null
},
"results_table_id": "64444444-4444-4444-8444-444444444444",
"results_status": "ready",
"results_error": null,
"baseline_completed_at": "2026-11-02T10:05:00.000Z",
"next_check_at": "2026-11-09T10:05:00.000Z",
"last_successful_check_at": "2026-11-02T10:05:00.000Z",
"run_block_reason": null,
"created_at": "2026-11-02T10:00:00.000Z",
"updated_at": "2026-11-02T10:05:00.000Z",
"webhook_url": "https://hooks.example.com/airscale/new-hires",
"webhook_configured": true,
"company_count": 2,
"unresolved_company_count": 0,
"new_hire_count": 1,
"unread_event_count": 1
},
"signing_secret": "example-signing-secret",
"signing_secret_warning": "Store this secret now. It is not returned again."
}{
"error": "Invalid JSON"
}{
"error": {
"code": "invalid_api_key",
"message": "The API key is not valid"
}
}{
"error": {
"code": "monitor_not_found",
"message": "Monitor not found"
}
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}{
"error": "<string>",
"message": "<string>"
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}{
"error": "Too Many Requests",
"message": "Rate limit exceeded: 120 requests per minute"
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}Update a new hire monitor
Rename a monitor, change its frequency, pause or resume checks, change its webhook, or rotate the signing secret. Rate limit: 120 requests per fixed minute per API key, shared by all new hire monitor endpoints.
{
"monitor": {
"id": "61111111-1111-4111-8111-111111111111",
"name": "Target accounts",
"frequency": "weekly",
"status": "active",
"audience": "companies",
"legacy": false,
"filters": {
"job_titles": [
"VP Sales",
"Head of Sales"
],
"excluded_job_titles": [],
"title_match": "strict",
"seniorities": [],
"hire_types": [
"external"
],
"industries": [],
"company_size": null,
"company_location": null,
"person_location": null
},
"results_table_id": "64444444-4444-4444-8444-444444444444",
"results_status": "ready",
"results_error": null,
"baseline_completed_at": "2026-11-02T10:05:00.000Z",
"next_check_at": "2026-11-09T10:05:00.000Z",
"last_successful_check_at": "2026-11-02T10:05:00.000Z",
"run_block_reason": null,
"created_at": "2026-11-02T10:00:00.000Z",
"updated_at": "2026-11-02T10:05:00.000Z",
"webhook_url": "https://hooks.example.com/airscale/new-hires",
"webhook_configured": true,
"company_count": 2,
"unresolved_company_count": 0,
"new_hire_count": 1,
"unread_event_count": 1
},
"signing_secret": "example-signing-secret",
"signing_secret_warning": "Store this secret now. It is not returned again."
}{
"error": "Invalid JSON"
}{
"error": {
"code": "invalid_api_key",
"message": "The API key is not valid"
}
}{
"error": {
"code": "monitor_not_found",
"message": "Monitor not found"
}
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}{
"error": "<string>",
"message": "<string>"
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}{
"error": "Too Many Requests",
"message": "Rate limit exceeded: 120 requests per minute"
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}PATCH. The body accepts name, frequency (daily, weekly, every_30_days, every_90_days), action (pause or resume), webhook_url, and rotate_signing_secret: true, and they can be combined in one request, for example {"name": "Target accounts (Q4)", "action": "pause"}. Any other field returns 422 invalid_monitor_update.
job_titles, seniorities, hire_types, and the market filters are create-only. Create a new monitor to change them. Company lists change through Add companies and Remove a company.Pause and resume
Pausing stops checks and clearsnext_check_at; webhooks queued for a paused monitor are cancelled, so redeliver them after resuming. Resuming schedules a check. Resuming a monitor that was paused because its filters matched too many people (run_block_reason: "audience_needs_review") retries its first check. While new hire monitoring is closed, resuming returns 503 monitoring_not_enabled.
Renaming renames the results table while it still has its generated <name> — New hires title. Legacy monitors (legacy: true) cannot switch to daily checks.
Change the webhook or recover a lost signing secret
webhook_url accepts a public HTTPS URL without embedded credentials, or null. Invalid URLs return 422 invalid_monitor_update.
- Setting or changing the URL generates a fresh signing secret.
{"rotate_signing_secret": true}alone rotates the secret of the current webhook. Rotating without a webhook returns422 webhook_not_configured; combining rotation withwebhook_url: nullreturns422 invalid_monitor_update.{"webhook_url": null}disables the webhook and clears its stored secret.- Setting the same URL without rotation keeps the existing secret and returns no secret.
signing_secret and signing_secret_warning. Store the secret immediately; list and get never return it.
Changing the URL, disabling, or rotating cancels queued deliveries made with the previous configuration (error_code: "webhook_configuration_changed"). When a send is in flight, the request returns 409 webhook_delivery_in_progress and nothing changes; retry after it settles. Webhook changes keep the monitor, its baseline, schedule, and results table, and spend no credits.
Next step
Use List new hire events to redeliver events after a webhook change.Authorizations
Use an Airscale workspace API key. Never expose the key in client-side code.
Path Parameters
Body
Send at least one of name, frequency, action, webhook_url, or rotate_signing_secret. Any other field is rejected.
1 - 120daily, weekly, every_30_days, every_90_days pause, resume Set or change the webhook (a public HTTPS URL without embedded credentials), or send null to disable it and clear its signing secret. Setting a new URL returns a fresh signing_secret.
2048Generate a new signing secret for the enabled webhook. Cannot be combined with webhook_url: null.
Response
The updated monitor. signing_secret and signing_secret_warning appear only when a new secret was generated.