Get a post engagement monitor
curl --request GET \
--url https://api.airscale.io/v1/post-engagement-monitors/{monitor_id} \
--header 'Authorization: Bearer <token>'const url = 'https://api.airscale.io/v1/post-engagement-monitors/{monitor_id}';
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/post-engagement-monitors/{monitor_id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"monitor": {
"id": "71111111-1111-4111-8111-111111111111",
"name": "Competitor audiences",
"status": "active",
"frequency": "daily",
"engagement_types": [
"reactions",
"comments"
],
"include_existing_engagers": false,
"filters": {
"titles": [
"VP",
"Head of"
],
"locations": [
"France"
],
"excluded_company_urls": [
"https://www.linkedin.com/company/example-company"
]
},
"results_table_id": "74444444-4444-4444-8444-444444444444",
"results_status": "ready",
"results_error": null,
"next_check_at": "2026-11-03T09:00:00.000Z",
"last_checked_at": "2026-11-02T09:00:00.000Z",
"last_error": null,
"webhook_url": "https://hooks.example.com/airscale/engagers",
"webhook_configured": true,
"source_count": 2,
"engager_count": 37,
"unread_engager_count": 5,
"created_at": "2026-11-02T08:58:00.000Z",
"updated_at": "2026-11-02T09:00:00.000Z"
},
"sources": [
{
"id": "72222222-2222-4222-8222-222222222222",
"linkedin_url": "https://www.linkedin.com/company/example-company",
"kind": "company",
"status": "monitoring",
"last_checked_at": "2026-11-02T09:00:00.000Z",
"last_error": null
},
{
"id": "72222223-2222-4222-8222-222222222223",
"linkedin_url": "https://www.linkedin.com/in/example-person",
"kind": "profile",
"status": "monitoring",
"last_checked_at": "2026-11-02T09:00:00.000Z",
"last_error": null
}
]
}{
"error": {
"code": "invalid_api_key",
"message": "The API key is not valid"
}
}{
"error": {
"code": "monitor_not_found",
"message": "Monitor not found"
}
}{
"error": "Too Many Requests",
"message": "Rate limit exceeded: 120 requests per minute"
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}Get a post engagement monitor
Retrieve one monitor and its active sources. Rate limit: 120 requests per fixed minute per API key, shared by all post engagement monitor endpoints.
GET
/
v1
/
post-engagement-monitors
/
{monitor_id}
Get a post engagement monitor
curl --request GET \
--url https://api.airscale.io/v1/post-engagement-monitors/{monitor_id} \
--header 'Authorization: Bearer <token>'const url = 'https://api.airscale.io/v1/post-engagement-monitors/{monitor_id}';
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/post-engagement-monitors/{monitor_id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"monitor": {
"id": "71111111-1111-4111-8111-111111111111",
"name": "Competitor audiences",
"status": "active",
"frequency": "daily",
"engagement_types": [
"reactions",
"comments"
],
"include_existing_engagers": false,
"filters": {
"titles": [
"VP",
"Head of"
],
"locations": [
"France"
],
"excluded_company_urls": [
"https://www.linkedin.com/company/example-company"
]
},
"results_table_id": "74444444-4444-4444-8444-444444444444",
"results_status": "ready",
"results_error": null,
"next_check_at": "2026-11-03T09:00:00.000Z",
"last_checked_at": "2026-11-02T09:00:00.000Z",
"last_error": null,
"webhook_url": "https://hooks.example.com/airscale/engagers",
"webhook_configured": true,
"source_count": 2,
"engager_count": 37,
"unread_engager_count": 5,
"created_at": "2026-11-02T08:58:00.000Z",
"updated_at": "2026-11-02T09:00:00.000Z"
},
"sources": [
{
"id": "72222222-2222-4222-8222-222222222222",
"linkedin_url": "https://www.linkedin.com/company/example-company",
"kind": "company",
"status": "monitoring",
"last_checked_at": "2026-11-02T09:00:00.000Z",
"last_error": null
},
{
"id": "72222223-2222-4222-8222-222222222223",
"linkedin_url": "https://www.linkedin.com/in/example-person",
"kind": "profile",
"status": "monitoring",
"last_checked_at": "2026-11-02T09:00:00.000Z",
"last_error": null
}
]
}{
"error": {
"code": "invalid_api_key",
"message": "The API key is not valid"
}
}{
"error": {
"code": "monitor_not_found",
"message": "Monitor not found"
}
}{
"error": "Too Many Requests",
"message": "Rate limit exceeded: 120 requests per minute"
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}Post engagement monitoring requires a V2 workspace API key. Legacy V1 API keys are not supported by these endpoints. Monitors and their credits belong to the V2 workspace associated with the key.
monitor_id with its active sources, sorted by URL.
Each source has id, linkedin_url, kind (company or profile), status (pending until its first check, then monitoring), last_checked_at, and last_error. Monitors created in the Airscale app can also contain single-post sources with kind: "post"; the API itself only adds company and profile sources.
The monitor reports next_check_at and last_checked_at as ISO 8601 timestamps, or null, and last_error as a short code when the last check could not complete. results_status is ready, pending (engagers waiting for delivery), or blocked with results_error such as insufficient_credits, results_table_deleted, table_row_limit_reached, or results_columns_missing.
Next step
Use List engagers to read the people delivered so far.Authorizations
Use an Airscale workspace API key. Never expose the key in client-side code.