AISARAISAR
All webhooks

System

Export failed

export.failed

Fires when a data export job fails. The export row is kept with `status: failed` and a truncated error message (max 1000 chars); there is no file to download.

HTTP request

AISAR sends a signed POST request to your webhook_url:

http
POST {webhook_url}
Content-Type: application/json
X-AISAR-Signature: sha256=...

{
  "event": "export.failed",
  "event_id": "evt_01JXXXXXXXXXXXXXXXXXXXXX",
  "timestamp": "2026-03-26T12:00:00.000000Z",
  "company_id": 1,
  "data": {
    "id": 421,
    "uuid": "01JXXXXXXXXXXXXXXXXXXXXX",
    "type": "contacts",
    "name": "Контакты — март 2026",
    "format": "xlsx",
    "status": "failed",
    "filters": { "tag_ids": [12, 17] },
    "row_count": null,
    "file_size": null,
    "error_message": "Query timeout after 600s",
    "download_url": null,
    "expires_at": null,
    "created_at": "2026-03-26T11:58:41.000000Z",
    "updated_at": "2026-03-26T12:08:41.000000Z"
  }
}

The X-AISAR-Signature header carries an HMAC-SHA256 signature of the request body — use it to verify the request came from AISAR.

Example payload

json
{
  "event": "export.failed",
  "event_id": "evt_01JXXXXXXXXXXXXXXXXXXXXX",
  "timestamp": "2026-03-26T12:00:00.000000Z",
  "company_id": 1,
  "data": {
    "id": 421,
    "uuid": "01JXXXXXXXXXXXXXXXXXXXXX",
    "type": "contacts",
    "name": "Контакты — март 2026",
    "format": "xlsx",
    "status": "failed",
    "filters": { "tag_ids": [12, 17] },
    "row_count": null,
    "file_size": null,
    "error_message": "Query timeout after 600s",
    "download_url": null,
    "expires_at": null,
    "created_at": "2026-03-26T11:58:41.000000Z",
    "updated_at": "2026-03-26T12:08:41.000000Z"
  }
}

Payload fields

FieldTypeDescription
idintegerExport ID
statusstringAlways `failed`
error_messagestringTruncated error message (max 1000 chars)
download_urlnullAlways `null` for failed exports