List job-change monitors
curl --request GET \
--url https://api.airscale.io/v1/job-change-monitors \
--header 'Authorization: Bearer <token>'const url = 'https://api.airscale.io/v1/job-change-monitors';
const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error(err));import requests
url = "https://api.airscale.io/v1/job-change-monitors"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"monitors": [
{
"id": "11111111-1111-4111-8111-111111111111",
"name": "CRM champions",
"frequency": "every_30_days",
"status": "active",
"results_table_id": "44444444-4444-4444-8444-444444444444",
"results_status": "ready",
"results_error": null,
"next_check_at": "2026-11-02T10:00:00.000Z",
"last_successful_check_at": null,
"created_at": "2026-11-02T10:00:00.000Z",
"updated_at": "2026-11-02T10:00:00.000Z",
"webhook_url": "https://hooks.example.com/airscale/job-changes",
"webhook_configured": true,
"run_block_reason": null,
"run_block_detail": null,
"active_profile_count": 1,
"unread_event_count": 0
}
]
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}List job-change monitors
List the monitors in a workspace with their schedule, results table, and active-profile and unread-event counts. Rate limit: 120 requests per fixed minute per API key, shared by all job-change monitor endpoints.
GET
/
v1
/
job-change-monitors
List job-change monitors
curl --request GET \
--url https://api.airscale.io/v1/job-change-monitors \
--header 'Authorization: Bearer <token>'const url = 'https://api.airscale.io/v1/job-change-monitors';
const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error(err));import requests
url = "https://api.airscale.io/v1/job-change-monitors"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"monitors": [
{
"id": "11111111-1111-4111-8111-111111111111",
"name": "CRM champions",
"frequency": "every_30_days",
"status": "active",
"results_table_id": "44444444-4444-4444-8444-444444444444",
"results_status": "ready",
"results_error": null,
"next_check_at": "2026-11-02T10:00:00.000Z",
"last_successful_check_at": null,
"created_at": "2026-11-02T10:00:00.000Z",
"updated_at": "2026-11-02T10:00:00.000Z",
"webhook_url": "https://hooks.example.com/airscale/job-changes",
"webhook_configured": true,
"run_block_reason": null,
"run_block_detail": null,
"active_profile_count": 1,
"unread_event_count": 0
}
]
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}Job-change monitoring requires a V2 workspace API key. V1 (Bubble) API keys are not supported by these endpoints. Monitors and monitoring credits belong to the V2 workspace associated with the key.
This operation is read-only and does not change schedules or consume monitoring credits. It never returns a webhook signing secret.
id returned here with the detail, update, profile, and event operations. A paused monitor remains in the list so you can resume it later. If a create request’s response was lost, list monitors before deciding whether to create another.