Smarter AI Service delivers notifications over Webhook for 3rd party system integration.
How to use Smarter AI Webhooks
- Smarter AI Cloud enables clients to register HTTP endpoints to receive data via POST requests to the registered URL.
- The Smarter AI Webhook system allows a client to register one or multiple HTTP endpoints for different topics.
- Use the Topic list API to get the list of available topics.
- Register HTTP endpoint using Create Webhook API with required topics.
- A client can update subscribed topics using the Topic Subscribe and Topic Unsubscribe APIs.
- A client can remove a Webhook endpoint with Delete Webhook API.
Notification Details
Webhooks deliver various types of notifications.
- Event Notification
- Event Media Upload Completion Notification
- Event Dismiss
- Event Restore
- Historical Event Recording Request Status Change Notification
- Upcoming Media List Notification
- Media File Upload Notification
- Device Offline Notification for Recording Retrieval
- Device Parking Mode Notification for Recording Retrieval
- Device Onboarded Notification
- Parking Mode Status Changed Notification
- Device Presence Status Changed Notification
- Device Firmware Updated Notification
- Trip Start Notification
- Trip End Notification
- External Device Plugged Notification (Pairing)
- External Device Unplugged Notification (Unpairing)
- NFC Card Scanned Notification
- Notification for Device Health Tag Assign
- Notification for Device Health Tag Unassign
Topics and sample notification
The notification will be dispatched to the Webhook URL specified by the consumer.
Smarter AI Cloud will send multiple topics to the same Webhook URL.
uuid, timestamp, topic, and data are common for all new Webhook POST requests.
uuid- Unique ID of this particular notification.timestamp- Timestamp of Webhook notification dispatched.topic- The topic of the notification. This topic varies for each type of notification.data- Contains the data associated with a push notification
Event Notifications
Event Notification -topic.event.triggered
topic.event.triggeredSmarter AI will trigger this Webhook Notification once an Event is registered in the Cloud. At the moment of reporting, the media (Video, Audio, AI Inferencing Data, Sensor, and CAN Bus data) won't be available on the cloud and will be patched gradually. To retrieve the media, subscribe to #event-media-upload-completion-notification.
Sample notification
{
"uuid": "8de18703-58db-46c9-a270-87c97f833670",
"timestamp": 1760616691169,
"topic": "topic.event.triggered",
"data": {
"id": "1827798911529479",
"tenantId": "10973371-c576-43ed-ae06-aa62f8844e6d",
"endpointId": 134580,
"deviceId": "F692532UHW1YR",
"timestamp": 1760616677285,
"endTimestamp": 1760616682383,
"recordingStartTimestamp": 1760616672285,
"recordingEndTimestamp": 1760616684383,
"triggerId": "b9c44796-6be5-4daf-bc89-116ba7cdba50",
"triggerName": "Tailgating",
"triggerCategoryName": "Tailgating",
"deviceLabel": "Smarter AI Dashcam F692532UHW1YR",
"snapshots": [],
"createdTime": 1760616691160,
"eventMetadata": "{\"snapshotRequested\":true,\"mediaRequested\":true,\"mediaRecordingState\":\"OnSDCard\",\"recordingSources\":\"vid_1,vid_1_meta,sensor\",\"voiceCoachingType\":\"NONE\"}",
"uploadComplete": false,
"triggerCategoryId": 21
}
}Note- userInitiatedEventRequestId filed is optionally populated with the request ID when the Event is generated by Historical Event API.
Event Media Upload Completion Notification - topic.event.data.uploaded
topic.event.data.uploadedThe event media is uploaded asynchronously and combined with event information. Once all media is uploaded, this webhook notification is sent.
Sample notification
{
"uuid": "e486e0e4-248e-4de4-b4a8-d401b00d44f7",
"timestamp": 1760612261685,
"topic": "topic.event.data.uploaded",
"data": {
"id": "1827754447970475",
"tenantId": "1",
"endpointId": 124839,
"deviceId": "L1924120011",
"timestamp": 1760612244089,
"endTimestamp": 1760612245880,
"recordingStartTimestamp": 1760612243089,
"recordingEndTimestamp": 1760612246880,
"triggerId": "f0cd1fcf-aa60-424a-a227-b4e2c5b1d817",
"triggerName": "Dashcam.Road.Inferencing.Started",
"triggerCategoryName": "Dashcam.Road.Inferencing.Started",
"deviceLabel": "Smarter AI Dashcam Pro L1924120011",
"snapshots": [
{
"source": "sensor",
"downloadUrl": "https://storage.googleapis.com/sai-data-sg/2025/289/124839/5/39424646-u7q-0.json?GoogleAccessId\[email protected]\u0026Expires\u003d1762858661\u0026Signature\u003dNpKJQo3bGzbMiErmNPCCj5VE1H23ZAxy3JO61GRPhsXRimsLfelU0sgQtmIfRKhdGyqGNdz%2FqcsSrwIeu6VedJ%2FtKH4s%2BWBzsCc33p6YwEEpp%2F5k4VIxnhVwXZL7Eb0PHxfehjw2VwvcyShgH%2BAGpPr0LUxAKPX%2FCB8RTHSAwiToT8TXv2zlZJWRdfbo2S3pVjljVmFjtHG8RAxeWmDVjHKvcpsUp33XkjrE2Fdo53RE%2BG5vb%2FSqV7gmfdeBg%2FLBKUFbnW%2BlzUahlDeSf%2FVz2W%2B%2F%2Fu7wAB2CNnhSUKmh10bbB7WJcIkK1BG%2BOKHbHU53PrP7y3fUkufOwmh1OOhiGg%3D%3D",
"downloadUrlExpirationTime": 1758563693859
},
{
"source": "vid_1",
"downloadUrl": "https://storage.googleapis.com/sai-data-sg/2025/289/124839/5/39424561-Xoq-0.jpeg?GoogleAccessId\[email protected]\u0026Expires\u003d1762858661\u0026Signature\u003dOviQIYmV1IESUYl5sCy9S6aFc969885nQp9LD4KpfP%2B85PNuM7U2LX8U%2F99gyk6R6cfom2LjSsiITKz8FOBBX2SsbT1nwKwi%2BXvjZBxUsdDrL2%2FUm8BRFbB1J2aUGXNcZPMHs%2FgaiqXn6bdi0b1YCWxc1XHNuzsRXu9OCb%2Fh4cnW2NlxS%2FNVRf1wDRWIASa%2FHt3NnRuD%2BoNgjQqod36wBvdAr7ADStq4c5mCG%2B1Rkq2faaCMIcrL%2BtMld5njwmsWEA3pony5oiMV6gnFXZ5C50%2FNBwY5pb8tDHQk%2BPs2oNIf8Kb44XRb5gRy%2F2Dr%2FAIwtDOX73PcU0gp6zDdB12OCA%3D%3D",
"downloadUrlExpirationTime": 1758563693885
}
],
"createdTime": 1760612244806,
"recordings": [],
"eventMetadata": "{\"mediaRequested\":false,\"recordingSources\":\"vid_1,vid_2,vid_3,aud_1,vid_1_meta,vid_2_meta,sensor,vid_4,vid_5,vid_6\",\"snapshotRequested\":true,\"voiceCoachingType\":\"UNKNOWN\",\"mediaRecordingState\":\"OnSDCard\"}",
"uploadComplete": true,
"triggerCategoryId": 116
}
}Event Dismiss Notification - topic.event.dismissed
topic.event.dismissedThis webhook notification is sent when an Event is dismissed as a false Event.
{
"uuid": "600fd245-126f-433e-80fe-af50a251bdb9",
"timestamp": 1751373381550,
"topic": "topic.event.dismissed",
"data": {
"deviceId": "CB20440004",
"endpointId": "5290",
"eventId": "1735335114880979"
}
}Event Dismiss Notification - topic.event.restored
topic.event.restoredThis webhook notification is sent when a dismissed Event is restored.
{
"uuid": "600fd245-126f-433e-80fe-af50a251bdb9",
"timestamp": 1751373381550,
"topic": "topic.event.restored",
"data": {
"deviceId": "CB20440004",
"endpointId": "5290",
"eventId": "1735335114880979"
}
}Historical Event Request Notifications
Historical Event Recording Request Status Change Notification - topic.recording.request.status
topic.recording.request.statusSmarter AI Cloud will alert clients to any changes in a Historical Event Recording Request status.
The possible Statuses are: SENT, ONGOING, COMPLETED, FAIL
For the FAIL status, the reason is stored in the failureReason field within the response body.
Sample notification
{
"uuid": "2dcb66ba-ff70-93e6-8f66-ac9ea28df949",
"timestamp": 1694005803439,
"topic": "topic.recording.request.status",
"data": {
"requestId": "11a0512e-61ad-4937-b270-e02ca5fae9be",
"endpointId": 123251,
"status": "COMPLETED",
"summary": "",
"failureReason": "",
"startTime": 1699619462333,
"length": 5,
"content": "ALL"
}
}Recording Retrieval Request Notifications
Upcoming Media List Notification - topic.recording.upcoming
topic.recording.upcomingWhen a recording is requested from the Device, a list of the media to be uploaded for that specific request is sent over this webhook topic.
Sample notification for a successful request:
{
"uuid": "908a30d7-0cf0-456c-9336-e4bb7609d8c8",
"timestamp": 1760617638463,
"topic": "topic.recording.upcoming",
"data": {
"requestId": "124839.1760617637172-0000000000000000270-eddb2655-c101-478b-befb-9881ef4e3890",
"status": "AVAILABLE",
"timeout": 30000,
"endpointId": 124839,
"upcomingMediaList": [
{
"source": "vid_3",
"type": "VIDEO",
"startTime": 1760617557190,
"endTime": 1760617567422,
"available": true
},
{
"source": "aud_1",
"type": "AUDIO",
"startTime": 1760617561241,
"endTime": 1760617571163,
"available": true
},
{
"source": "vid_2",
"type": "VIDEO",
"startTime": 1760617562655,
"endTime": 1760617573188,
"available": true
},
{
"source": "vid_3",
"type": "VIDEO",
"startTime": 1760617578327,
"endTime": 1760617587872,
"available": true
},
{
"source": "aud_1",
"type": "AUDIO",
"startTime": 1760617581324,
"endTime": 1760617591322,
"available": true
},
{
"source": "vid_2",
"type": "VIDEO",
"startTime": 1760617584488,
"endTime": 1760617594322,
"available": true
},
{
"source": "vid_1",
"type": "VIDEO",
"startTime": 1760617586367,
"endTime": 1760617596701,
"available": true
},
{
"source": "vid_3",
"type": "VIDEO",
"startTime": 1760617588641,
"endTime": 1760617598671,
"available": true
}
]
}
}The Device can report an empty media file list in a few cases:
AVAILABLE- All requested files have already been uploaded to the cloud.NO_DATA- No files are available on the device.BUSY- The camera is busy with other requests. The client can retry after the specifiedtimeoutmilliseconds.MEDIA_NOT_READY- Files are not completely captured yet. The client should retry later
Sample notification for a failed request:
{
"uuid": "9049f8fe-7171-d4fe-9db4-a9d8577b5aae",
"timestamp": 1654005766628,
"topic": "topic.recording.upcoming",
"data": {
"requestId": "c19b79ef-f1da-4c68-b1cd-bd5f0e52ed05",
"status": "BUSY",
"timeout": 300000,
"upcomingMediaList": []
}
}Media File Upload Notification - topic.recording.response
topic.recording.responseWhen the Device completes uploading media from the local storage, our system will deliver the details of the newly uploaded media to the caller via Webhook.
Sample notification
{
"uuid": "25fb4c7c-6e7e-8854-0f6c-d2cfce0a82e9",
"timestamp": 1654005797450,
"topic": "topic.recording.response",
"data": {
"requestId": "c19b79ef-f1da-4c68-b1cd-bd5f0e52ed05",
"source": "vid_2",
"type": "VIDEO",
"available": true,
"startTime": 1654005161855,
"endTime": 1654005221785,
"downloadUrl": "https://accind0ds1.blob.core.windows.net/eventrecording0/dir/e62b224b-2b34-4e9a-b673-c8eeb38459281654005783408.mp4?sig=xJZv830ZKR%2FGAgjXWUHKkK3pqzj6%2FRJeIbbPen%2FPZvg%3D&se=2022-05-31T15%3A03%3A17Z&sv=2015-12-11&sp=rcw&sr=b",
"downloadUrlExpiry": 1654009396450
}
}Device Offline Notification for Recording Retrieval - topic.recording.camera.offline
topic.recording.camera.offlineSmarter AI Cloud will notify you when you request a Historical Event Recording for an offline Device.
Sample notification
{
"uuid": "25fb4c7c-6e7e-8854-0f6c-d2cfce0a82e9",
"timestamp": 1654005797450,
"topic": "topic.recording.camera.offline",
"data": {
"requestId": "c19b79ef-f1da-4c68-b1cd-bd5f0e52ed05",
"startTime": 1654005161855,
"endTime": 1654005221785,
"endpointId": 1234,
"message": "Recordings will be retrieved from the camera once the camera comes online."
}
}Device Parking Mode Notification for Recording Retrieval - topic.recording.camera.inparking
topic.recording.camera.inparkingSmarter AI Cloud will notify you when you request a Historical Event Recording for a Device in parking mode. Our Cloud service sends a wake-up signal to the Device to retrieve the recordings.
Sample notification
{
"uuid": "25fb4c7c-6e7e-8854-0f6c-d2cfce0a82e9",
"timestamp": 1654005797450,
"topic": "topic.recording.camera.inparking",
"data": {
"requestId": "c19b79ef-f1da-4c68-b1cd-bd5f0e52ed05",
"startTime": 1654005161855,
"endTime": 1654005221785,
"endpointId": 1234,
"message": "Recordings will be retrieved from the camera once the camera wakes up from parking."
}
}Device State-Related Notifications
Notification for Device Onboard - topic.device.onboarded
topic.device.onboardedSmarter AI Cloud sends this notification when a new Device is onboarded.
{
"uuid": "2dcb66ba-ff70-93e6-8f66-ac9ea28df949",
"timestamp": 1694005803439,
"topic": "topic.device.onboarded",
"data": {
"tenantId": "X",
"deviceSerialNumber": "XYZ",
"endpointId": 0,
"timestamp": 1694005803432
}
}Notification for Parking Mode Status - topic.device.parking
topic.device.parkingSmarter AI Cloud sends this notification when the Device changes the parking mode.
Sample notification
{
"uuid": "75fe9a2f-4096-5524-6d97-52c913399484",
"timestamp": 1714648647153,
"topic": "topic.device.parking",
"data": {
"endpointId": 123043,
"deviceId": "CA20440068",
"tenantId": "98ed2e00-2390-4786-a49d-6e9d2d72d3e2",
"timestamp": 1714639417112,
"status": "NotInParkingMode"
}
}The possible status are:
InParkingModeNotInParkingModeGoingToParkingMode
Notification for Device Presence Status - topic.device.presence
topic.device.presenceSmarter AI Cloud sends this notification when the Device changes its presence status.
Sample notification
{
"uuid": "2991ee8d-ec42-ebce-317d-535c13834870",
"timestamp": 1714655535566,
"topic": "topic.device.presence",
"data": {
"endpointId": 122723,
"deviceSerialNumber": "F402245XYRXTK",
"tenantId": "1",
"deviceOnline": true,
"lastOnlineTime": 1714648124000
}
}The possible deviceOnline values are
true- Indicates Device Onlinefalse- Indicates Device Offline
Device Firmware Updated Notification - topic.device.firmware.updated
topic.device.firmware.updatedSmarter AI Cloud sends this Webhook notification when a Device completes a Firmware update
Sample notification
{
"uuid": "2991ee8d-ec42-ebce-317d-535c13834870",
"timestamp": 1722511386680,
"topic": "topic.device.firmware.updated",
"data": {
"deviceSerialNumber":"F402245XYRXTK",
"timestamp":1722511386680,
"firmwareType":"APPLICATION_PACKAGE",
"previousVersion":"2022.24.07",
"updatedVersion":"2024.20.17-local"
}
}The Webhook notification can have the following firmwareTypes
APPLICATION_PACKAGE- The Smarter AI Camera FirmwareCAN_BUS_FW- CAN Bus Firmware on the MCU connected with CANLTE_MODEM_FW- LTE modem FirmwareOEM_IMAGE- Customized OS patch for Smarter AI CameraSMART_CABLE_FW- Smarter Cable CAN FirmwareSYSTEM_IMAGE- Operating SystemSUPPORTING_APPLICATION- 3rd party application, running on the Camera
Trip Notifications
Trip Start Notification - topic.trip.started
topic.trip.startedSmarter AI Cloud sends this notification when a Trip is started.
Sample notification
{
"uuid": "4bbfe076-bc6c-46de-b78d-04b33c7b16c0",
"timestamp": 1760618373104,
"topic": "topic.trip.started",
"data": {
"tenantId": "XXXXX-YYYY-2A222-SSAA-OOOWIWWWW",
"tripId": "",
"endpointId": 369852,
"deviceId": "JKPOIEUI9900",
"geo": {
"lon": -9.85280897,
"lat": 32.3368478
},
"timestamp": 1760618371136,
"isShortTrip": false
}
}Trip End Notification - topic.trip.ended
topic.trip.endedSmarter AI Cloud sends this notification when a Trip is completed.
Sample notification
{
"uuid": "bc45f09f-471d-44f9-9a62-56d39f4385e5",
"timestamp": 1760618225963,
"topic": "topic.trip.ended",
"data": {
"tenantId": "XXXXX-YYYY-2A222-SSAA-OOOWIWWWW",
"tripId": "57480cf4-5d73-4690-852f-6788d4509e87",
"endpointId": 777608,
"deviceId": "9988AABB",
"geo": {
"lon": -19.16127122,
"lat": 35.17128624
},
"timestamp": 1760618223357,
"isShortTrip": false
}
}External Device-Related Notifications
Notification for Plugged Device (Pair) - topic.device.plugged.paired
topic.device.plugged.pairedSmarter AI Cloud sends this webhook notification when an external device is paired.
Sample notification
{
"uuid": "c855b43b-74b1-8b4f-17a0-31b75030ba40",
"timestamp": 1693379323943,
"topic": "topic.device.plugged.paired",
"data": {
"tenantId": "X",
"endpointId": 0,
"pluggedDevice": "XYZ",
"timestamp": 1693379321884
}
}Notification for Unplugged Device (Unpair) - topic.device.plugged.unpaired
topic.device.plugged.unpairedSmarter AI Cloud sends this webhook notification when an external device is unpaired.
Sample notification
{
"uuid": "c855b43b-74b1-8b4f-17a0-31b75030ba40",
"timestamp": 1693379323943,
"topic": "topic.device.plugged.unpaired",
"data": {
"tenantId": "X",
"endpointId": 0,
"unpluggedDevice": "XYZ",
"timestamp": 1693379321884
}
}NFC Card Scanned Notification - topic.device.nfc
topic.device.nfcSmarter AI Cloud sends this webhook notification when a NFC card scanned on a device.
Sample notification
{
"uuid": "8e697aa9-679a-4c26-8300-6f077fdca0bf",
"timestamp": 1756811403858,
"topic": "topic.device.nfc",
"data": {
"tenantId": "tenantId",
"tripId": "ec20863d-ead1-4d5a-a387-2a6da64dc641",
"endpointId": 123,
"deviceId": "CA20440068",
"geo": {
"lon": 12,
"lat": 14,
},
"timestamp": 1756113603,
"isShortTrip": false,
"nfcCardId": "D12D619D",
"driverId": 361242186,
}
}Health Tag Notifications
Notification for Device Health Tag Assign - topic.device.health.tag.assign
topic.device.health.tag.assignSmarter AI Cloud sends this webhook notification when a health tag is assigned to a device.
Sample notification
{
"uuid": "d28c90db-5e5f-426b-a0e6-5559ab7dec10",
"timestamp": 1760618655822,
"topic": "topic.device.health.tag.assign",
"data": {
"endpointId": 883817,
"healthTag": "Imager.Cabin.Obstructed",
"comment": "1827818557879390",
"tenantId": "99-EWEW-TENANT-ID",
"timestamp": 1760618655810,
"healthTagId": 12
}
}Notification for Device Health Tag Unassign - topic.device.health.tag.unassign
topic.device.health.tag.unassignSmarter AI Cloud sends this webhook notification when a health tag is removed from a device.
Sample notification
{
"uuid": "99f8b491-7deb-4210-8176-48b293a3b98f",
"timestamp": 1760618880962,
"topic": "topic.device.health.tag.unassign",
"data": {
"endpointId": 959587,
"healthTag": "Imager.Cabin.Obstructed",
"comment": "1827778611409423",
"tenantId": "zzz-tenant-id-yyy",
"timestamp": 1760614661164,
"healthTagId": 12
}
}