Incident Events Webhooks
Required scope: incident_events
When events occur for incidents in your configured ECCs, Prepared sends webhook payloads to your endpoint. All events are sent as HTTP POST requests with a JSON body.
Event Types
Prepared sends the following event types to first responder integrations:
| Event Type | Description |
|---|---|
incident_metadata | An incident was created or updated |
caller_location | The caller's location was updated |
media | Media was attached to the incident |
incident_metadata
Sent when an incident is created or when its metadata changes (e.g., call ended).
Payload Schema
| Field | Type | Required | Description |
|---|---|---|---|
type | string | ✓ | Always "incident_metadata" |
id | uuid | ✓ | Unique identifier for the incident |
caller_phone_number | string | ✓ | Phone number of the caller (E.164 format) |
is_audio_live | boolean | ✓ | Whether the audio call is currently active |
audio_call_ended_at | datetime | When the audio call ended (null if still active) | |
created_at | datetime | ✓ | When the incident was created |
updated_at | datetime | ✓ | When the incident was last updated |
chatroom_url | string | URL to the incident chatroom in Prepared Portal |
Example Payload
{
"type": "incident_metadata",
"id": "550e8400-e29b-41d4-a716-446655440000",
"caller_phone_number": "+15551234567",
"is_audio_live": true,
"audio_call_ended_at": null,
"created_at": "2024-01-15 10:30:00 UTC",
"updated_at": "2024-01-15 10:30:00 UTC",
"chatroom_url": "https://portal.prepared911.com/chatrooms/abc123"
}
caller_location
Sent when Prepared receives location data for a caller. Multiple updates may be sent as the caller's position changes or as higher-accuracy sources become available.
Payload Schema
| Field | Type | Required | Description |
|---|---|---|---|
type | string | ✓ | Always "caller_location" |
id | uuid | ✓ | Unique identifier for this location update |
incident_id | uuid | ✓ | Incident this location belongs to |
lat | number | ✓ | Latitude coordinate |
lng | number | ✓ | Longitude coordinate |
class_of_service | string | Class of service (ANI/ALI locations only) | |
created_at | datetime | ✓ | When this location was captured |
source | string | ✓ | Source of the location data |
Location Sources
Sources are listed by typical accuracy (highest to lowest):
| Source | Description |
|---|---|
eed | Apple Emergency SOS (updates every 10-15s) |
els | Android Emergency Location Service (updates every 10-15s) |
prepared | Prepared livestream link (updates every 1-2s) |
ani_ali | Traditional 911 ANI/ALI with rebidding |
indigital | Manual/T911 incidents |
rapid_sos | RapidSOS location service |
Example Payload
{
"type": "caller_location",
"id": "550e8400-e29b-41d4-a716-446655440001",
"incident_id": "550e8400-e29b-41d4-a716-446655440000",
"lat": 37.7749,
"lng": -122.4194,
"class_of_service": null,
"created_at": "2024-01-15 10:30:05 UTC",
"source": "eed"
}
media
Sent when media is attached to an incident (photos, videos, recordings).
Payload Schema
| Field | Type | Required | Description |
|---|---|---|---|
type | string | ✓ | Always "media" |
id | uuid | ✓ | Unique identifier for this media item |
incident_id | uuid | ✓ | Incident this media belongs to |
created_at | datetime | ✓ | When the media was attached |
url | string | ✓ | Signed URL to access the media file |
content_type | string | MIME type (e.g., "image/jpeg", "video/mp4") | |
author | string | ✓ | Who attached the media ("caller" or "dispatch") |
Media URLs are signed and expire after a limited time. Download or cache media as needed for your application.
Example Payload
{
"type": "media",
"id": "550e8400-e29b-41d4-a716-446655440002",
"incident_id": "550e8400-e29b-41d4-a716-446655440000",
"created_at": "2024-01-15 10:31:00 UTC",
"url": "https://storage.prepared911.com/media/abc123.jpg?signature=xyz",
"content_type": "image/jpeg",
"author": "caller"
}
Handling Webhooks
Your webhook endpoint should:
- Validate the authentication using the method you agreed with Prepared (e.g. Bearer token in Authorization header)
- Return
200immediately to acknowledge receipt - Process the event asynchronously