Skip to main content

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 TypeDescription
incident_metadataAn incident was created or updated
caller_locationThe caller's location was updated
mediaMedia was attached to the incident

incident_metadata

Sent when an incident is created or when its metadata changes (e.g., call ended).

Payload Schema

FieldTypeRequiredDescription
typestringAlways "incident_metadata"
iduuidUnique identifier for the incident
caller_phone_numberstringPhone number of the caller (E.164 format)
is_audio_livebooleanWhether the audio call is currently active
audio_call_ended_atdatetimeWhen the audio call ended (null if still active)
created_atdatetimeWhen the incident was created
updated_atdatetimeWhen the incident was last updated
chatroom_urlstringURL 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

FieldTypeRequiredDescription
typestringAlways "caller_location"
iduuidUnique identifier for this location update
incident_iduuidIncident this location belongs to
latnumberLatitude coordinate
lngnumberLongitude coordinate
class_of_servicestringClass of service (ANI/ALI locations only)
created_atdatetimeWhen this location was captured
sourcestringSource of the location data

Location Sources

Sources are listed by typical accuracy (highest to lowest):

SourceDescription
eedApple Emergency SOS (updates every 10-15s)
elsAndroid Emergency Location Service (updates every 10-15s)
preparedPrepared livestream link (updates every 1-2s)
ani_aliTraditional 911 ANI/ALI with rebidding
indigitalManual/T911 incidents
rapid_sosRapidSOS 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

FieldTypeRequiredDescription
typestringAlways "media"
iduuidUnique identifier for this media item
incident_iduuidIncident this media belongs to
created_atdatetimeWhen the media was attached
urlstringSigned URL to access the media file
content_typestringMIME type (e.g., "image/jpeg", "video/mp4")
authorstringWho attached the media ("caller" or "dispatch")
Media URL Expiration

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:

  1. Validate the authentication using the method you agreed with Prepared (e.g. Bearer token in Authorization header)
  2. Return 200 immediately to acknowledge receipt
  3. Process the event asynchronously