Redeliver an engager webhook
curl --request POST \
--url https://api.airscale.io/v1/post-engagement-monitors/{monitor_id}/engagers/{engager_id}/webhook/redeliver \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{}'const url = 'https://api.airscale.io/v1/post-engagement-monitors/{monitor_id}/engagers/{engager_id}/webhook/redeliver';
const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({})
};
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}/engagers/{engager_id}/webhook/redeliver"
payload = {}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"engager_id": "73333333-3333-4333-8333-333333333333",
"webhook": {
"status": "pending",
"attempt_count": 0,
"last_attempt_at": null,
"sent_at": null,
"error_code": null
}
}{
"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": "Too Many Requests",
"message": "Rate limit exceeded: 120 requests per minute"
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}Redeliver a post engager webhook
Send one engager’s webhook again after a failed or unconfirmed delivery. Rate limit: 120 requests per fixed minute per API key, shared by all post engagement monitor endpoints.
POST
/
v1
/
post-engagement-monitors
/
{monitor_id}
/
engagers
/
{engager_id}
/
webhook
/
redeliver
Redeliver an engager webhook
curl --request POST \
--url https://api.airscale.io/v1/post-engagement-monitors/{monitor_id}/engagers/{engager_id}/webhook/redeliver \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{}'const url = 'https://api.airscale.io/v1/post-engagement-monitors/{monitor_id}/engagers/{engager_id}/webhook/redeliver';
const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({})
};
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}/engagers/{engager_id}/webhook/redeliver"
payload = {}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"engager_id": "73333333-3333-4333-8333-333333333333",
"webhook": {
"status": "pending",
"attempt_count": 0,
"last_attempt_at": null,
"sent_at": null,
"error_code": null
}
}{
"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": "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.
{}. The 202 response returns engager_id and the new webhook receipt, normally pending with attempt_count: 0. If a send for the engager is already in flight, its sending receipt is returned unchanged.
The engager keeps the same event ID and
Idempotency-Key: post-engagement-engager:<engager_id> header. Your receiver may already have processed an uncertain delivery, so handle the engager idempotently.422 webhook_not_configured. Track the outcome through the webhook receipt in List engagers.
Next step
Use Update a post engagement monitor to change the webhook URL or rotate its signing secret before redelivering.Authorizations
Use an Airscale workspace API key. Never expose the key in client-side code.
Body
application/json
Optional. Send no body or an empty JSON object ({}).
The body is of type object.