Skip to content
V2 (Legacy) API ReferenceGet started

Webhooks

Events
client.Webhooks.Events(ctx) error
Function
ModelsExpand Collapse
type MessageEventV2 struct{…}

Unified payload for message webhooks when using webhook_version: "2026-02-03".

This schema is used for message.sent, message.received, message.delivered, and message.read events when the subscription URL includes ?version=2026-02-03.

Key differences from V1 (2025-01-01):

  • direction: “inbound” or “outbound” instead of is_from_me boolean
  • sender_handle: Full handle object for the sender
  • chat: Nested object with id, is_group, and owner_handle
  • Message fields (id, parts, effect, etc.) are at the top level, not nested in message

Timestamps indicate the message state:

  • message.sent: sent_at set, delivered_at=null, read_at=null
  • message.received: sent_at set, delivered_at=null, read_at=null
  • message.delivered: sent_at set, delivered_at set, read_at=null
  • message.read: sent_at set, delivered_at set, read_at set
ID string

Message identifier

formatuuid
Chat MessageEventV2Chat

Chat information

ID string

Chat identifier

formatuuid
HealthStatus MessageEventV2ChatHealthStatus

[BETA] Current health for a chat. Always present — chats start at HEALTHY and may shift based on engagement and delivery signals on the conversation. Many AT_RISK or CRITICAL chats on a single line increase the risk of line flagging.

Switch on status to gate sends or surface line health in your UI — the enum is the long-term contract. Each status carries a doc_url that deep-links to the relevant section of the Chat Health guide.

See the Chat Health guide for what each status means and how to react.

DocURL string

Deep-link to the relevant section of the Chat Health guide for this status.

formaturi
Status string

Current health bucket for the chat. See the Chat Health guide for what each value means and how to react. doc_url deep-links to the relevant section.

One of the following:
const MessageEventV2ChatHealthStatusStatusHealthy MessageEventV2ChatHealthStatusStatus = "HEALTHY"
const MessageEventV2ChatHealthStatusStatusAtRisk MessageEventV2ChatHealthStatusStatus = "AT_RISK"
const MessageEventV2ChatHealthStatusStatusCritical MessageEventV2ChatHealthStatusStatus = "CRITICAL"
const MessageEventV2ChatHealthStatusStatusOptedOut MessageEventV2ChatHealthStatusStatus = "OPTED_OUT"
UpdatedAt Time

When this status last changed.

formatdate-time
IsGroup boolOptional

Whether this is a group chat

OwnerHandle ChatHandleOptional

Your phone number’s handle. Always has is_me=true.

ID string

Unique identifier for this handle

formatuuid
Handle string

Phone number (E.164) or email address of the participant

JoinedAt Time

When this participant joined the chat

formatdate-time
Service ServiceType

Messaging service type

One of the following:
const ServiceTypeiMessage ServiceType = "iMessage"
const ServiceTypeSMS ServiceType = "SMS"
const ServiceTypeRCS ServiceType = "RCS"
IsMe boolOptional

Whether this handle belongs to the sender (your phone number)

LeftAt TimeOptional

When they left (if applicable)

formatdate-time
Status ChatHandleStatusOptional

Participant status

One of the following:
const ChatHandleStatusActive ChatHandleStatus = "active"
const ChatHandleStatusLeft ChatHandleStatus = "left"
const ChatHandleStatusRemoved ChatHandleStatus = "removed"
Direction MessageEventV2Direction

Message direction - “outbound” if sent by you, “inbound” if received

One of the following:
const MessageEventV2DirectionInbound MessageEventV2Direction = "inbound"
const MessageEventV2DirectionOutbound MessageEventV2Direction = "outbound"
Parts []MessageEventV2PartUnion

Message parts (text and/or media)

One of the following:
type SchemasTextPartResponse struct{…}

A text message part

Type SchemasTextPartResponseType

Indicates this is a text message part

Value string

The text content

TextDecorations []TextDecorationOptional

Text decorations applied to character ranges in the value

Range []int64

Character range [start, end) in the value string where the decoration applies. start is inclusive, end is exclusive. Characters are measured as UTF-16 code units. Most characters count as 1; some emoji count as 2.

Animation TextDecorationAnimationOptional

Animated text effect to apply. Mutually exclusive with style.

One of the following:
const TextDecorationAnimationBig TextDecorationAnimation = "big"
const TextDecorationAnimationSmall TextDecorationAnimation = "small"
const TextDecorationAnimationShake TextDecorationAnimation = "shake"
const TextDecorationAnimationNod TextDecorationAnimation = "nod"
const TextDecorationAnimationExplode TextDecorationAnimation = "explode"
const TextDecorationAnimationRipple TextDecorationAnimation = "ripple"
const TextDecorationAnimationBloom TextDecorationAnimation = "bloom"
const TextDecorationAnimationJitter TextDecorationAnimation = "jitter"
Style TextDecorationStyleOptional

Text style to apply. Mutually exclusive with animation.

One of the following:
const TextDecorationStyleBold TextDecorationStyle = "bold"
const TextDecorationStyleItalic TextDecorationStyle = "italic"
const TextDecorationStyleStrikethrough TextDecorationStyle = "strikethrough"
const TextDecorationStyleUnderline TextDecorationStyle = "underline"
type SchemasMediaPartResponse struct{…}

A media attachment part

ID string

Unique attachment identifier

formatuuid
Filename string

Original filename

MimeType string

MIME type of the file

SizeBytes int64

File size in bytes

Type SchemasMediaPartResponseType

Indicates this is a media attachment part

URL string

Presigned URL for downloading the attachment (expires in 1 hour).

formaturi
type MessageEventV2PartLink struct{…}

A rich link preview part

Type Link

Indicates this is a rich link preview part

Value string

The URL

SenderHandle ChatHandle

The handle that sent this message

ID string

Unique identifier for this handle

formatuuid
Handle string

Phone number (E.164) or email address of the participant

JoinedAt Time

When this participant joined the chat

formatdate-time
Service ServiceType

Messaging service type

One of the following:
const ServiceTypeiMessage ServiceType = "iMessage"
const ServiceTypeSMS ServiceType = "SMS"
const ServiceTypeRCS ServiceType = "RCS"
IsMe boolOptional

Whether this handle belongs to the sender (your phone number)

LeftAt TimeOptional

When they left (if applicable)

formatdate-time
Status ChatHandleStatusOptional

Participant status

One of the following:
const ChatHandleStatusActive ChatHandleStatus = "active"
const ChatHandleStatusLeft ChatHandleStatus = "left"
const ChatHandleStatusRemoved ChatHandleStatus = "removed"
Service ServiceType

Messaging service type

One of the following:
const ServiceTypeiMessage ServiceType = "iMessage"
const ServiceTypeSMS ServiceType = "SMS"
const ServiceTypeRCS ServiceType = "RCS"
DeliveredAt TimeOptional

When the message was delivered. Null if not yet delivered.

formatdate-time
Effect SchemasMessageEffectOptional

iMessage effect applied to a message (screen or bubble animation)

Name stringOptional

Effect name (confetti, fireworks, slam, gentle, etc.)

Type SchemasMessageEffectTypeOptional

Effect category

One of the following:
const SchemasMessageEffectTypeScreen SchemasMessageEffectType = "screen"
const SchemasMessageEffectTypeBubble SchemasMessageEffectType = "bubble"
IdempotencyKey stringOptional

Idempotency key for deduplication of outbound messages.

PreferredService MessageEventV2PreferredServiceOptional

Preferred messaging service type. Includes “auto” for default fallback behavior.

One of the following:
const MessageEventV2PreferredServiceiMessage MessageEventV2PreferredService = "iMessage"
const MessageEventV2PreferredServiceSMS MessageEventV2PreferredService = "SMS"
const MessageEventV2PreferredServiceRCS MessageEventV2PreferredService = "RCS"
const MessageEventV2PreferredServiceAuto MessageEventV2PreferredService = "auto"
ReadAt TimeOptional

When the message was read. Null if not yet read.

formatdate-time
ReplyTo MessageEventV2ReplyToOptional

Reference to the message this is replying to (for threaded replies)

MessageID stringOptional

ID of the message being replied to

formatuuid
PartIndex int64Optional

Index of the part being replied to

formatint32
minimum0
SentAt TimeOptional

When the message was sent. Null if not yet sent.

formatdate-time
type MessagePayload struct{…}

Message content nested within webhook events

ID stringOptional

Message identifier

formatuuid
CreatedAt TimeOptional

When the message record was created

formatdate-time
DeliveredAt TimeOptional

When the message was delivered

formatdate-time
Effect SchemasMessageEffectOptional

iMessage effect applied to a message (screen or bubble animation)

Name stringOptional

Effect name (confetti, fireworks, slam, gentle, etc.)

Type SchemasMessageEffectTypeOptional

Effect category

One of the following:
const SchemasMessageEffectTypeScreen SchemasMessageEffectType = "screen"
const SchemasMessageEffectTypeBubble SchemasMessageEffectType = "bubble"
IsDelivered boolOptional

Whether the message has been delivered

IsRead boolOptional

Whether the message has been read

Parts []MessagePayloadPartUnionOptional

Message content parts (text and/or media)

One of the following:
type SchemasTextPartResponse struct{…}

A text message part

Type SchemasTextPartResponseType

Indicates this is a text message part

Value string

The text content

TextDecorations []TextDecorationOptional

Text decorations applied to character ranges in the value

Range []int64

Character range [start, end) in the value string where the decoration applies. start is inclusive, end is exclusive. Characters are measured as UTF-16 code units. Most characters count as 1; some emoji count as 2.

Animation TextDecorationAnimationOptional

Animated text effect to apply. Mutually exclusive with style.

One of the following:
const TextDecorationAnimationBig TextDecorationAnimation = "big"
const TextDecorationAnimationSmall TextDecorationAnimation = "small"
const TextDecorationAnimationShake TextDecorationAnimation = "shake"
const TextDecorationAnimationNod TextDecorationAnimation = "nod"
const TextDecorationAnimationExplode TextDecorationAnimation = "explode"
const TextDecorationAnimationRipple TextDecorationAnimation = "ripple"
const TextDecorationAnimationBloom TextDecorationAnimation = "bloom"
const TextDecorationAnimationJitter TextDecorationAnimation = "jitter"
Style TextDecorationStyleOptional

Text style to apply. Mutually exclusive with animation.

One of the following:
const TextDecorationStyleBold TextDecorationStyle = "bold"
const TextDecorationStyleItalic TextDecorationStyle = "italic"
const TextDecorationStyleStrikethrough TextDecorationStyle = "strikethrough"
const TextDecorationStyleUnderline TextDecorationStyle = "underline"
type SchemasMediaPartResponse struct{…}

A media attachment part

ID string

Unique attachment identifier

formatuuid
Filename string

Original filename

MimeType string

MIME type of the file

SizeBytes int64

File size in bytes

Type SchemasMediaPartResponseType

Indicates this is a media attachment part

URL string

Presigned URL for downloading the attachment (expires in 1 hour).

formaturi
MessagePayloadPartSchemasLinkPartResponse
Type string

Indicates this is a rich link preview part

Value string

The URL

ReadAt TimeOptional

When the message was read

formatdate-time
ReplyTo MessagePayloadReplyToOptional

Reference to the message this is replying to

MessageID stringOptional

The ID of the message being replied to

formatuuid
PartIndex int64Optional

Index of the message part being replied to (0-based)

formatint32
minimum0
SentAt TimeOptional

When the message was sent

formatdate-time
UpdatedAt TimeOptional

When the message record was last updated

formatdate-time
type ReactionEventBase struct{…}
IsFromMe bool

Whether this reaction was from the owner of the phone number (true) or from someone else (false)

ReactionType ReactionType

Type of reaction. Standard iMessage tapbacks are love, like, dislike, laugh, emphasize, question. Custom emoji reactions have type “custom” with the actual emoji in the custom_emoji field. Sticker reactions have type “sticker” with sticker attachment details in the sticker field.

One of the following:
const ReactionTypeLove ReactionType = "love"
const ReactionTypeLike ReactionType = "like"
const ReactionTypeDislike ReactionType = "dislike"
const ReactionTypeLaugh ReactionType = "laugh"
const ReactionTypeEmphasize ReactionType = "emphasize"
const ReactionTypeQuestion ReactionType = "question"
const ReactionTypeCustom ReactionType = "custom"
const ReactionTypeSticker ReactionType = "sticker"
ChatID stringOptional

Chat identifier (UUID)

CustomEmoji stringOptional

The actual emoji when reaction_type is “custom”. Null for standard tapbacks.

DeprecatedFrom stringOptional

DEPRECATED: Use from_handle instead. Phone number or email address of the person who added/removed the reaction.

FromHandle ChatHandleOptional

The person who added/removed the reaction as a full handle object

ID string

Unique identifier for this handle

formatuuid
Handle string

Phone number (E.164) or email address of the participant

JoinedAt Time

When this participant joined the chat

formatdate-time
Service ServiceType

Messaging service type

One of the following:
const ServiceTypeiMessage ServiceType = "iMessage"
const ServiceTypeSMS ServiceType = "SMS"
const ServiceTypeRCS ServiceType = "RCS"
IsMe boolOptional

Whether this handle belongs to the sender (your phone number)

LeftAt TimeOptional

When they left (if applicable)

formatdate-time
Status ChatHandleStatusOptional

Participant status

One of the following:
const ChatHandleStatusActive ChatHandleStatus = "active"
const ChatHandleStatusLeft ChatHandleStatus = "left"
const ChatHandleStatusRemoved ChatHandleStatus = "removed"
MessageID stringOptional

Message identifier (UUID) that the reaction was added to or removed from

PartIndex int64Optional

Index of the message part that was reacted to (0-based)

formatint32
minimum0
ReactedAt TimeOptional

When the reaction was added or removed

formatdate-time
Service ServiceTypeOptional

Messaging service type

One of the following:
const ServiceTypeiMessage ServiceType = "iMessage"
const ServiceTypeSMS ServiceType = "SMS"
const ServiceTypeRCS ServiceType = "RCS"
Sticker ReactionEventBaseStickerOptional

Sticker attachment details when reaction_type is “sticker”. Null for non-sticker reactions.

FileName stringOptional

Filename of the sticker

Height int64Optional

Sticker image height in pixels

MimeType stringOptional

MIME type of the sticker image

URL stringOptional

Presigned URL for downloading the sticker image (expires in 1 hour).

formaturi
Width int64Optional

Sticker image width in pixels

type SchemasMediaPartResponse struct{…}

A media attachment part

ID string

Unique attachment identifier

formatuuid
Filename string

Original filename

MimeType string

MIME type of the file

SizeBytes int64

File size in bytes

Type SchemasMediaPartResponseType

Indicates this is a media attachment part

URL string

Presigned URL for downloading the attachment (expires in 1 hour).

formaturi
type SchemasMessageEffect struct{…}

iMessage effect applied to a message (screen or bubble animation)

Name stringOptional

Effect name (confetti, fireworks, slam, gentle, etc.)

Type SchemasMessageEffectTypeOptional

Effect category

One of the following:
const SchemasMessageEffectTypeScreen SchemasMessageEffectType = "screen"
const SchemasMessageEffectTypeBubble SchemasMessageEffectType = "bubble"
type SchemasTextPartResponse struct{…}

A text message part

Type SchemasTextPartResponseType

Indicates this is a text message part

Value string

The text content

TextDecorations []TextDecorationOptional

Text decorations applied to character ranges in the value

Range []int64

Character range [start, end) in the value string where the decoration applies. start is inclusive, end is exclusive. Characters are measured as UTF-16 code units. Most characters count as 1; some emoji count as 2.

Animation TextDecorationAnimationOptional

Animated text effect to apply. Mutually exclusive with style.

One of the following:
const TextDecorationAnimationBig TextDecorationAnimation = "big"
const TextDecorationAnimationSmall TextDecorationAnimation = "small"
const TextDecorationAnimationShake TextDecorationAnimation = "shake"
const TextDecorationAnimationNod TextDecorationAnimation = "nod"
const TextDecorationAnimationExplode TextDecorationAnimation = "explode"
const TextDecorationAnimationRipple TextDecorationAnimation = "ripple"
const TextDecorationAnimationBloom TextDecorationAnimation = "bloom"
const TextDecorationAnimationJitter TextDecorationAnimation = "jitter"
Style TextDecorationStyleOptional

Text style to apply. Mutually exclusive with animation.

One of the following:
const TextDecorationStyleBold TextDecorationStyle = "bold"
const TextDecorationStyleItalic TextDecorationStyle = "italic"
const TextDecorationStyleStrikethrough TextDecorationStyle = "strikethrough"
const TextDecorationStyleUnderline TextDecorationStyle = "underline"
type MessageSentWebhookEvent struct{…}

Complete webhook payload for message.sent events (2026-02-03 format)

APIVersion string

API version for the webhook payload format

CreatedAt Time

When the event was created

formatdate-time

Unified payload for message webhooks when using webhook_version: "2026-02-03".

This schema is used for message.sent, message.received, message.delivered, and message.read events when the subscription URL includes ?version=2026-02-03.

Key differences from V1 (2025-01-01):

  • direction: “inbound” or “outbound” instead of is_from_me boolean
  • sender_handle: Full handle object for the sender
  • chat: Nested object with id, is_group, and owner_handle
  • Message fields (id, parts, effect, etc.) are at the top level, not nested in message

Timestamps indicate the message state:

  • message.sent: sent_at set, delivered_at=null, read_at=null
  • message.received: sent_at set, delivered_at=null, read_at=null
  • message.delivered: sent_at set, delivered_at set, read_at=null
  • message.read: sent_at set, delivered_at set, read_at set
ID string

Message identifier

formatuuid
Chat MessageEventV2Chat

Chat information

ID string

Chat identifier

formatuuid
HealthStatus MessageEventV2ChatHealthStatus

[BETA] Current health for a chat. Always present — chats start at HEALTHY and may shift based on engagement and delivery signals on the conversation. Many AT_RISK or CRITICAL chats on a single line increase the risk of line flagging.

Switch on status to gate sends or surface line health in your UI — the enum is the long-term contract. Each status carries a doc_url that deep-links to the relevant section of the Chat Health guide.

See the Chat Health guide for what each status means and how to react.

DocURL string

Deep-link to the relevant section of the Chat Health guide for this status.

formaturi
Status string

Current health bucket for the chat. See the Chat Health guide for what each value means and how to react. doc_url deep-links to the relevant section.

One of the following:
const MessageEventV2ChatHealthStatusStatusHealthy MessageEventV2ChatHealthStatusStatus = "HEALTHY"
const MessageEventV2ChatHealthStatusStatusAtRisk MessageEventV2ChatHealthStatusStatus = "AT_RISK"
const MessageEventV2ChatHealthStatusStatusCritical MessageEventV2ChatHealthStatusStatus = "CRITICAL"
const MessageEventV2ChatHealthStatusStatusOptedOut MessageEventV2ChatHealthStatusStatus = "OPTED_OUT"
UpdatedAt Time

When this status last changed.

formatdate-time
IsGroup boolOptional

Whether this is a group chat

OwnerHandle ChatHandleOptional

Your phone number’s handle. Always has is_me=true.

ID string

Unique identifier for this handle

formatuuid
Handle string

Phone number (E.164) or email address of the participant

JoinedAt Time

When this participant joined the chat

formatdate-time
Service ServiceType

Messaging service type

One of the following:
const ServiceTypeiMessage ServiceType = "iMessage"
const ServiceTypeSMS ServiceType = "SMS"
const ServiceTypeRCS ServiceType = "RCS"
IsMe boolOptional

Whether this handle belongs to the sender (your phone number)

LeftAt TimeOptional

When they left (if applicable)

formatdate-time
Status ChatHandleStatusOptional

Participant status

One of the following:
const ChatHandleStatusActive ChatHandleStatus = "active"
const ChatHandleStatusLeft ChatHandleStatus = "left"
const ChatHandleStatusRemoved ChatHandleStatus = "removed"
Direction MessageEventV2Direction

Message direction - “outbound” if sent by you, “inbound” if received

One of the following:
const MessageEventV2DirectionInbound MessageEventV2Direction = "inbound"
const MessageEventV2DirectionOutbound MessageEventV2Direction = "outbound"
Parts []MessageEventV2PartUnion

Message parts (text and/or media)

One of the following:
type SchemasTextPartResponse struct{…}

A text message part

Type SchemasTextPartResponseType

Indicates this is a text message part

Value string

The text content

TextDecorations []TextDecorationOptional

Text decorations applied to character ranges in the value

Range []int64

Character range [start, end) in the value string where the decoration applies. start is inclusive, end is exclusive. Characters are measured as UTF-16 code units. Most characters count as 1; some emoji count as 2.

Animation TextDecorationAnimationOptional

Animated text effect to apply. Mutually exclusive with style.

One of the following:
const TextDecorationAnimationBig TextDecorationAnimation = "big"
const TextDecorationAnimationSmall TextDecorationAnimation = "small"
const TextDecorationAnimationShake TextDecorationAnimation = "shake"
const TextDecorationAnimationNod TextDecorationAnimation = "nod"
const TextDecorationAnimationExplode TextDecorationAnimation = "explode"
const TextDecorationAnimationRipple TextDecorationAnimation = "ripple"
const TextDecorationAnimationBloom TextDecorationAnimation = "bloom"
const TextDecorationAnimationJitter TextDecorationAnimation = "jitter"
Style TextDecorationStyleOptional

Text style to apply. Mutually exclusive with animation.

One of the following:
const TextDecorationStyleBold TextDecorationStyle = "bold"
const TextDecorationStyleItalic TextDecorationStyle = "italic"
const TextDecorationStyleStrikethrough TextDecorationStyle = "strikethrough"
const TextDecorationStyleUnderline TextDecorationStyle = "underline"
type SchemasMediaPartResponse struct{…}

A media attachment part

ID string

Unique attachment identifier

formatuuid
Filename string

Original filename

MimeType string

MIME type of the file

SizeBytes int64

File size in bytes

Type SchemasMediaPartResponseType

Indicates this is a media attachment part

URL string

Presigned URL for downloading the attachment (expires in 1 hour).

formaturi
type MessageEventV2PartLink struct{…}

A rich link preview part

Type Link

Indicates this is a rich link preview part

Value string

The URL

SenderHandle ChatHandle

The handle that sent this message

ID string

Unique identifier for this handle

formatuuid
Handle string

Phone number (E.164) or email address of the participant

JoinedAt Time

When this participant joined the chat

formatdate-time
Service ServiceType

Messaging service type

One of the following:
const ServiceTypeiMessage ServiceType = "iMessage"
const ServiceTypeSMS ServiceType = "SMS"
const ServiceTypeRCS ServiceType = "RCS"
IsMe boolOptional

Whether this handle belongs to the sender (your phone number)

LeftAt TimeOptional

When they left (if applicable)

formatdate-time
Status ChatHandleStatusOptional

Participant status

One of the following:
const ChatHandleStatusActive ChatHandleStatus = "active"
const ChatHandleStatusLeft ChatHandleStatus = "left"
const ChatHandleStatusRemoved ChatHandleStatus = "removed"
Service ServiceType

Messaging service type

One of the following:
const ServiceTypeiMessage ServiceType = "iMessage"
const ServiceTypeSMS ServiceType = "SMS"
const ServiceTypeRCS ServiceType = "RCS"
DeliveredAt TimeOptional

When the message was delivered. Null if not yet delivered.

formatdate-time
Effect SchemasMessageEffectOptional

iMessage effect applied to a message (screen or bubble animation)

Name stringOptional

Effect name (confetti, fireworks, slam, gentle, etc.)

Type SchemasMessageEffectTypeOptional

Effect category

One of the following:
const SchemasMessageEffectTypeScreen SchemasMessageEffectType = "screen"
const SchemasMessageEffectTypeBubble SchemasMessageEffectType = "bubble"
IdempotencyKey stringOptional

Idempotency key for deduplication of outbound messages.

PreferredService MessageEventV2PreferredServiceOptional

Preferred messaging service type. Includes “auto” for default fallback behavior.

One of the following:
const MessageEventV2PreferredServiceiMessage MessageEventV2PreferredService = "iMessage"
const MessageEventV2PreferredServiceSMS MessageEventV2PreferredService = "SMS"
const MessageEventV2PreferredServiceRCS MessageEventV2PreferredService = "RCS"
const MessageEventV2PreferredServiceAuto MessageEventV2PreferredService = "auto"
ReadAt TimeOptional

When the message was read. Null if not yet read.

formatdate-time
ReplyTo MessageEventV2ReplyToOptional

Reference to the message this is replying to (for threaded replies)

MessageID stringOptional

ID of the message being replied to

formatuuid
PartIndex int64Optional

Index of the part being replied to

formatint32
minimum0
SentAt TimeOptional

When the message was sent. Null if not yet sent.

formatdate-time
EventID string

Unique identifier for this event (for deduplication)

formatuuid

Valid webhook event types that can be subscribed to.

Note: message.edited is only delivered to subscriptions using webhook_version: "2026-02-03". Subscribing to this event on a v2025 subscription will not produce any deliveries.

One of the following:
const WebhookEventTypeMessageSent WebhookEventType = "message.sent"
const WebhookEventTypeMessageReceived WebhookEventType = "message.received"
const WebhookEventTypeMessageRead WebhookEventType = "message.read"
const WebhookEventTypeMessageDelivered WebhookEventType = "message.delivered"
const WebhookEventTypeMessageFailed WebhookEventType = "message.failed"
const WebhookEventTypeMessageEdited WebhookEventType = "message.edited"
const WebhookEventTypeReactionAdded WebhookEventType = "reaction.added"
const WebhookEventTypeReactionRemoved WebhookEventType = "reaction.removed"
const WebhookEventTypeParticipantAdded WebhookEventType = "participant.added"
const WebhookEventTypeParticipantRemoved WebhookEventType = "participant.removed"
const WebhookEventTypeChatCreated WebhookEventType = "chat.created"
const WebhookEventTypeChatGroupNameUpdated WebhookEventType = "chat.group_name_updated"
const WebhookEventTypeChatGroupIconUpdated WebhookEventType = "chat.group_icon_updated"
const WebhookEventTypeChatGroupNameUpdateFailed WebhookEventType = "chat.group_name_update_failed"
const WebhookEventTypeChatGroupIconUpdateFailed WebhookEventType = "chat.group_icon_update_failed"
const WebhookEventTypeChatTypingIndicatorStarted WebhookEventType = "chat.typing_indicator.started"
const WebhookEventTypeChatTypingIndicatorStopped WebhookEventType = "chat.typing_indicator.stopped"
const WebhookEventTypePhoneNumberStatusUpdated WebhookEventType = "phone_number.status_updated"
const WebhookEventTypeCallInitiated WebhookEventType = "call.initiated"
const WebhookEventTypeCallRinging WebhookEventType = "call.ringing"
const WebhookEventTypeCallAnswered WebhookEventType = "call.answered"
const WebhookEventTypeCallEnded WebhookEventType = "call.ended"
const WebhookEventTypeCallFailed WebhookEventType = "call.failed"
const WebhookEventTypeCallDeclined WebhookEventType = "call.declined"
const WebhookEventTypeCallNoAnswer WebhookEventType = "call.no_answer"
PartnerID string

Partner identifier. Present on all webhooks for cross-referencing.

TraceID string

Trace ID for debugging and correlation across systems.

WebhookVersion string

Date-based webhook payload version. Determined by the ?version= query parameter in your webhook subscription URL. If no version parameter is specified, defaults based on subscription creation date.

type MessageReceivedWebhookEvent struct{…}

Complete webhook payload for message.received events (2026-02-03 format)

APIVersion string

API version for the webhook payload format

CreatedAt Time

When the event was created

formatdate-time

Unified payload for message webhooks when using webhook_version: "2026-02-03".

This schema is used for message.sent, message.received, message.delivered, and message.read events when the subscription URL includes ?version=2026-02-03.

Key differences from V1 (2025-01-01):

  • direction: “inbound” or “outbound” instead of is_from_me boolean
  • sender_handle: Full handle object for the sender
  • chat: Nested object with id, is_group, and owner_handle
  • Message fields (id, parts, effect, etc.) are at the top level, not nested in message

Timestamps indicate the message state:

  • message.sent: sent_at set, delivered_at=null, read_at=null
  • message.received: sent_at set, delivered_at=null, read_at=null
  • message.delivered: sent_at set, delivered_at set, read_at=null
  • message.read: sent_at set, delivered_at set, read_at set
ID string

Message identifier

formatuuid
Chat MessageEventV2Chat

Chat information

ID string

Chat identifier

formatuuid
HealthStatus MessageEventV2ChatHealthStatus

[BETA] Current health for a chat. Always present — chats start at HEALTHY and may shift based on engagement and delivery signals on the conversation. Many AT_RISK or CRITICAL chats on a single line increase the risk of line flagging.

Switch on status to gate sends or surface line health in your UI — the enum is the long-term contract. Each status carries a doc_url that deep-links to the relevant section of the Chat Health guide.

See the Chat Health guide for what each status means and how to react.

DocURL string

Deep-link to the relevant section of the Chat Health guide for this status.

formaturi
Status string

Current health bucket for the chat. See the Chat Health guide for what each value means and how to react. doc_url deep-links to the relevant section.

One of the following:
const MessageEventV2ChatHealthStatusStatusHealthy MessageEventV2ChatHealthStatusStatus = "HEALTHY"
const MessageEventV2ChatHealthStatusStatusAtRisk MessageEventV2ChatHealthStatusStatus = "AT_RISK"
const MessageEventV2ChatHealthStatusStatusCritical MessageEventV2ChatHealthStatusStatus = "CRITICAL"
const MessageEventV2ChatHealthStatusStatusOptedOut MessageEventV2ChatHealthStatusStatus = "OPTED_OUT"
UpdatedAt Time

When this status last changed.

formatdate-time
IsGroup boolOptional

Whether this is a group chat

OwnerHandle ChatHandleOptional

Your phone number’s handle. Always has is_me=true.

ID string

Unique identifier for this handle

formatuuid
Handle string

Phone number (E.164) or email address of the participant

JoinedAt Time

When this participant joined the chat

formatdate-time
Service ServiceType

Messaging service type

One of the following:
const ServiceTypeiMessage ServiceType = "iMessage"
const ServiceTypeSMS ServiceType = "SMS"
const ServiceTypeRCS ServiceType = "RCS"
IsMe boolOptional

Whether this handle belongs to the sender (your phone number)

LeftAt TimeOptional

When they left (if applicable)

formatdate-time
Status ChatHandleStatusOptional

Participant status

One of the following:
const ChatHandleStatusActive ChatHandleStatus = "active"
const ChatHandleStatusLeft ChatHandleStatus = "left"
const ChatHandleStatusRemoved ChatHandleStatus = "removed"
Direction MessageEventV2Direction

Message direction - “outbound” if sent by you, “inbound” if received

One of the following:
const MessageEventV2DirectionInbound MessageEventV2Direction = "inbound"
const MessageEventV2DirectionOutbound MessageEventV2Direction = "outbound"
Parts []MessageEventV2PartUnion

Message parts (text and/or media)

One of the following:
type SchemasTextPartResponse struct{…}

A text message part

Type SchemasTextPartResponseType

Indicates this is a text message part

Value string

The text content

TextDecorations []TextDecorationOptional

Text decorations applied to character ranges in the value

Range []int64

Character range [start, end) in the value string where the decoration applies. start is inclusive, end is exclusive. Characters are measured as UTF-16 code units. Most characters count as 1; some emoji count as 2.

Animation TextDecorationAnimationOptional

Animated text effect to apply. Mutually exclusive with style.

One of the following:
const TextDecorationAnimationBig TextDecorationAnimation = "big"
const TextDecorationAnimationSmall TextDecorationAnimation = "small"
const TextDecorationAnimationShake TextDecorationAnimation = "shake"
const TextDecorationAnimationNod TextDecorationAnimation = "nod"
const TextDecorationAnimationExplode TextDecorationAnimation = "explode"
const TextDecorationAnimationRipple TextDecorationAnimation = "ripple"
const TextDecorationAnimationBloom TextDecorationAnimation = "bloom"
const TextDecorationAnimationJitter TextDecorationAnimation = "jitter"
Style TextDecorationStyleOptional

Text style to apply. Mutually exclusive with animation.

One of the following:
const TextDecorationStyleBold TextDecorationStyle = "bold"
const TextDecorationStyleItalic TextDecorationStyle = "italic"
const TextDecorationStyleStrikethrough TextDecorationStyle = "strikethrough"
const TextDecorationStyleUnderline TextDecorationStyle = "underline"
type SchemasMediaPartResponse struct{…}

A media attachment part

ID string

Unique attachment identifier

formatuuid
Filename string

Original filename

MimeType string

MIME type of the file

SizeBytes int64

File size in bytes

Type SchemasMediaPartResponseType

Indicates this is a media attachment part

URL string

Presigned URL for downloading the attachment (expires in 1 hour).

formaturi
type MessageEventV2PartLink struct{…}

A rich link preview part

Type Link

Indicates this is a rich link preview part

Value string

The URL

SenderHandle ChatHandle

The handle that sent this message

ID string

Unique identifier for this handle

formatuuid
Handle string

Phone number (E.164) or email address of the participant

JoinedAt Time

When this participant joined the chat

formatdate-time
Service ServiceType

Messaging service type

One of the following:
const ServiceTypeiMessage ServiceType = "iMessage"
const ServiceTypeSMS ServiceType = "SMS"
const ServiceTypeRCS ServiceType = "RCS"
IsMe boolOptional

Whether this handle belongs to the sender (your phone number)

LeftAt TimeOptional

When they left (if applicable)

formatdate-time
Status ChatHandleStatusOptional

Participant status

One of the following:
const ChatHandleStatusActive ChatHandleStatus = "active"
const ChatHandleStatusLeft ChatHandleStatus = "left"
const ChatHandleStatusRemoved ChatHandleStatus = "removed"
Service ServiceType

Messaging service type

One of the following:
const ServiceTypeiMessage ServiceType = "iMessage"
const ServiceTypeSMS ServiceType = "SMS"
const ServiceTypeRCS ServiceType = "RCS"
DeliveredAt TimeOptional

When the message was delivered. Null if not yet delivered.

formatdate-time
Effect SchemasMessageEffectOptional

iMessage effect applied to a message (screen or bubble animation)

Name stringOptional

Effect name (confetti, fireworks, slam, gentle, etc.)

Type SchemasMessageEffectTypeOptional

Effect category

One of the following:
const SchemasMessageEffectTypeScreen SchemasMessageEffectType = "screen"
const SchemasMessageEffectTypeBubble SchemasMessageEffectType = "bubble"
IdempotencyKey stringOptional

Idempotency key for deduplication of outbound messages.

PreferredService MessageEventV2PreferredServiceOptional

Preferred messaging service type. Includes “auto” for default fallback behavior.

One of the following:
const MessageEventV2PreferredServiceiMessage MessageEventV2PreferredService = "iMessage"
const MessageEventV2PreferredServiceSMS MessageEventV2PreferredService = "SMS"
const MessageEventV2PreferredServiceRCS MessageEventV2PreferredService = "RCS"
const MessageEventV2PreferredServiceAuto MessageEventV2PreferredService = "auto"
ReadAt TimeOptional

When the message was read. Null if not yet read.

formatdate-time
ReplyTo MessageEventV2ReplyToOptional

Reference to the message this is replying to (for threaded replies)

MessageID stringOptional

ID of the message being replied to

formatuuid
PartIndex int64Optional

Index of the part being replied to

formatint32
minimum0
SentAt TimeOptional

When the message was sent. Null if not yet sent.

formatdate-time
EventID string

Unique identifier for this event (for deduplication)

formatuuid

Valid webhook event types that can be subscribed to.

Note: message.edited is only delivered to subscriptions using webhook_version: "2026-02-03". Subscribing to this event on a v2025 subscription will not produce any deliveries.

One of the following:
const WebhookEventTypeMessageSent WebhookEventType = "message.sent"
const WebhookEventTypeMessageReceived WebhookEventType = "message.received"
const WebhookEventTypeMessageRead WebhookEventType = "message.read"
const WebhookEventTypeMessageDelivered WebhookEventType = "message.delivered"
const WebhookEventTypeMessageFailed WebhookEventType = "message.failed"
const WebhookEventTypeMessageEdited WebhookEventType = "message.edited"
const WebhookEventTypeReactionAdded WebhookEventType = "reaction.added"
const WebhookEventTypeReactionRemoved WebhookEventType = "reaction.removed"
const WebhookEventTypeParticipantAdded WebhookEventType = "participant.added"
const WebhookEventTypeParticipantRemoved WebhookEventType = "participant.removed"
const WebhookEventTypeChatCreated WebhookEventType = "chat.created"
const WebhookEventTypeChatGroupNameUpdated WebhookEventType = "chat.group_name_updated"
const WebhookEventTypeChatGroupIconUpdated WebhookEventType = "chat.group_icon_updated"
const WebhookEventTypeChatGroupNameUpdateFailed WebhookEventType = "chat.group_name_update_failed"
const WebhookEventTypeChatGroupIconUpdateFailed WebhookEventType = "chat.group_icon_update_failed"
const WebhookEventTypeChatTypingIndicatorStarted WebhookEventType = "chat.typing_indicator.started"
const WebhookEventTypeChatTypingIndicatorStopped WebhookEventType = "chat.typing_indicator.stopped"
const WebhookEventTypePhoneNumberStatusUpdated WebhookEventType = "phone_number.status_updated"
const WebhookEventTypeCallInitiated WebhookEventType = "call.initiated"
const WebhookEventTypeCallRinging WebhookEventType = "call.ringing"
const WebhookEventTypeCallAnswered WebhookEventType = "call.answered"
const WebhookEventTypeCallEnded WebhookEventType = "call.ended"
const WebhookEventTypeCallFailed WebhookEventType = "call.failed"
const WebhookEventTypeCallDeclined WebhookEventType = "call.declined"
const WebhookEventTypeCallNoAnswer WebhookEventType = "call.no_answer"
PartnerID string

Partner identifier. Present on all webhooks for cross-referencing.

TraceID string

Trace ID for debugging and correlation across systems.

WebhookVersion string

Date-based webhook payload version. Determined by the ?version= query parameter in your webhook subscription URL. If no version parameter is specified, defaults based on subscription creation date.

type MessageReadWebhookEvent struct{…}

Complete webhook payload for message.read events (2026-02-03 format)

APIVersion string

API version for the webhook payload format

CreatedAt Time

When the event was created

formatdate-time

Unified payload for message webhooks when using webhook_version: "2026-02-03".

This schema is used for message.sent, message.received, message.delivered, and message.read events when the subscription URL includes ?version=2026-02-03.

Key differences from V1 (2025-01-01):

  • direction: “inbound” or “outbound” instead of is_from_me boolean
  • sender_handle: Full handle object for the sender
  • chat: Nested object with id, is_group, and owner_handle
  • Message fields (id, parts, effect, etc.) are at the top level, not nested in message

Timestamps indicate the message state:

  • message.sent: sent_at set, delivered_at=null, read_at=null
  • message.received: sent_at set, delivered_at=null, read_at=null
  • message.delivered: sent_at set, delivered_at set, read_at=null
  • message.read: sent_at set, delivered_at set, read_at set
ID string

Message identifier

formatuuid
Chat MessageEventV2Chat

Chat information

ID string

Chat identifier

formatuuid
HealthStatus MessageEventV2ChatHealthStatus

[BETA] Current health for a chat. Always present — chats start at HEALTHY and may shift based on engagement and delivery signals on the conversation. Many AT_RISK or CRITICAL chats on a single line increase the risk of line flagging.

Switch on status to gate sends or surface line health in your UI — the enum is the long-term contract. Each status carries a doc_url that deep-links to the relevant section of the Chat Health guide.

See the Chat Health guide for what each status means and how to react.

DocURL string

Deep-link to the relevant section of the Chat Health guide for this status.

formaturi
Status string

Current health bucket for the chat. See the Chat Health guide for what each value means and how to react. doc_url deep-links to the relevant section.

One of the following:
const MessageEventV2ChatHealthStatusStatusHealthy MessageEventV2ChatHealthStatusStatus = "HEALTHY"
const MessageEventV2ChatHealthStatusStatusAtRisk MessageEventV2ChatHealthStatusStatus = "AT_RISK"
const MessageEventV2ChatHealthStatusStatusCritical MessageEventV2ChatHealthStatusStatus = "CRITICAL"
const MessageEventV2ChatHealthStatusStatusOptedOut MessageEventV2ChatHealthStatusStatus = "OPTED_OUT"
UpdatedAt Time

When this status last changed.

formatdate-time
IsGroup boolOptional

Whether this is a group chat

OwnerHandle ChatHandleOptional

Your phone number’s handle. Always has is_me=true.

ID string

Unique identifier for this handle

formatuuid
Handle string

Phone number (E.164) or email address of the participant

JoinedAt Time

When this participant joined the chat

formatdate-time
Service ServiceType

Messaging service type

One of the following:
const ServiceTypeiMessage ServiceType = "iMessage"
const ServiceTypeSMS ServiceType = "SMS"
const ServiceTypeRCS ServiceType = "RCS"
IsMe boolOptional

Whether this handle belongs to the sender (your phone number)

LeftAt TimeOptional

When they left (if applicable)

formatdate-time
Status ChatHandleStatusOptional

Participant status

One of the following:
const ChatHandleStatusActive ChatHandleStatus = "active"
const ChatHandleStatusLeft ChatHandleStatus = "left"
const ChatHandleStatusRemoved ChatHandleStatus = "removed"
Direction MessageEventV2Direction

Message direction - “outbound” if sent by you, “inbound” if received

One of the following:
const MessageEventV2DirectionInbound MessageEventV2Direction = "inbound"
const MessageEventV2DirectionOutbound MessageEventV2Direction = "outbound"
Parts []MessageEventV2PartUnion

Message parts (text and/or media)

One of the following:
type SchemasTextPartResponse struct{…}

A text message part

Type SchemasTextPartResponseType

Indicates this is a text message part

Value string

The text content

TextDecorations []TextDecorationOptional

Text decorations applied to character ranges in the value

Range []int64

Character range [start, end) in the value string where the decoration applies. start is inclusive, end is exclusive. Characters are measured as UTF-16 code units. Most characters count as 1; some emoji count as 2.

Animation TextDecorationAnimationOptional

Animated text effect to apply. Mutually exclusive with style.

One of the following:
const TextDecorationAnimationBig TextDecorationAnimation = "big"
const TextDecorationAnimationSmall TextDecorationAnimation = "small"
const TextDecorationAnimationShake TextDecorationAnimation = "shake"
const TextDecorationAnimationNod TextDecorationAnimation = "nod"
const TextDecorationAnimationExplode TextDecorationAnimation = "explode"
const TextDecorationAnimationRipple TextDecorationAnimation = "ripple"
const TextDecorationAnimationBloom TextDecorationAnimation = "bloom"
const TextDecorationAnimationJitter TextDecorationAnimation = "jitter"
Style TextDecorationStyleOptional

Text style to apply. Mutually exclusive with animation.

One of the following:
const TextDecorationStyleBold TextDecorationStyle = "bold"
const TextDecorationStyleItalic TextDecorationStyle = "italic"
const TextDecorationStyleStrikethrough TextDecorationStyle = "strikethrough"
const TextDecorationStyleUnderline TextDecorationStyle = "underline"
type SchemasMediaPartResponse struct{…}

A media attachment part

ID string

Unique attachment identifier

formatuuid
Filename string

Original filename

MimeType string

MIME type of the file

SizeBytes int64

File size in bytes

Type SchemasMediaPartResponseType

Indicates this is a media attachment part

URL string

Presigned URL for downloading the attachment (expires in 1 hour).

formaturi
type MessageEventV2PartLink struct{…}

A rich link preview part

Type Link

Indicates this is a rich link preview part

Value string

The URL

SenderHandle ChatHandle

The handle that sent this message

ID string

Unique identifier for this handle

formatuuid
Handle string

Phone number (E.164) or email address of the participant

JoinedAt Time

When this participant joined the chat

formatdate-time
Service ServiceType

Messaging service type

One of the following:
const ServiceTypeiMessage ServiceType = "iMessage"
const ServiceTypeSMS ServiceType = "SMS"
const ServiceTypeRCS ServiceType = "RCS"
IsMe boolOptional

Whether this handle belongs to the sender (your phone number)

LeftAt TimeOptional

When they left (if applicable)

formatdate-time
Status ChatHandleStatusOptional

Participant status

One of the following:
const ChatHandleStatusActive ChatHandleStatus = "active"
const ChatHandleStatusLeft ChatHandleStatus = "left"
const ChatHandleStatusRemoved ChatHandleStatus = "removed"
Service ServiceType

Messaging service type

One of the following:
const ServiceTypeiMessage ServiceType = "iMessage"
const ServiceTypeSMS ServiceType = "SMS"
const ServiceTypeRCS ServiceType = "RCS"
DeliveredAt TimeOptional

When the message was delivered. Null if not yet delivered.

formatdate-time
Effect SchemasMessageEffectOptional

iMessage effect applied to a message (screen or bubble animation)

Name stringOptional

Effect name (confetti, fireworks, slam, gentle, etc.)

Type SchemasMessageEffectTypeOptional

Effect category

One of the following:
const SchemasMessageEffectTypeScreen SchemasMessageEffectType = "screen"
const SchemasMessageEffectTypeBubble SchemasMessageEffectType = "bubble"
IdempotencyKey stringOptional

Idempotency key for deduplication of outbound messages.

PreferredService MessageEventV2PreferredServiceOptional

Preferred messaging service type. Includes “auto” for default fallback behavior.

One of the following:
const MessageEventV2PreferredServiceiMessage MessageEventV2PreferredService = "iMessage"
const MessageEventV2PreferredServiceSMS MessageEventV2PreferredService = "SMS"
const MessageEventV2PreferredServiceRCS MessageEventV2PreferredService = "RCS"
const MessageEventV2PreferredServiceAuto MessageEventV2PreferredService = "auto"
ReadAt TimeOptional

When the message was read. Null if not yet read.

formatdate-time
ReplyTo MessageEventV2ReplyToOptional

Reference to the message this is replying to (for threaded replies)

MessageID stringOptional

ID of the message being replied to

formatuuid
PartIndex int64Optional

Index of the part being replied to

formatint32
minimum0
SentAt TimeOptional

When the message was sent. Null if not yet sent.

formatdate-time
EventID string

Unique identifier for this event (for deduplication)

formatuuid

Valid webhook event types that can be subscribed to.

Note: message.edited is only delivered to subscriptions using webhook_version: "2026-02-03". Subscribing to this event on a v2025 subscription will not produce any deliveries.

One of the following:
const WebhookEventTypeMessageSent WebhookEventType = "message.sent"
const WebhookEventTypeMessageReceived WebhookEventType = "message.received"
const WebhookEventTypeMessageRead WebhookEventType = "message.read"
const WebhookEventTypeMessageDelivered WebhookEventType = "message.delivered"
const WebhookEventTypeMessageFailed WebhookEventType = "message.failed"
const WebhookEventTypeMessageEdited WebhookEventType = "message.edited"
const WebhookEventTypeReactionAdded WebhookEventType = "reaction.added"
const WebhookEventTypeReactionRemoved WebhookEventType = "reaction.removed"
const WebhookEventTypeParticipantAdded WebhookEventType = "participant.added"
const WebhookEventTypeParticipantRemoved WebhookEventType = "participant.removed"
const WebhookEventTypeChatCreated WebhookEventType = "chat.created"
const WebhookEventTypeChatGroupNameUpdated WebhookEventType = "chat.group_name_updated"
const WebhookEventTypeChatGroupIconUpdated WebhookEventType = "chat.group_icon_updated"
const WebhookEventTypeChatGroupNameUpdateFailed WebhookEventType = "chat.group_name_update_failed"
const WebhookEventTypeChatGroupIconUpdateFailed WebhookEventType = "chat.group_icon_update_failed"
const WebhookEventTypeChatTypingIndicatorStarted WebhookEventType = "chat.typing_indicator.started"
const WebhookEventTypeChatTypingIndicatorStopped WebhookEventType = "chat.typing_indicator.stopped"
const WebhookEventTypePhoneNumberStatusUpdated WebhookEventType = "phone_number.status_updated"
const WebhookEventTypeCallInitiated WebhookEventType = "call.initiated"
const WebhookEventTypeCallRinging WebhookEventType = "call.ringing"
const WebhookEventTypeCallAnswered WebhookEventType = "call.answered"
const WebhookEventTypeCallEnded WebhookEventType = "call.ended"
const WebhookEventTypeCallFailed WebhookEventType = "call.failed"
const WebhookEventTypeCallDeclined WebhookEventType = "call.declined"
const WebhookEventTypeCallNoAnswer WebhookEventType = "call.no_answer"
PartnerID string

Partner identifier. Present on all webhooks for cross-referencing.

TraceID string

Trace ID for debugging and correlation across systems.

WebhookVersion string

Date-based webhook payload version. Determined by the ?version= query parameter in your webhook subscription URL. If no version parameter is specified, defaults based on subscription creation date.

type MessageDeliveredWebhookEvent struct{…}

Complete webhook payload for message.delivered events (2026-02-03 format)

APIVersion string

API version for the webhook payload format

CreatedAt Time

When the event was created

formatdate-time

Unified payload for message webhooks when using webhook_version: "2026-02-03".

This schema is used for message.sent, message.received, message.delivered, and message.read events when the subscription URL includes ?version=2026-02-03.

Key differences from V1 (2025-01-01):

  • direction: “inbound” or “outbound” instead of is_from_me boolean
  • sender_handle: Full handle object for the sender
  • chat: Nested object with id, is_group, and owner_handle
  • Message fields (id, parts, effect, etc.) are at the top level, not nested in message

Timestamps indicate the message state:

  • message.sent: sent_at set, delivered_at=null, read_at=null
  • message.received: sent_at set, delivered_at=null, read_at=null
  • message.delivered: sent_at set, delivered_at set, read_at=null
  • message.read: sent_at set, delivered_at set, read_at set
ID string

Message identifier

formatuuid
Chat MessageEventV2Chat

Chat information

ID string

Chat identifier

formatuuid
HealthStatus MessageEventV2ChatHealthStatus

[BETA] Current health for a chat. Always present — chats start at HEALTHY and may shift based on engagement and delivery signals on the conversation. Many AT_RISK or CRITICAL chats on a single line increase the risk of line flagging.

Switch on status to gate sends or surface line health in your UI — the enum is the long-term contract. Each status carries a doc_url that deep-links to the relevant section of the Chat Health guide.

See the Chat Health guide for what each status means and how to react.

DocURL string

Deep-link to the relevant section of the Chat Health guide for this status.

formaturi
Status string

Current health bucket for the chat. See the Chat Health guide for what each value means and how to react. doc_url deep-links to the relevant section.

One of the following:
const MessageEventV2ChatHealthStatusStatusHealthy MessageEventV2ChatHealthStatusStatus = "HEALTHY"
const MessageEventV2ChatHealthStatusStatusAtRisk MessageEventV2ChatHealthStatusStatus = "AT_RISK"
const MessageEventV2ChatHealthStatusStatusCritical MessageEventV2ChatHealthStatusStatus = "CRITICAL"
const MessageEventV2ChatHealthStatusStatusOptedOut MessageEventV2ChatHealthStatusStatus = "OPTED_OUT"
UpdatedAt Time

When this status last changed.

formatdate-time
IsGroup boolOptional

Whether this is a group chat

OwnerHandle ChatHandleOptional

Your phone number’s handle. Always has is_me=true.

ID string

Unique identifier for this handle

formatuuid
Handle string

Phone number (E.164) or email address of the participant

JoinedAt Time

When this participant joined the chat

formatdate-time
Service ServiceType

Messaging service type

One of the following:
const ServiceTypeiMessage ServiceType = "iMessage"
const ServiceTypeSMS ServiceType = "SMS"
const ServiceTypeRCS ServiceType = "RCS"
IsMe boolOptional

Whether this handle belongs to the sender (your phone number)

LeftAt TimeOptional

When they left (if applicable)

formatdate-time
Status ChatHandleStatusOptional

Participant status

One of the following:
const ChatHandleStatusActive ChatHandleStatus = "active"
const ChatHandleStatusLeft ChatHandleStatus = "left"
const ChatHandleStatusRemoved ChatHandleStatus = "removed"
Direction MessageEventV2Direction

Message direction - “outbound” if sent by you, “inbound” if received

One of the following:
const MessageEventV2DirectionInbound MessageEventV2Direction = "inbound"
const MessageEventV2DirectionOutbound MessageEventV2Direction = "outbound"
Parts []MessageEventV2PartUnion

Message parts (text and/or media)

One of the following:
type SchemasTextPartResponse struct{…}

A text message part

Type SchemasTextPartResponseType

Indicates this is a text message part

Value string

The text content

TextDecorations []TextDecorationOptional

Text decorations applied to character ranges in the value

Range []int64

Character range [start, end) in the value string where the decoration applies. start is inclusive, end is exclusive. Characters are measured as UTF-16 code units. Most characters count as 1; some emoji count as 2.

Animation TextDecorationAnimationOptional

Animated text effect to apply. Mutually exclusive with style.

One of the following:
const TextDecorationAnimationBig TextDecorationAnimation = "big"
const TextDecorationAnimationSmall TextDecorationAnimation = "small"
const TextDecorationAnimationShake TextDecorationAnimation = "shake"
const TextDecorationAnimationNod TextDecorationAnimation = "nod"
const TextDecorationAnimationExplode TextDecorationAnimation = "explode"
const TextDecorationAnimationRipple TextDecorationAnimation = "ripple"
const TextDecorationAnimationBloom TextDecorationAnimation = "bloom"
const TextDecorationAnimationJitter TextDecorationAnimation = "jitter"
Style TextDecorationStyleOptional

Text style to apply. Mutually exclusive with animation.

One of the following:
const TextDecorationStyleBold TextDecorationStyle = "bold"
const TextDecorationStyleItalic TextDecorationStyle = "italic"
const TextDecorationStyleStrikethrough TextDecorationStyle = "strikethrough"
const TextDecorationStyleUnderline TextDecorationStyle = "underline"
type SchemasMediaPartResponse struct{…}

A media attachment part

ID string

Unique attachment identifier

formatuuid
Filename string

Original filename

MimeType string

MIME type of the file

SizeBytes int64

File size in bytes

Type SchemasMediaPartResponseType

Indicates this is a media attachment part

URL string

Presigned URL for downloading the attachment (expires in 1 hour).

formaturi
type MessageEventV2PartLink struct{…}

A rich link preview part

Type Link

Indicates this is a rich link preview part

Value string

The URL

SenderHandle ChatHandle

The handle that sent this message

ID string

Unique identifier for this handle

formatuuid
Handle string

Phone number (E.164) or email address of the participant

JoinedAt Time

When this participant joined the chat

formatdate-time
Service ServiceType

Messaging service type

One of the following:
const ServiceTypeiMessage ServiceType = "iMessage"
const ServiceTypeSMS ServiceType = "SMS"
const ServiceTypeRCS ServiceType = "RCS"
IsMe boolOptional

Whether this handle belongs to the sender (your phone number)

LeftAt TimeOptional

When they left (if applicable)

formatdate-time
Status ChatHandleStatusOptional

Participant status

One of the following:
const ChatHandleStatusActive ChatHandleStatus = "active"
const ChatHandleStatusLeft ChatHandleStatus = "left"
const ChatHandleStatusRemoved ChatHandleStatus = "removed"
Service ServiceType

Messaging service type

One of the following:
const ServiceTypeiMessage ServiceType = "iMessage"
const ServiceTypeSMS ServiceType = "SMS"
const ServiceTypeRCS ServiceType = "RCS"
DeliveredAt TimeOptional

When the message was delivered. Null if not yet delivered.

formatdate-time
Effect SchemasMessageEffectOptional

iMessage effect applied to a message (screen or bubble animation)

Name stringOptional

Effect name (confetti, fireworks, slam, gentle, etc.)

Type SchemasMessageEffectTypeOptional

Effect category

One of the following:
const SchemasMessageEffectTypeScreen SchemasMessageEffectType = "screen"
const SchemasMessageEffectTypeBubble SchemasMessageEffectType = "bubble"
IdempotencyKey stringOptional

Idempotency key for deduplication of outbound messages.

PreferredService MessageEventV2PreferredServiceOptional

Preferred messaging service type. Includes “auto” for default fallback behavior.

One of the following:
const MessageEventV2PreferredServiceiMessage MessageEventV2PreferredService = "iMessage"
const MessageEventV2PreferredServiceSMS MessageEventV2PreferredService = "SMS"
const MessageEventV2PreferredServiceRCS MessageEventV2PreferredService = "RCS"
const MessageEventV2PreferredServiceAuto MessageEventV2PreferredService = "auto"
ReadAt TimeOptional

When the message was read. Null if not yet read.

formatdate-time
ReplyTo MessageEventV2ReplyToOptional

Reference to the message this is replying to (for threaded replies)

MessageID stringOptional

ID of the message being replied to

formatuuid
PartIndex int64Optional

Index of the part being replied to

formatint32
minimum0
SentAt TimeOptional

When the message was sent. Null if not yet sent.

formatdate-time
EventID string

Unique identifier for this event (for deduplication)

formatuuid

Valid webhook event types that can be subscribed to.

Note: message.edited is only delivered to subscriptions using webhook_version: "2026-02-03". Subscribing to this event on a v2025 subscription will not produce any deliveries.

One of the following:
const WebhookEventTypeMessageSent WebhookEventType = "message.sent"
const WebhookEventTypeMessageReceived WebhookEventType = "message.received"
const WebhookEventTypeMessageRead WebhookEventType = "message.read"
const WebhookEventTypeMessageDelivered WebhookEventType = "message.delivered"
const WebhookEventTypeMessageFailed WebhookEventType = "message.failed"
const WebhookEventTypeMessageEdited WebhookEventType = "message.edited"
const WebhookEventTypeReactionAdded WebhookEventType = "reaction.added"
const WebhookEventTypeReactionRemoved WebhookEventType = "reaction.removed"
const WebhookEventTypeParticipantAdded WebhookEventType = "participant.added"
const WebhookEventTypeParticipantRemoved WebhookEventType = "participant.removed"
const WebhookEventTypeChatCreated WebhookEventType = "chat.created"
const WebhookEventTypeChatGroupNameUpdated WebhookEventType = "chat.group_name_updated"
const WebhookEventTypeChatGroupIconUpdated WebhookEventType = "chat.group_icon_updated"
const WebhookEventTypeChatGroupNameUpdateFailed WebhookEventType = "chat.group_name_update_failed"
const WebhookEventTypeChatGroupIconUpdateFailed WebhookEventType = "chat.group_icon_update_failed"
const WebhookEventTypeChatTypingIndicatorStarted WebhookEventType = "chat.typing_indicator.started"
const WebhookEventTypeChatTypingIndicatorStopped WebhookEventType = "chat.typing_indicator.stopped"
const WebhookEventTypePhoneNumberStatusUpdated WebhookEventType = "phone_number.status_updated"
const WebhookEventTypeCallInitiated WebhookEventType = "call.initiated"
const WebhookEventTypeCallRinging WebhookEventType = "call.ringing"
const WebhookEventTypeCallAnswered WebhookEventType = "call.answered"
const WebhookEventTypeCallEnded WebhookEventType = "call.ended"
const WebhookEventTypeCallFailed WebhookEventType = "call.failed"
const WebhookEventTypeCallDeclined WebhookEventType = "call.declined"
const WebhookEventTypeCallNoAnswer WebhookEventType = "call.no_answer"
PartnerID string

Partner identifier. Present on all webhooks for cross-referencing.

TraceID string

Trace ID for debugging and correlation across systems.

WebhookVersion string

Date-based webhook payload version. Determined by the ?version= query parameter in your webhook subscription URL. If no version parameter is specified, defaults based on subscription creation date.

type MessageFailedWebhookEvent struct{…}

Complete webhook payload for message.failed events

APIVersion string

API version for the webhook payload format

CreatedAt Time

When the event was created

formatdate-time
Data MessageFailedWebhookEventData

Error details for message.failed webhook events. See WebhookErrorCode for the full error code reference.

Code int64

Error codes in webhook failure events (3007, 4001).

FailedAt Time

When the failure was detected

formatdate-time
ChatID stringOptional

Chat identifier (UUID)

MessageID stringOptional

Message identifier (UUID)

Reason stringOptional

Human-readable description of the failure

EventID string

Unique identifier for this event (for deduplication)

formatuuid

Valid webhook event types that can be subscribed to.

Note: message.edited is only delivered to subscriptions using webhook_version: "2026-02-03". Subscribing to this event on a v2025 subscription will not produce any deliveries.

One of the following:
const WebhookEventTypeMessageSent WebhookEventType = "message.sent"
const WebhookEventTypeMessageReceived WebhookEventType = "message.received"
const WebhookEventTypeMessageRead WebhookEventType = "message.read"
const WebhookEventTypeMessageDelivered WebhookEventType = "message.delivered"
const WebhookEventTypeMessageFailed WebhookEventType = "message.failed"
const WebhookEventTypeMessageEdited WebhookEventType = "message.edited"
const WebhookEventTypeReactionAdded WebhookEventType = "reaction.added"
const WebhookEventTypeReactionRemoved WebhookEventType = "reaction.removed"
const WebhookEventTypeParticipantAdded WebhookEventType = "participant.added"
const WebhookEventTypeParticipantRemoved WebhookEventType = "participant.removed"
const WebhookEventTypeChatCreated WebhookEventType = "chat.created"
const WebhookEventTypeChatGroupNameUpdated WebhookEventType = "chat.group_name_updated"
const WebhookEventTypeChatGroupIconUpdated WebhookEventType = "chat.group_icon_updated"
const WebhookEventTypeChatGroupNameUpdateFailed WebhookEventType = "chat.group_name_update_failed"
const WebhookEventTypeChatGroupIconUpdateFailed WebhookEventType = "chat.group_icon_update_failed"
const WebhookEventTypeChatTypingIndicatorStarted WebhookEventType = "chat.typing_indicator.started"
const WebhookEventTypeChatTypingIndicatorStopped WebhookEventType = "chat.typing_indicator.stopped"
const WebhookEventTypePhoneNumberStatusUpdated WebhookEventType = "phone_number.status_updated"
const WebhookEventTypeCallInitiated WebhookEventType = "call.initiated"
const WebhookEventTypeCallRinging WebhookEventType = "call.ringing"
const WebhookEventTypeCallAnswered WebhookEventType = "call.answered"
const WebhookEventTypeCallEnded WebhookEventType = "call.ended"
const WebhookEventTypeCallFailed WebhookEventType = "call.failed"
const WebhookEventTypeCallDeclined WebhookEventType = "call.declined"
const WebhookEventTypeCallNoAnswer WebhookEventType = "call.no_answer"
PartnerID string

Partner identifier. Present on all webhooks for cross-referencing.

TraceID string

Trace ID for debugging and correlation across systems.

WebhookVersion string

Date-based webhook payload version. Determined by the ?version= query parameter in your webhook subscription URL. If no version parameter is specified, defaults based on subscription creation date.

type MessageEditedWebhookEvent struct{…}

Complete webhook payload for message.edited events (2026-02-03 format only)

APIVersion string

API version for the webhook payload format

CreatedAt Time

When the event was created

formatdate-time
Data MessageEditedWebhookEventData

Payload for message.edited events (2026-02-03 format).

Describes which part of a message was edited and when. Only text parts can be edited. Only available for subscriptions using webhook_version: "2026-02-03".

ID string

Message identifier

formatuuid
Chat MessageEditedWebhookEventDataChat

Chat context

ID string

Chat identifier

formatuuid
HealthStatus MessageEditedWebhookEventDataChatHealthStatus

[BETA] Current health for a chat. Always present — chats start at HEALTHY and may shift based on engagement and delivery signals on the conversation. Many AT_RISK or CRITICAL chats on a single line increase the risk of line flagging.

Switch on status to gate sends or surface line health in your UI — the enum is the long-term contract. Each status carries a doc_url that deep-links to the relevant section of the Chat Health guide.

See the Chat Health guide for what each status means and how to react.

DocURL string

Deep-link to the relevant section of the Chat Health guide for this status.

formaturi
Status string

Current health bucket for the chat. See the Chat Health guide for what each value means and how to react. doc_url deep-links to the relevant section.

One of the following:
const MessageEditedWebhookEventDataChatHealthStatusStatusHealthy MessageEditedWebhookEventDataChatHealthStatusStatus = "HEALTHY"
const MessageEditedWebhookEventDataChatHealthStatusStatusAtRisk MessageEditedWebhookEventDataChatHealthStatusStatus = "AT_RISK"
const MessageEditedWebhookEventDataChatHealthStatusStatusCritical MessageEditedWebhookEventDataChatHealthStatusStatus = "CRITICAL"
const MessageEditedWebhookEventDataChatHealthStatusStatusOptedOut MessageEditedWebhookEventDataChatHealthStatusStatus = "OPTED_OUT"
UpdatedAt Time

When this status last changed.

formatdate-time
IsGroup bool

Whether this is a group chat

OwnerHandle ChatHandle

The handle that owns this chat (your phone number)

ID string

Unique identifier for this handle

formatuuid
Handle string

Phone number (E.164) or email address of the participant

JoinedAt Time

When this participant joined the chat

formatdate-time
Service ServiceType

Messaging service type

One of the following:
const ServiceTypeiMessage ServiceType = "iMessage"
const ServiceTypeSMS ServiceType = "SMS"
const ServiceTypeRCS ServiceType = "RCS"
IsMe boolOptional

Whether this handle belongs to the sender (your phone number)

LeftAt TimeOptional

When they left (if applicable)

formatdate-time
Status ChatHandleStatusOptional

Participant status

One of the following:
const ChatHandleStatusActive ChatHandleStatus = "active"
const ChatHandleStatusLeft ChatHandleStatus = "left"
const ChatHandleStatusRemoved ChatHandleStatus = "removed"
Direction string

“outbound” if you sent the original message, “inbound” if you received it

One of the following:
const MessageEditedWebhookEventDataDirectionOutbound MessageEditedWebhookEventDataDirection = "outbound"
const MessageEditedWebhookEventDataDirectionInbound MessageEditedWebhookEventDataDirection = "inbound"
EditedAt Time

When the edit occurred

formatdate-time
Part MessageEditedWebhookEventDataPart

The edited part

Index int64

Zero-based index of the edited part within the message

Text string

New text content of the part

SenderHandle ChatHandle

The handle that sent (and edited) this message

ID string

Unique identifier for this handle

formatuuid
Handle string

Phone number (E.164) or email address of the participant

JoinedAt Time

When this participant joined the chat

formatdate-time
Service ServiceType

Messaging service type

One of the following:
const ServiceTypeiMessage ServiceType = "iMessage"
const ServiceTypeSMS ServiceType = "SMS"
const ServiceTypeRCS ServiceType = "RCS"
IsMe boolOptional

Whether this handle belongs to the sender (your phone number)

LeftAt TimeOptional

When they left (if applicable)

formatdate-time
Status ChatHandleStatusOptional

Participant status

One of the following:
const ChatHandleStatusActive ChatHandleStatus = "active"
const ChatHandleStatusLeft ChatHandleStatus = "left"
const ChatHandleStatusRemoved ChatHandleStatus = "removed"
EventID string

Unique identifier for this event (for deduplication)

formatuuid

Valid webhook event types that can be subscribed to.

Note: message.edited is only delivered to subscriptions using webhook_version: "2026-02-03". Subscribing to this event on a v2025 subscription will not produce any deliveries.

One of the following:
const WebhookEventTypeMessageSent WebhookEventType = "message.sent"
const WebhookEventTypeMessageReceived WebhookEventType = "message.received"
const WebhookEventTypeMessageRead WebhookEventType = "message.read"
const WebhookEventTypeMessageDelivered WebhookEventType = "message.delivered"
const WebhookEventTypeMessageFailed WebhookEventType = "message.failed"
const WebhookEventTypeMessageEdited WebhookEventType = "message.edited"
const WebhookEventTypeReactionAdded WebhookEventType = "reaction.added"
const WebhookEventTypeReactionRemoved WebhookEventType = "reaction.removed"
const WebhookEventTypeParticipantAdded WebhookEventType = "participant.added"
const WebhookEventTypeParticipantRemoved WebhookEventType = "participant.removed"
const WebhookEventTypeChatCreated WebhookEventType = "chat.created"
const WebhookEventTypeChatGroupNameUpdated WebhookEventType = "chat.group_name_updated"
const WebhookEventTypeChatGroupIconUpdated WebhookEventType = "chat.group_icon_updated"
const WebhookEventTypeChatGroupNameUpdateFailed WebhookEventType = "chat.group_name_update_failed"
const WebhookEventTypeChatGroupIconUpdateFailed WebhookEventType = "chat.group_icon_update_failed"
const WebhookEventTypeChatTypingIndicatorStarted WebhookEventType = "chat.typing_indicator.started"
const WebhookEventTypeChatTypingIndicatorStopped WebhookEventType = "chat.typing_indicator.stopped"
const WebhookEventTypePhoneNumberStatusUpdated WebhookEventType = "phone_number.status_updated"
const WebhookEventTypeCallInitiated WebhookEventType = "call.initiated"
const WebhookEventTypeCallRinging WebhookEventType = "call.ringing"
const WebhookEventTypeCallAnswered WebhookEventType = "call.answered"
const WebhookEventTypeCallEnded WebhookEventType = "call.ended"
const WebhookEventTypeCallFailed WebhookEventType = "call.failed"
const WebhookEventTypeCallDeclined WebhookEventType = "call.declined"
const WebhookEventTypeCallNoAnswer WebhookEventType = "call.no_answer"
PartnerID string

Partner identifier. Present on all webhooks for cross-referencing.

TraceID string

Trace ID for debugging and correlation across systems.

WebhookVersion string

Date-based webhook payload version. Determined by the ?version= query parameter in your webhook subscription URL. If no version parameter is specified, defaults based on subscription creation date.

type ReactionAddedWebhookEvent struct{…}

Complete webhook payload for reaction.added events

APIVersion string

API version for the webhook payload format

CreatedAt Time

When the event was created

formatdate-time

Payload for reaction.added webhook events

IsFromMe bool

Whether this reaction was from the owner of the phone number (true) or from someone else (false)

ReactionType ReactionType

Type of reaction. Standard iMessage tapbacks are love, like, dislike, laugh, emphasize, question. Custom emoji reactions have type “custom” with the actual emoji in the custom_emoji field. Sticker reactions have type “sticker” with sticker attachment details in the sticker field.

One of the following:
const ReactionTypeLove ReactionType = "love"
const ReactionTypeLike ReactionType = "like"
const ReactionTypeDislike ReactionType = "dislike"
const ReactionTypeLaugh ReactionType = "laugh"
const ReactionTypeEmphasize ReactionType = "emphasize"
const ReactionTypeQuestion ReactionType = "question"
const ReactionTypeCustom ReactionType = "custom"
const ReactionTypeSticker ReactionType = "sticker"
ChatID stringOptional

Chat identifier (UUID)

CustomEmoji stringOptional

The actual emoji when reaction_type is “custom”. Null for standard tapbacks.

DeprecatedFrom stringOptional

DEPRECATED: Use from_handle instead. Phone number or email address of the person who added/removed the reaction.

FromHandle ChatHandleOptional

The person who added/removed the reaction as a full handle object

ID string

Unique identifier for this handle

formatuuid
Handle string

Phone number (E.164) or email address of the participant

JoinedAt Time

When this participant joined the chat

formatdate-time
Service ServiceType

Messaging service type

One of the following:
const ServiceTypeiMessage ServiceType = "iMessage"
const ServiceTypeSMS ServiceType = "SMS"
const ServiceTypeRCS ServiceType = "RCS"
IsMe boolOptional

Whether this handle belongs to the sender (your phone number)

LeftAt TimeOptional

When they left (if applicable)

formatdate-time
Status ChatHandleStatusOptional

Participant status

One of the following:
const ChatHandleStatusActive ChatHandleStatus = "active"
const ChatHandleStatusLeft ChatHandleStatus = "left"
const ChatHandleStatusRemoved ChatHandleStatus = "removed"
MessageID stringOptional

Message identifier (UUID) that the reaction was added to or removed from

PartIndex int64Optional

Index of the message part that was reacted to (0-based)

formatint32
minimum0
ReactedAt TimeOptional

When the reaction was added or removed

formatdate-time
Service ServiceTypeOptional

Messaging service type

One of the following:
const ServiceTypeiMessage ServiceType = "iMessage"
const ServiceTypeSMS ServiceType = "SMS"
const ServiceTypeRCS ServiceType = "RCS"
Sticker ReactionEventBaseStickerOptional

Sticker attachment details when reaction_type is “sticker”. Null for non-sticker reactions.

FileName stringOptional

Filename of the sticker

Height int64Optional

Sticker image height in pixels

MimeType stringOptional

MIME type of the sticker image

URL stringOptional

Presigned URL for downloading the sticker image (expires in 1 hour).

formaturi
Width int64Optional

Sticker image width in pixels

EventID string

Unique identifier for this event (for deduplication)

formatuuid

Valid webhook event types that can be subscribed to.

Note: message.edited is only delivered to subscriptions using webhook_version: "2026-02-03". Subscribing to this event on a v2025 subscription will not produce any deliveries.

One of the following:
const WebhookEventTypeMessageSent WebhookEventType = "message.sent"
const WebhookEventTypeMessageReceived WebhookEventType = "message.received"
const WebhookEventTypeMessageRead WebhookEventType = "message.read"
const WebhookEventTypeMessageDelivered WebhookEventType = "message.delivered"
const WebhookEventTypeMessageFailed WebhookEventType = "message.failed"
const WebhookEventTypeMessageEdited WebhookEventType = "message.edited"
const WebhookEventTypeReactionAdded WebhookEventType = "reaction.added"
const WebhookEventTypeReactionRemoved WebhookEventType = "reaction.removed"
const WebhookEventTypeParticipantAdded WebhookEventType = "participant.added"
const WebhookEventTypeParticipantRemoved WebhookEventType = "participant.removed"
const WebhookEventTypeChatCreated WebhookEventType = "chat.created"
const WebhookEventTypeChatGroupNameUpdated WebhookEventType = "chat.group_name_updated"
const WebhookEventTypeChatGroupIconUpdated WebhookEventType = "chat.group_icon_updated"
const WebhookEventTypeChatGroupNameUpdateFailed WebhookEventType = "chat.group_name_update_failed"
const WebhookEventTypeChatGroupIconUpdateFailed WebhookEventType = "chat.group_icon_update_failed"
const WebhookEventTypeChatTypingIndicatorStarted WebhookEventType = "chat.typing_indicator.started"
const WebhookEventTypeChatTypingIndicatorStopped WebhookEventType = "chat.typing_indicator.stopped"
const WebhookEventTypePhoneNumberStatusUpdated WebhookEventType = "phone_number.status_updated"
const WebhookEventTypeCallInitiated WebhookEventType = "call.initiated"
const WebhookEventTypeCallRinging WebhookEventType = "call.ringing"
const WebhookEventTypeCallAnswered WebhookEventType = "call.answered"
const WebhookEventTypeCallEnded WebhookEventType = "call.ended"
const WebhookEventTypeCallFailed WebhookEventType = "call.failed"
const WebhookEventTypeCallDeclined WebhookEventType = "call.declined"
const WebhookEventTypeCallNoAnswer WebhookEventType = "call.no_answer"
PartnerID string

Partner identifier. Present on all webhooks for cross-referencing.

TraceID string

Trace ID for debugging and correlation across systems.

WebhookVersion string

Date-based webhook payload version. Determined by the ?version= query parameter in your webhook subscription URL. If no version parameter is specified, defaults based on subscription creation date.

type ReactionRemovedWebhookEvent struct{…}

Complete webhook payload for reaction.removed events

APIVersion string

API version for the webhook payload format

CreatedAt Time

When the event was created

formatdate-time

Payload for reaction.removed webhook events

IsFromMe bool

Whether this reaction was from the owner of the phone number (true) or from someone else (false)

ReactionType ReactionType

Type of reaction. Standard iMessage tapbacks are love, like, dislike, laugh, emphasize, question. Custom emoji reactions have type “custom” with the actual emoji in the custom_emoji field. Sticker reactions have type “sticker” with sticker attachment details in the sticker field.

One of the following:
const ReactionTypeLove ReactionType = "love"
const ReactionTypeLike ReactionType = "like"
const ReactionTypeDislike ReactionType = "dislike"
const ReactionTypeLaugh ReactionType = "laugh"
const ReactionTypeEmphasize ReactionType = "emphasize"
const ReactionTypeQuestion ReactionType = "question"
const ReactionTypeCustom ReactionType = "custom"
const ReactionTypeSticker ReactionType = "sticker"
ChatID stringOptional

Chat identifier (UUID)

CustomEmoji stringOptional

The actual emoji when reaction_type is “custom”. Null for standard tapbacks.

DeprecatedFrom stringOptional

DEPRECATED: Use from_handle instead. Phone number or email address of the person who added/removed the reaction.

FromHandle ChatHandleOptional

The person who added/removed the reaction as a full handle object

ID string

Unique identifier for this handle

formatuuid
Handle string

Phone number (E.164) or email address of the participant

JoinedAt Time

When this participant joined the chat

formatdate-time
Service ServiceType

Messaging service type

One of the following:
const ServiceTypeiMessage ServiceType = "iMessage"
const ServiceTypeSMS ServiceType = "SMS"
const ServiceTypeRCS ServiceType = "RCS"
IsMe boolOptional

Whether this handle belongs to the sender (your phone number)

LeftAt TimeOptional

When they left (if applicable)

formatdate-time
Status ChatHandleStatusOptional

Participant status

One of the following:
const ChatHandleStatusActive ChatHandleStatus = "active"
const ChatHandleStatusLeft ChatHandleStatus = "left"
const ChatHandleStatusRemoved ChatHandleStatus = "removed"
MessageID stringOptional

Message identifier (UUID) that the reaction was added to or removed from

PartIndex int64Optional

Index of the message part that was reacted to (0-based)

formatint32
minimum0
ReactedAt TimeOptional

When the reaction was added or removed

formatdate-time
Service ServiceTypeOptional

Messaging service type

One of the following:
const ServiceTypeiMessage ServiceType = "iMessage"
const ServiceTypeSMS ServiceType = "SMS"
const ServiceTypeRCS ServiceType = "RCS"
Sticker ReactionEventBaseStickerOptional

Sticker attachment details when reaction_type is “sticker”. Null for non-sticker reactions.

FileName stringOptional

Filename of the sticker

Height int64Optional

Sticker image height in pixels

MimeType stringOptional

MIME type of the sticker image

URL stringOptional

Presigned URL for downloading the sticker image (expires in 1 hour).

formaturi
Width int64Optional

Sticker image width in pixels

EventID string

Unique identifier for this event (for deduplication)

formatuuid

Valid webhook event types that can be subscribed to.

Note: message.edited is only delivered to subscriptions using webhook_version: "2026-02-03". Subscribing to this event on a v2025 subscription will not produce any deliveries.

One of the following:
const WebhookEventTypeMessageSent WebhookEventType = "message.sent"
const WebhookEventTypeMessageReceived WebhookEventType = "message.received"
const WebhookEventTypeMessageRead WebhookEventType = "message.read"
const WebhookEventTypeMessageDelivered WebhookEventType = "message.delivered"
const WebhookEventTypeMessageFailed WebhookEventType = "message.failed"
const WebhookEventTypeMessageEdited WebhookEventType = "message.edited"
const WebhookEventTypeReactionAdded WebhookEventType = "reaction.added"
const WebhookEventTypeReactionRemoved WebhookEventType = "reaction.removed"
const WebhookEventTypeParticipantAdded WebhookEventType = "participant.added"
const WebhookEventTypeParticipantRemoved WebhookEventType = "participant.removed"
const WebhookEventTypeChatCreated WebhookEventType = "chat.created"
const WebhookEventTypeChatGroupNameUpdated WebhookEventType = "chat.group_name_updated"
const WebhookEventTypeChatGroupIconUpdated WebhookEventType = "chat.group_icon_updated"
const WebhookEventTypeChatGroupNameUpdateFailed WebhookEventType = "chat.group_name_update_failed"
const WebhookEventTypeChatGroupIconUpdateFailed WebhookEventType = "chat.group_icon_update_failed"
const WebhookEventTypeChatTypingIndicatorStarted WebhookEventType = "chat.typing_indicator.started"
const WebhookEventTypeChatTypingIndicatorStopped WebhookEventType = "chat.typing_indicator.stopped"
const WebhookEventTypePhoneNumberStatusUpdated WebhookEventType = "phone_number.status_updated"
const WebhookEventTypeCallInitiated WebhookEventType = "call.initiated"
const WebhookEventTypeCallRinging WebhookEventType = "call.ringing"
const WebhookEventTypeCallAnswered WebhookEventType = "call.answered"
const WebhookEventTypeCallEnded WebhookEventType = "call.ended"
const WebhookEventTypeCallFailed WebhookEventType = "call.failed"
const WebhookEventTypeCallDeclined WebhookEventType = "call.declined"
const WebhookEventTypeCallNoAnswer WebhookEventType = "call.no_answer"
PartnerID string

Partner identifier. Present on all webhooks for cross-referencing.

TraceID string

Trace ID for debugging and correlation across systems.

WebhookVersion string

Date-based webhook payload version. Determined by the ?version= query parameter in your webhook subscription URL. If no version parameter is specified, defaults based on subscription creation date.

type ParticipantAddedWebhookEvent struct{…}

Complete webhook payload for participant.added events

APIVersion string

API version for the webhook payload format

CreatedAt Time

When the event was created

formatdate-time
Data ParticipantAddedWebhookEventData

Payload for participant.added webhook events

DeprecatedHandle string

DEPRECATED: Use participant instead. Handle (phone number or email address) of the added participant.

AddedAt TimeOptional

When the participant was added

formatdate-time
ChatID stringOptional

Chat identifier (UUID) of the group chat

Participant ChatHandleOptional

The added participant as a full handle object

ID string

Unique identifier for this handle

formatuuid
Handle string

Phone number (E.164) or email address of the participant

JoinedAt Time

When this participant joined the chat

formatdate-time
Service ServiceType

Messaging service type

One of the following:
const ServiceTypeiMessage ServiceType = "iMessage"
const ServiceTypeSMS ServiceType = "SMS"
const ServiceTypeRCS ServiceType = "RCS"
IsMe boolOptional

Whether this handle belongs to the sender (your phone number)

LeftAt TimeOptional

When they left (if applicable)

formatdate-time
Status ChatHandleStatusOptional

Participant status

One of the following:
const ChatHandleStatusActive ChatHandleStatus = "active"
const ChatHandleStatusLeft ChatHandleStatus = "left"
const ChatHandleStatusRemoved ChatHandleStatus = "removed"
EventID string

Unique identifier for this event (for deduplication)

formatuuid

Valid webhook event types that can be subscribed to.

Note: message.edited is only delivered to subscriptions using webhook_version: "2026-02-03". Subscribing to this event on a v2025 subscription will not produce any deliveries.

One of the following:
const WebhookEventTypeMessageSent WebhookEventType = "message.sent"
const WebhookEventTypeMessageReceived WebhookEventType = "message.received"
const WebhookEventTypeMessageRead WebhookEventType = "message.read"
const WebhookEventTypeMessageDelivered WebhookEventType = "message.delivered"
const WebhookEventTypeMessageFailed WebhookEventType = "message.failed"
const WebhookEventTypeMessageEdited WebhookEventType = "message.edited"
const WebhookEventTypeReactionAdded WebhookEventType = "reaction.added"
const WebhookEventTypeReactionRemoved WebhookEventType = "reaction.removed"
const WebhookEventTypeParticipantAdded WebhookEventType = "participant.added"
const WebhookEventTypeParticipantRemoved WebhookEventType = "participant.removed"
const WebhookEventTypeChatCreated WebhookEventType = "chat.created"
const WebhookEventTypeChatGroupNameUpdated WebhookEventType = "chat.group_name_updated"
const WebhookEventTypeChatGroupIconUpdated WebhookEventType = "chat.group_icon_updated"
const WebhookEventTypeChatGroupNameUpdateFailed WebhookEventType = "chat.group_name_update_failed"
const WebhookEventTypeChatGroupIconUpdateFailed WebhookEventType = "chat.group_icon_update_failed"
const WebhookEventTypeChatTypingIndicatorStarted WebhookEventType = "chat.typing_indicator.started"
const WebhookEventTypeChatTypingIndicatorStopped WebhookEventType = "chat.typing_indicator.stopped"
const WebhookEventTypePhoneNumberStatusUpdated WebhookEventType = "phone_number.status_updated"
const WebhookEventTypeCallInitiated WebhookEventType = "call.initiated"
const WebhookEventTypeCallRinging WebhookEventType = "call.ringing"
const WebhookEventTypeCallAnswered WebhookEventType = "call.answered"
const WebhookEventTypeCallEnded WebhookEventType = "call.ended"
const WebhookEventTypeCallFailed WebhookEventType = "call.failed"
const WebhookEventTypeCallDeclined WebhookEventType = "call.declined"
const WebhookEventTypeCallNoAnswer WebhookEventType = "call.no_answer"
PartnerID string

Partner identifier. Present on all webhooks for cross-referencing.

TraceID string

Trace ID for debugging and correlation across systems.

WebhookVersion string

Date-based webhook payload version. Determined by the ?version= query parameter in your webhook subscription URL. If no version parameter is specified, defaults based on subscription creation date.

type ParticipantRemovedWebhookEvent struct{…}

Complete webhook payload for participant.removed events

APIVersion string

API version for the webhook payload format

CreatedAt Time

When the event was created

formatdate-time
Data ParticipantRemovedWebhookEventData

Payload for participant.removed webhook events

DeprecatedHandle string

DEPRECATED: Use participant instead. Handle (phone number or email address) of the removed participant.

ChatID stringOptional

Chat identifier (UUID) of the group chat

Participant ChatHandleOptional

The removed participant as a full handle object

ID string

Unique identifier for this handle

formatuuid
Handle string

Phone number (E.164) or email address of the participant

JoinedAt Time

When this participant joined the chat

formatdate-time
Service ServiceType

Messaging service type

One of the following:
const ServiceTypeiMessage ServiceType = "iMessage"
const ServiceTypeSMS ServiceType = "SMS"
const ServiceTypeRCS ServiceType = "RCS"
IsMe boolOptional

Whether this handle belongs to the sender (your phone number)

LeftAt TimeOptional

When they left (if applicable)

formatdate-time
Status ChatHandleStatusOptional

Participant status

One of the following:
const ChatHandleStatusActive ChatHandleStatus = "active"
const ChatHandleStatusLeft ChatHandleStatus = "left"
const ChatHandleStatusRemoved ChatHandleStatus = "removed"
RemovedAt TimeOptional

When the participant was removed

formatdate-time
EventID string

Unique identifier for this event (for deduplication)

formatuuid

Valid webhook event types that can be subscribed to.

Note: message.edited is only delivered to subscriptions using webhook_version: "2026-02-03". Subscribing to this event on a v2025 subscription will not produce any deliveries.

One of the following:
const WebhookEventTypeMessageSent WebhookEventType = "message.sent"
const WebhookEventTypeMessageReceived WebhookEventType = "message.received"
const WebhookEventTypeMessageRead WebhookEventType = "message.read"
const WebhookEventTypeMessageDelivered WebhookEventType = "message.delivered"
const WebhookEventTypeMessageFailed WebhookEventType = "message.failed"
const WebhookEventTypeMessageEdited WebhookEventType = "message.edited"
const WebhookEventTypeReactionAdded WebhookEventType = "reaction.added"
const WebhookEventTypeReactionRemoved WebhookEventType = "reaction.removed"
const WebhookEventTypeParticipantAdded WebhookEventType = "participant.added"
const WebhookEventTypeParticipantRemoved WebhookEventType = "participant.removed"
const WebhookEventTypeChatCreated WebhookEventType = "chat.created"
const WebhookEventTypeChatGroupNameUpdated WebhookEventType = "chat.group_name_updated"
const WebhookEventTypeChatGroupIconUpdated WebhookEventType = "chat.group_icon_updated"
const WebhookEventTypeChatGroupNameUpdateFailed WebhookEventType = "chat.group_name_update_failed"
const WebhookEventTypeChatGroupIconUpdateFailed WebhookEventType = "chat.group_icon_update_failed"
const WebhookEventTypeChatTypingIndicatorStarted WebhookEventType = "chat.typing_indicator.started"
const WebhookEventTypeChatTypingIndicatorStopped WebhookEventType = "chat.typing_indicator.stopped"
const WebhookEventTypePhoneNumberStatusUpdated WebhookEventType = "phone_number.status_updated"
const WebhookEventTypeCallInitiated WebhookEventType = "call.initiated"
const WebhookEventTypeCallRinging WebhookEventType = "call.ringing"
const WebhookEventTypeCallAnswered WebhookEventType = "call.answered"
const WebhookEventTypeCallEnded WebhookEventType = "call.ended"
const WebhookEventTypeCallFailed WebhookEventType = "call.failed"
const WebhookEventTypeCallDeclined WebhookEventType = "call.declined"
const WebhookEventTypeCallNoAnswer WebhookEventType = "call.no_answer"
PartnerID string

Partner identifier. Present on all webhooks for cross-referencing.

TraceID string

Trace ID for debugging and correlation across systems.

WebhookVersion string

Date-based webhook payload version. Determined by the ?version= query parameter in your webhook subscription URL. If no version parameter is specified, defaults based on subscription creation date.

type ChatCreatedWebhookEvent struct{…}

Complete webhook payload for chat.created events

APIVersion string

API version for the webhook payload format

CreatedAt Time

When the event was created

formatdate-time
Data ChatCreatedWebhookEventData

Payload for chat.created webhook events. Matches GET /v3/chats/{chatId} response.

ID string

Unique identifier for the chat

formatuuid
CreatedAt Time

When the chat was created

formatdate-time
DisplayName string

Display name for the chat. Defaults to a comma-separated list of recipient handles. Can be updated for group chats.

Handles []ChatHandle

List of chat participants with full handle details. Always contains at least two handles (your phone number and the other participant).

ID string

Unique identifier for this handle

formatuuid
Handle string

Phone number (E.164) or email address of the participant

JoinedAt Time

When this participant joined the chat

formatdate-time
Service ServiceType

Messaging service type

One of the following:
const ServiceTypeiMessage ServiceType = "iMessage"
const ServiceTypeSMS ServiceType = "SMS"
const ServiceTypeRCS ServiceType = "RCS"
IsMe boolOptional

Whether this handle belongs to the sender (your phone number)

LeftAt TimeOptional

When they left (if applicable)

formatdate-time
Status ChatHandleStatusOptional

Participant status

One of the following:
const ChatHandleStatusActive ChatHandleStatus = "active"
const ChatHandleStatusLeft ChatHandleStatus = "left"
const ChatHandleStatusRemoved ChatHandleStatus = "removed"
HealthStatus ChatCreatedWebhookEventDataHealthStatus

[BETA] Current health for a chat. Always present — chats start at HEALTHY and may shift based on engagement and delivery signals on the conversation. Many AT_RISK or CRITICAL chats on a single line increase the risk of line flagging.

Switch on status to gate sends or surface line health in your UI — the enum is the long-term contract. Each status carries a doc_url that deep-links to the relevant section of the Chat Health guide.

See the Chat Health guide for what each status means and how to react.

DocURL string

Deep-link to the relevant section of the Chat Health guide for this status.

formaturi
Status string

Current health bucket for the chat. See the Chat Health guide for what each value means and how to react. doc_url deep-links to the relevant section.

One of the following:
const ChatCreatedWebhookEventDataHealthStatusStatusHealthy ChatCreatedWebhookEventDataHealthStatusStatus = "HEALTHY"
const ChatCreatedWebhookEventDataHealthStatusStatusAtRisk ChatCreatedWebhookEventDataHealthStatusStatus = "AT_RISK"
const ChatCreatedWebhookEventDataHealthStatusStatusCritical ChatCreatedWebhookEventDataHealthStatusStatus = "CRITICAL"
const ChatCreatedWebhookEventDataHealthStatusStatusOptedOut ChatCreatedWebhookEventDataHealthStatusStatus = "OPTED_OUT"
UpdatedAt Time

When this status last changed.

formatdate-time
IsGroup bool

Whether this is a group chat

UpdatedAt Time

When the chat was last updated

formatdate-time
Service ServiceTypeOptional

Messaging service type

One of the following:
const ServiceTypeiMessage ServiceType = "iMessage"
const ServiceTypeSMS ServiceType = "SMS"
const ServiceTypeRCS ServiceType = "RCS"
EventID string

Unique identifier for this event (for deduplication)

formatuuid

Valid webhook event types that can be subscribed to.

Note: message.edited is only delivered to subscriptions using webhook_version: "2026-02-03". Subscribing to this event on a v2025 subscription will not produce any deliveries.

One of the following:
const WebhookEventTypeMessageSent WebhookEventType = "message.sent"
const WebhookEventTypeMessageReceived WebhookEventType = "message.received"
const WebhookEventTypeMessageRead WebhookEventType = "message.read"
const WebhookEventTypeMessageDelivered WebhookEventType = "message.delivered"
const WebhookEventTypeMessageFailed WebhookEventType = "message.failed"
const WebhookEventTypeMessageEdited WebhookEventType = "message.edited"
const WebhookEventTypeReactionAdded WebhookEventType = "reaction.added"
const WebhookEventTypeReactionRemoved WebhookEventType = "reaction.removed"
const WebhookEventTypeParticipantAdded WebhookEventType = "participant.added"
const WebhookEventTypeParticipantRemoved WebhookEventType = "participant.removed"
const WebhookEventTypeChatCreated WebhookEventType = "chat.created"
const WebhookEventTypeChatGroupNameUpdated WebhookEventType = "chat.group_name_updated"
const WebhookEventTypeChatGroupIconUpdated WebhookEventType = "chat.group_icon_updated"
const WebhookEventTypeChatGroupNameUpdateFailed WebhookEventType = "chat.group_name_update_failed"
const WebhookEventTypeChatGroupIconUpdateFailed WebhookEventType = "chat.group_icon_update_failed"
const WebhookEventTypeChatTypingIndicatorStarted WebhookEventType = "chat.typing_indicator.started"
const WebhookEventTypeChatTypingIndicatorStopped WebhookEventType = "chat.typing_indicator.stopped"
const WebhookEventTypePhoneNumberStatusUpdated WebhookEventType = "phone_number.status_updated"
const WebhookEventTypeCallInitiated WebhookEventType = "call.initiated"
const WebhookEventTypeCallRinging WebhookEventType = "call.ringing"
const WebhookEventTypeCallAnswered WebhookEventType = "call.answered"
const WebhookEventTypeCallEnded WebhookEventType = "call.ended"
const WebhookEventTypeCallFailed WebhookEventType = "call.failed"
const WebhookEventTypeCallDeclined WebhookEventType = "call.declined"
const WebhookEventTypeCallNoAnswer WebhookEventType = "call.no_answer"
PartnerID string

Partner identifier. Present on all webhooks for cross-referencing.

TraceID string

Trace ID for debugging and correlation across systems.

WebhookVersion string

Date-based webhook payload version. Determined by the ?version= query parameter in your webhook subscription URL. If no version parameter is specified, defaults based on subscription creation date.

type ChatGroupNameUpdatedWebhookEvent struct{…}

Complete webhook payload for chat.group_name_updated events

APIVersion string

API version for the webhook payload format

CreatedAt Time

When the event was created

formatdate-time
Data ChatGroupNameUpdatedWebhookEventData

Payload for chat.group_name_updated webhook events

ChatID string

Chat identifier (UUID) of the group chat

UpdatedAt Time

When the update occurred

formatdate-time
ChangedByHandle ChatHandleOptional

The handle who made the change.

ID string

Unique identifier for this handle

formatuuid
Handle string

Phone number (E.164) or email address of the participant

JoinedAt Time

When this participant joined the chat

formatdate-time
Service ServiceType

Messaging service type

One of the following:
const ServiceTypeiMessage ServiceType = "iMessage"
const ServiceTypeSMS ServiceType = "SMS"
const ServiceTypeRCS ServiceType = "RCS"
IsMe boolOptional

Whether this handle belongs to the sender (your phone number)

LeftAt TimeOptional

When they left (if applicable)

formatdate-time
Status ChatHandleStatusOptional

Participant status

One of the following:
const ChatHandleStatusActive ChatHandleStatus = "active"
const ChatHandleStatusLeft ChatHandleStatus = "left"
const ChatHandleStatusRemoved ChatHandleStatus = "removed"
NewValue stringOptional

New group name (null if the name was removed)

OldValue stringOptional

Previous group name (null if no previous name)

EventID string

Unique identifier for this event (for deduplication)

formatuuid

Valid webhook event types that can be subscribed to.

Note: message.edited is only delivered to subscriptions using webhook_version: "2026-02-03". Subscribing to this event on a v2025 subscription will not produce any deliveries.

One of the following:
const WebhookEventTypeMessageSent WebhookEventType = "message.sent"
const WebhookEventTypeMessageReceived WebhookEventType = "message.received"
const WebhookEventTypeMessageRead WebhookEventType = "message.read"
const WebhookEventTypeMessageDelivered WebhookEventType = "message.delivered"
const WebhookEventTypeMessageFailed WebhookEventType = "message.failed"
const WebhookEventTypeMessageEdited WebhookEventType = "message.edited"
const WebhookEventTypeReactionAdded WebhookEventType = "reaction.added"
const WebhookEventTypeReactionRemoved WebhookEventType = "reaction.removed"
const WebhookEventTypeParticipantAdded WebhookEventType = "participant.added"
const WebhookEventTypeParticipantRemoved WebhookEventType = "participant.removed"
const WebhookEventTypeChatCreated WebhookEventType = "chat.created"
const WebhookEventTypeChatGroupNameUpdated WebhookEventType = "chat.group_name_updated"
const WebhookEventTypeChatGroupIconUpdated WebhookEventType = "chat.group_icon_updated"
const WebhookEventTypeChatGroupNameUpdateFailed WebhookEventType = "chat.group_name_update_failed"
const WebhookEventTypeChatGroupIconUpdateFailed WebhookEventType = "chat.group_icon_update_failed"
const WebhookEventTypeChatTypingIndicatorStarted WebhookEventType = "chat.typing_indicator.started"
const WebhookEventTypeChatTypingIndicatorStopped WebhookEventType = "chat.typing_indicator.stopped"
const WebhookEventTypePhoneNumberStatusUpdated WebhookEventType = "phone_number.status_updated"
const WebhookEventTypeCallInitiated WebhookEventType = "call.initiated"
const WebhookEventTypeCallRinging WebhookEventType = "call.ringing"
const WebhookEventTypeCallAnswered WebhookEventType = "call.answered"
const WebhookEventTypeCallEnded WebhookEventType = "call.ended"
const WebhookEventTypeCallFailed WebhookEventType = "call.failed"
const WebhookEventTypeCallDeclined WebhookEventType = "call.declined"
const WebhookEventTypeCallNoAnswer WebhookEventType = "call.no_answer"
PartnerID string

Partner identifier. Present on all webhooks for cross-referencing.

TraceID string

Trace ID for debugging and correlation across systems.

WebhookVersion string

Date-based webhook payload version. Determined by the ?version= query parameter in your webhook subscription URL. If no version parameter is specified, defaults based on subscription creation date.

type ChatGroupIconUpdatedWebhookEvent struct{…}

Complete webhook payload for chat.group_icon_updated events

APIVersion string

API version for the webhook payload format

CreatedAt Time

When the event was created

formatdate-time
Data ChatGroupIconUpdatedWebhookEventData

Payload for chat.group_icon_updated webhook events

ChatID string

Chat identifier (UUID) of the group chat

UpdatedAt Time

When the update occurred

formatdate-time
ChangedByHandle ChatHandleOptional

The handle who made the change.

ID string

Unique identifier for this handle

formatuuid
Handle string

Phone number (E.164) or email address of the participant

JoinedAt Time

When this participant joined the chat

formatdate-time
Service ServiceType

Messaging service type

One of the following:
const ServiceTypeiMessage ServiceType = "iMessage"
const ServiceTypeSMS ServiceType = "SMS"
const ServiceTypeRCS ServiceType = "RCS"
IsMe boolOptional

Whether this handle belongs to the sender (your phone number)

LeftAt TimeOptional

When they left (if applicable)

formatdate-time
Status ChatHandleStatusOptional

Participant status

One of the following:
const ChatHandleStatusActive ChatHandleStatus = "active"
const ChatHandleStatusLeft ChatHandleStatus = "left"
const ChatHandleStatusRemoved ChatHandleStatus = "removed"
NewValue stringOptional

New icon URL (null if the icon was removed)

OldValue stringOptional

Previous icon URL (null if no previous icon)

EventID string

Unique identifier for this event (for deduplication)

formatuuid

Valid webhook event types that can be subscribed to.

Note: message.edited is only delivered to subscriptions using webhook_version: "2026-02-03". Subscribing to this event on a v2025 subscription will not produce any deliveries.

One of the following:
const WebhookEventTypeMessageSent WebhookEventType = "message.sent"
const WebhookEventTypeMessageReceived WebhookEventType = "message.received"
const WebhookEventTypeMessageRead WebhookEventType = "message.read"
const WebhookEventTypeMessageDelivered WebhookEventType = "message.delivered"
const WebhookEventTypeMessageFailed WebhookEventType = "message.failed"
const WebhookEventTypeMessageEdited WebhookEventType = "message.edited"
const WebhookEventTypeReactionAdded WebhookEventType = "reaction.added"
const WebhookEventTypeReactionRemoved WebhookEventType = "reaction.removed"
const WebhookEventTypeParticipantAdded WebhookEventType = "participant.added"
const WebhookEventTypeParticipantRemoved WebhookEventType = "participant.removed"
const WebhookEventTypeChatCreated WebhookEventType = "chat.created"
const WebhookEventTypeChatGroupNameUpdated WebhookEventType = "chat.group_name_updated"
const WebhookEventTypeChatGroupIconUpdated WebhookEventType = "chat.group_icon_updated"
const WebhookEventTypeChatGroupNameUpdateFailed WebhookEventType = "chat.group_name_update_failed"
const WebhookEventTypeChatGroupIconUpdateFailed WebhookEventType = "chat.group_icon_update_failed"
const WebhookEventTypeChatTypingIndicatorStarted WebhookEventType = "chat.typing_indicator.started"
const WebhookEventTypeChatTypingIndicatorStopped WebhookEventType = "chat.typing_indicator.stopped"
const WebhookEventTypePhoneNumberStatusUpdated WebhookEventType = "phone_number.status_updated"
const WebhookEventTypeCallInitiated WebhookEventType = "call.initiated"
const WebhookEventTypeCallRinging WebhookEventType = "call.ringing"
const WebhookEventTypeCallAnswered WebhookEventType = "call.answered"
const WebhookEventTypeCallEnded WebhookEventType = "call.ended"
const WebhookEventTypeCallFailed WebhookEventType = "call.failed"
const WebhookEventTypeCallDeclined WebhookEventType = "call.declined"
const WebhookEventTypeCallNoAnswer WebhookEventType = "call.no_answer"
PartnerID string

Partner identifier. Present on all webhooks for cross-referencing.

TraceID string

Trace ID for debugging and correlation across systems.

WebhookVersion string

Date-based webhook payload version. Determined by the ?version= query parameter in your webhook subscription URL. If no version parameter is specified, defaults based on subscription creation date.

type ChatGroupNameUpdateFailedWebhookEvent struct{…}

Complete webhook payload for chat.group_name_update_failed events

APIVersion string

API version for the webhook payload format

CreatedAt Time

When the event was created

formatdate-time
Data ChatGroupNameUpdateFailedWebhookEventData

Error details for chat.group_name_update_failed webhook events. See WebhookErrorCode for the full error code reference.

ChatID string

Chat identifier (UUID) of the group chat

ErrorCode int64

Error codes in webhook failure events (3007, 4001).

FailedAt Time

When the failure was detected

formatdate-time
EventID string

Unique identifier for this event (for deduplication)

formatuuid

Valid webhook event types that can be subscribed to.

Note: message.edited is only delivered to subscriptions using webhook_version: "2026-02-03". Subscribing to this event on a v2025 subscription will not produce any deliveries.

One of the following:
const WebhookEventTypeMessageSent WebhookEventType = "message.sent"
const WebhookEventTypeMessageReceived WebhookEventType = "message.received"
const WebhookEventTypeMessageRead WebhookEventType = "message.read"
const WebhookEventTypeMessageDelivered WebhookEventType = "message.delivered"
const WebhookEventTypeMessageFailed WebhookEventType = "message.failed"
const WebhookEventTypeMessageEdited WebhookEventType = "message.edited"
const WebhookEventTypeReactionAdded WebhookEventType = "reaction.added"
const WebhookEventTypeReactionRemoved WebhookEventType = "reaction.removed"
const WebhookEventTypeParticipantAdded WebhookEventType = "participant.added"
const WebhookEventTypeParticipantRemoved WebhookEventType = "participant.removed"
const WebhookEventTypeChatCreated WebhookEventType = "chat.created"
const WebhookEventTypeChatGroupNameUpdated WebhookEventType = "chat.group_name_updated"
const WebhookEventTypeChatGroupIconUpdated WebhookEventType = "chat.group_icon_updated"
const WebhookEventTypeChatGroupNameUpdateFailed WebhookEventType = "chat.group_name_update_failed"
const WebhookEventTypeChatGroupIconUpdateFailed WebhookEventType = "chat.group_icon_update_failed"
const WebhookEventTypeChatTypingIndicatorStarted WebhookEventType = "chat.typing_indicator.started"
const WebhookEventTypeChatTypingIndicatorStopped WebhookEventType = "chat.typing_indicator.stopped"
const WebhookEventTypePhoneNumberStatusUpdated WebhookEventType = "phone_number.status_updated"
const WebhookEventTypeCallInitiated WebhookEventType = "call.initiated"
const WebhookEventTypeCallRinging WebhookEventType = "call.ringing"
const WebhookEventTypeCallAnswered WebhookEventType = "call.answered"
const WebhookEventTypeCallEnded WebhookEventType = "call.ended"
const WebhookEventTypeCallFailed WebhookEventType = "call.failed"
const WebhookEventTypeCallDeclined WebhookEventType = "call.declined"
const WebhookEventTypeCallNoAnswer WebhookEventType = "call.no_answer"
PartnerID string

Partner identifier. Present on all webhooks for cross-referencing.

TraceID string

Trace ID for debugging and correlation across systems.

WebhookVersion string

Date-based webhook payload version. Determined by the ?version= query parameter in your webhook subscription URL. If no version parameter is specified, defaults based on subscription creation date.

type ChatGroupIconUpdateFailedWebhookEvent struct{…}

Complete webhook payload for chat.group_icon_update_failed events

APIVersion string

API version for the webhook payload format

CreatedAt Time

When the event was created

formatdate-time
Data ChatGroupIconUpdateFailedWebhookEventData

Error details for chat.group_icon_update_failed webhook events. See WebhookErrorCode for the full error code reference.

ChatID string

Chat identifier (UUID) of the group chat

ErrorCode int64

Error codes in webhook failure events (3007, 4001).

FailedAt Time

When the failure was detected

formatdate-time
EventID string

Unique identifier for this event (for deduplication)

formatuuid

Valid webhook event types that can be subscribed to.

Note: message.edited is only delivered to subscriptions using webhook_version: "2026-02-03". Subscribing to this event on a v2025 subscription will not produce any deliveries.

One of the following:
const WebhookEventTypeMessageSent WebhookEventType = "message.sent"
const WebhookEventTypeMessageReceived WebhookEventType = "message.received"
const WebhookEventTypeMessageRead WebhookEventType = "message.read"
const WebhookEventTypeMessageDelivered WebhookEventType = "message.delivered"
const WebhookEventTypeMessageFailed WebhookEventType = "message.failed"
const WebhookEventTypeMessageEdited WebhookEventType = "message.edited"
const WebhookEventTypeReactionAdded WebhookEventType = "reaction.added"
const WebhookEventTypeReactionRemoved WebhookEventType = "reaction.removed"
const WebhookEventTypeParticipantAdded WebhookEventType = "participant.added"
const WebhookEventTypeParticipantRemoved WebhookEventType = "participant.removed"
const WebhookEventTypeChatCreated WebhookEventType = "chat.created"
const WebhookEventTypeChatGroupNameUpdated WebhookEventType = "chat.group_name_updated"
const WebhookEventTypeChatGroupIconUpdated WebhookEventType = "chat.group_icon_updated"
const WebhookEventTypeChatGroupNameUpdateFailed WebhookEventType = "chat.group_name_update_failed"
const WebhookEventTypeChatGroupIconUpdateFailed WebhookEventType = "chat.group_icon_update_failed"
const WebhookEventTypeChatTypingIndicatorStarted WebhookEventType = "chat.typing_indicator.started"
const WebhookEventTypeChatTypingIndicatorStopped WebhookEventType = "chat.typing_indicator.stopped"
const WebhookEventTypePhoneNumberStatusUpdated WebhookEventType = "phone_number.status_updated"
const WebhookEventTypeCallInitiated WebhookEventType = "call.initiated"
const WebhookEventTypeCallRinging WebhookEventType = "call.ringing"
const WebhookEventTypeCallAnswered WebhookEventType = "call.answered"
const WebhookEventTypeCallEnded WebhookEventType = "call.ended"
const WebhookEventTypeCallFailed WebhookEventType = "call.failed"
const WebhookEventTypeCallDeclined WebhookEventType = "call.declined"
const WebhookEventTypeCallNoAnswer WebhookEventType = "call.no_answer"
PartnerID string

Partner identifier. Present on all webhooks for cross-referencing.

TraceID string

Trace ID for debugging and correlation across systems.

WebhookVersion string

Date-based webhook payload version. Determined by the ?version= query parameter in your webhook subscription URL. If no version parameter is specified, defaults based on subscription creation date.

type ChatTypingIndicatorStartedWebhookEvent struct{…}

Complete webhook payload for chat.typing_indicator.started events

APIVersion string

API version for the webhook payload format

CreatedAt Time

When the event was created

formatdate-time
Data ChatTypingIndicatorStartedWebhookEventData

Payload for chat.typing_indicator.started webhook events

ChatID string

Chat identifier

formatuuid
EventID string

Unique identifier for this event (for deduplication)

formatuuid

Valid webhook event types that can be subscribed to.

Note: message.edited is only delivered to subscriptions using webhook_version: "2026-02-03". Subscribing to this event on a v2025 subscription will not produce any deliveries.

One of the following:
const WebhookEventTypeMessageSent WebhookEventType = "message.sent"
const WebhookEventTypeMessageReceived WebhookEventType = "message.received"
const WebhookEventTypeMessageRead WebhookEventType = "message.read"
const WebhookEventTypeMessageDelivered WebhookEventType = "message.delivered"
const WebhookEventTypeMessageFailed WebhookEventType = "message.failed"
const WebhookEventTypeMessageEdited WebhookEventType = "message.edited"
const WebhookEventTypeReactionAdded WebhookEventType = "reaction.added"
const WebhookEventTypeReactionRemoved WebhookEventType = "reaction.removed"
const WebhookEventTypeParticipantAdded WebhookEventType = "participant.added"
const WebhookEventTypeParticipantRemoved WebhookEventType = "participant.removed"
const WebhookEventTypeChatCreated WebhookEventType = "chat.created"
const WebhookEventTypeChatGroupNameUpdated WebhookEventType = "chat.group_name_updated"
const WebhookEventTypeChatGroupIconUpdated WebhookEventType = "chat.group_icon_updated"
const WebhookEventTypeChatGroupNameUpdateFailed WebhookEventType = "chat.group_name_update_failed"
const WebhookEventTypeChatGroupIconUpdateFailed WebhookEventType = "chat.group_icon_update_failed"
const WebhookEventTypeChatTypingIndicatorStarted WebhookEventType = "chat.typing_indicator.started"
const WebhookEventTypeChatTypingIndicatorStopped WebhookEventType = "chat.typing_indicator.stopped"
const WebhookEventTypePhoneNumberStatusUpdated WebhookEventType = "phone_number.status_updated"
const WebhookEventTypeCallInitiated WebhookEventType = "call.initiated"
const WebhookEventTypeCallRinging WebhookEventType = "call.ringing"
const WebhookEventTypeCallAnswered WebhookEventType = "call.answered"
const WebhookEventTypeCallEnded WebhookEventType = "call.ended"
const WebhookEventTypeCallFailed WebhookEventType = "call.failed"
const WebhookEventTypeCallDeclined WebhookEventType = "call.declined"
const WebhookEventTypeCallNoAnswer WebhookEventType = "call.no_answer"
PartnerID string

Partner identifier. Present on all webhooks for cross-referencing.

TraceID string

Trace ID for debugging and correlation across systems.

WebhookVersion string

Date-based webhook payload version. Determined by the ?version= query parameter in your webhook subscription URL. If no version parameter is specified, defaults based on subscription creation date.

type ChatTypingIndicatorStoppedWebhookEvent struct{…}

Complete webhook payload for chat.typing_indicator.stopped events

APIVersion string

API version for the webhook payload format

CreatedAt Time

When the event was created

formatdate-time
Data ChatTypingIndicatorStoppedWebhookEventData

Payload for chat.typing_indicator.stopped webhook events

ChatID string

Chat identifier

formatuuid
EventID string

Unique identifier for this event (for deduplication)

formatuuid

Valid webhook event types that can be subscribed to.

Note: message.edited is only delivered to subscriptions using webhook_version: "2026-02-03". Subscribing to this event on a v2025 subscription will not produce any deliveries.

One of the following:
const WebhookEventTypeMessageSent WebhookEventType = "message.sent"
const WebhookEventTypeMessageReceived WebhookEventType = "message.received"
const WebhookEventTypeMessageRead WebhookEventType = "message.read"
const WebhookEventTypeMessageDelivered WebhookEventType = "message.delivered"
const WebhookEventTypeMessageFailed WebhookEventType = "message.failed"
const WebhookEventTypeMessageEdited WebhookEventType = "message.edited"
const WebhookEventTypeReactionAdded WebhookEventType = "reaction.added"
const WebhookEventTypeReactionRemoved WebhookEventType = "reaction.removed"
const WebhookEventTypeParticipantAdded WebhookEventType = "participant.added"
const WebhookEventTypeParticipantRemoved WebhookEventType = "participant.removed"
const WebhookEventTypeChatCreated WebhookEventType = "chat.created"
const WebhookEventTypeChatGroupNameUpdated WebhookEventType = "chat.group_name_updated"
const WebhookEventTypeChatGroupIconUpdated WebhookEventType = "chat.group_icon_updated"
const WebhookEventTypeChatGroupNameUpdateFailed WebhookEventType = "chat.group_name_update_failed"
const WebhookEventTypeChatGroupIconUpdateFailed WebhookEventType = "chat.group_icon_update_failed"
const WebhookEventTypeChatTypingIndicatorStarted WebhookEventType = "chat.typing_indicator.started"
const WebhookEventTypeChatTypingIndicatorStopped WebhookEventType = "chat.typing_indicator.stopped"
const WebhookEventTypePhoneNumberStatusUpdated WebhookEventType = "phone_number.status_updated"
const WebhookEventTypeCallInitiated WebhookEventType = "call.initiated"
const WebhookEventTypeCallRinging WebhookEventType = "call.ringing"
const WebhookEventTypeCallAnswered WebhookEventType = "call.answered"
const WebhookEventTypeCallEnded WebhookEventType = "call.ended"
const WebhookEventTypeCallFailed WebhookEventType = "call.failed"
const WebhookEventTypeCallDeclined WebhookEventType = "call.declined"
const WebhookEventTypeCallNoAnswer WebhookEventType = "call.no_answer"
PartnerID string

Partner identifier. Present on all webhooks for cross-referencing.

TraceID string

Trace ID for debugging and correlation across systems.

WebhookVersion string

Date-based webhook payload version. Determined by the ?version= query parameter in your webhook subscription URL. If no version parameter is specified, defaults based on subscription creation date.

type PhoneNumberStatusUpdatedWebhookEvent struct{…}

Complete webhook payload for phone_number.status_updated events

APIVersion string

API version for the webhook payload format

CreatedAt Time

When the event was created

formatdate-time
Data PhoneNumberStatusUpdatedWebhookEventData

Payload for phone_number.status_updated webhook events

ChangedAt Time

When the status change occurred

formatdate-time
NewHealthStatus string

The new line health status

One of the following:
const PhoneNumberStatusUpdatedWebhookEventDataNewHealthStatusHealthy PhoneNumberStatusUpdatedWebhookEventDataNewHealthStatus = "HEALTHY"
const PhoneNumberStatusUpdatedWebhookEventDataNewHealthStatusAtRisk PhoneNumberStatusUpdatedWebhookEventDataNewHealthStatus = "AT_RISK"
const PhoneNumberStatusUpdatedWebhookEventDataNewHealthStatusCritical PhoneNumberStatusUpdatedWebhookEventDataNewHealthStatus = "CRITICAL"
NewStatus string

The new service status

One of the following:
const PhoneNumberStatusUpdatedWebhookEventDataNewStatusActive PhoneNumberStatusUpdatedWebhookEventDataNewStatus = "ACTIVE"
const PhoneNumberStatusUpdatedWebhookEventDataNewStatusFlagged PhoneNumberStatusUpdatedWebhookEventDataNewStatus = "FLAGGED"
PhoneNumber string

Phone number in E.164 format

PreviousHealthStatus string

The previous line health status

One of the following:
const PhoneNumberStatusUpdatedWebhookEventDataPreviousHealthStatusHealthy PhoneNumberStatusUpdatedWebhookEventDataPreviousHealthStatus = "HEALTHY"
const PhoneNumberStatusUpdatedWebhookEventDataPreviousHealthStatusAtRisk PhoneNumberStatusUpdatedWebhookEventDataPreviousHealthStatus = "AT_RISK"
const PhoneNumberStatusUpdatedWebhookEventDataPreviousHealthStatusCritical PhoneNumberStatusUpdatedWebhookEventDataPreviousHealthStatus = "CRITICAL"
PreviousStatus string

The previous service status

One of the following:
const PhoneNumberStatusUpdatedWebhookEventDataPreviousStatusActive PhoneNumberStatusUpdatedWebhookEventDataPreviousStatus = "ACTIVE"
const PhoneNumberStatusUpdatedWebhookEventDataPreviousStatusFlagged PhoneNumberStatusUpdatedWebhookEventDataPreviousStatus = "FLAGGED"
EventID string

Unique identifier for this event (for deduplication)

formatuuid
EventType PhoneNumberStatusUpdatedWebhookEventEventType

The type of event

One of the following:
const PhoneNumberStatusUpdatedWebhookEventEventTypeMessageSent PhoneNumberStatusUpdatedWebhookEventEventType = "message.sent"
const PhoneNumberStatusUpdatedWebhookEventEventTypeMessageReceived PhoneNumberStatusUpdatedWebhookEventEventType = "message.received"
const PhoneNumberStatusUpdatedWebhookEventEventTypeMessageRead PhoneNumberStatusUpdatedWebhookEventEventType = "message.read"
const PhoneNumberStatusUpdatedWebhookEventEventTypeMessageDelivered PhoneNumberStatusUpdatedWebhookEventEventType = "message.delivered"
const PhoneNumberStatusUpdatedWebhookEventEventTypeMessageFailed PhoneNumberStatusUpdatedWebhookEventEventType = "message.failed"
const PhoneNumberStatusUpdatedWebhookEventEventTypeMessageEdited PhoneNumberStatusUpdatedWebhookEventEventType = "message.edited"
const PhoneNumberStatusUpdatedWebhookEventEventTypeReactionAdded PhoneNumberStatusUpdatedWebhookEventEventType = "reaction.added"
const PhoneNumberStatusUpdatedWebhookEventEventTypeReactionRemoved PhoneNumberStatusUpdatedWebhookEventEventType = "reaction.removed"
const PhoneNumberStatusUpdatedWebhookEventEventTypeParticipantAdded PhoneNumberStatusUpdatedWebhookEventEventType = "participant.added"
const PhoneNumberStatusUpdatedWebhookEventEventTypeParticipantRemoved PhoneNumberStatusUpdatedWebhookEventEventType = "participant.removed"
const PhoneNumberStatusUpdatedWebhookEventEventTypeChatCreated PhoneNumberStatusUpdatedWebhookEventEventType = "chat.created"
const PhoneNumberStatusUpdatedWebhookEventEventTypeChatGroupNameUpdated PhoneNumberStatusUpdatedWebhookEventEventType = "chat.group_name_updated"
const PhoneNumberStatusUpdatedWebhookEventEventTypeChatGroupIconUpdated PhoneNumberStatusUpdatedWebhookEventEventType = "chat.group_icon_updated"
const PhoneNumberStatusUpdatedWebhookEventEventTypeChatGroupNameUpdateFailed PhoneNumberStatusUpdatedWebhookEventEventType = "chat.group_name_update_failed"
const PhoneNumberStatusUpdatedWebhookEventEventTypeChatGroupIconUpdateFailed PhoneNumberStatusUpdatedWebhookEventEventType = "chat.group_icon_update_failed"
const PhoneNumberStatusUpdatedWebhookEventEventTypeChatTypingIndicatorStarted PhoneNumberStatusUpdatedWebhookEventEventType = "chat.typing_indicator.started"
const PhoneNumberStatusUpdatedWebhookEventEventTypeChatTypingIndicatorStopped PhoneNumberStatusUpdatedWebhookEventEventType = "chat.typing_indicator.stopped"
const PhoneNumberStatusUpdatedWebhookEventEventTypePhoneNumberStatusUpdated PhoneNumberStatusUpdatedWebhookEventEventType = "phone_number.status_updated"
const PhoneNumberStatusUpdatedWebhookEventEventTypeCallInitiated PhoneNumberStatusUpdatedWebhookEventEventType = "call.initiated"
const PhoneNumberStatusUpdatedWebhookEventEventTypeCallRinging PhoneNumberStatusUpdatedWebhookEventEventType = "call.ringing"
const PhoneNumberStatusUpdatedWebhookEventEventTypeCallAnswered PhoneNumberStatusUpdatedWebhookEventEventType = "call.answered"
const PhoneNumberStatusUpdatedWebhookEventEventTypeCallEnded PhoneNumberStatusUpdatedWebhookEventEventType = "call.ended"
const PhoneNumberStatusUpdatedWebhookEventEventTypeCallFailed PhoneNumberStatusUpdatedWebhookEventEventType = "call.failed"
const PhoneNumberStatusUpdatedWebhookEventEventTypeCallDeclined PhoneNumberStatusUpdatedWebhookEventEventType = "call.declined"
const PhoneNumberStatusUpdatedWebhookEventEventTypeCallNoAnswer PhoneNumberStatusUpdatedWebhookEventEventType = "call.no_answer"
PartnerID string

Partner identifier. Present on all webhooks for cross-referencing.

TraceID string

Trace ID for debugging and correlation across systems.

WebhookVersion string

Date-based webhook payload version. Determined by the ?version= query parameter in your webhook subscription URL. If no version parameter is specified, defaults based on subscription creation date.

type EventsWebhookEventUnion interface{…}

Complete webhook payload for message.sent events (2026-02-03 format)

One of the following:
type MessageSentWebhookEvent struct{…}

Complete webhook payload for message.sent events (2026-02-03 format)

APIVersion string

API version for the webhook payload format

CreatedAt Time

When the event was created

formatdate-time

Unified payload for message webhooks when using webhook_version: "2026-02-03".

This schema is used for message.sent, message.received, message.delivered, and message.read events when the subscription URL includes ?version=2026-02-03.

Key differences from V1 (2025-01-01):

  • direction: “inbound” or “outbound” instead of is_from_me boolean
  • sender_handle: Full handle object for the sender
  • chat: Nested object with id, is_group, and owner_handle
  • Message fields (id, parts, effect, etc.) are at the top level, not nested in message

Timestamps indicate the message state:

  • message.sent: sent_at set, delivered_at=null, read_at=null
  • message.received: sent_at set, delivered_at=null, read_at=null
  • message.delivered: sent_at set, delivered_at set, read_at=null
  • message.read: sent_at set, delivered_at set, read_at set
ID string

Message identifier

formatuuid
Chat MessageEventV2Chat

Chat information

ID string

Chat identifier

formatuuid
HealthStatus MessageEventV2ChatHealthStatus

[BETA] Current health for a chat. Always present — chats start at HEALTHY and may shift based on engagement and delivery signals on the conversation. Many AT_RISK or CRITICAL chats on a single line increase the risk of line flagging.

Switch on status to gate sends or surface line health in your UI — the enum is the long-term contract. Each status carries a doc_url that deep-links to the relevant section of the Chat Health guide.

See the Chat Health guide for what each status means and how to react.

DocURL string

Deep-link to the relevant section of the Chat Health guide for this status.

formaturi
Status string

Current health bucket for the chat. See the Chat Health guide for what each value means and how to react. doc_url deep-links to the relevant section.

One of the following:
const MessageEventV2ChatHealthStatusStatusHealthy MessageEventV2ChatHealthStatusStatus = "HEALTHY"
const MessageEventV2ChatHealthStatusStatusAtRisk MessageEventV2ChatHealthStatusStatus = "AT_RISK"
const MessageEventV2ChatHealthStatusStatusCritical MessageEventV2ChatHealthStatusStatus = "CRITICAL"
const MessageEventV2ChatHealthStatusStatusOptedOut MessageEventV2ChatHealthStatusStatus = "OPTED_OUT"
UpdatedAt Time

When this status last changed.

formatdate-time
IsGroup boolOptional

Whether this is a group chat

OwnerHandle ChatHandleOptional

Your phone number’s handle. Always has is_me=true.

ID string

Unique identifier for this handle

formatuuid
Handle string

Phone number (E.164) or email address of the participant

JoinedAt Time

When this participant joined the chat

formatdate-time
Service ServiceType

Messaging service type

One of the following:
const ServiceTypeiMessage ServiceType = "iMessage"
const ServiceTypeSMS ServiceType = "SMS"
const ServiceTypeRCS ServiceType = "RCS"
IsMe boolOptional

Whether this handle belongs to the sender (your phone number)

LeftAt TimeOptional

When they left (if applicable)

formatdate-time
Status ChatHandleStatusOptional

Participant status

One of the following:
const ChatHandleStatusActive ChatHandleStatus = "active"
const ChatHandleStatusLeft ChatHandleStatus = "left"
const ChatHandleStatusRemoved ChatHandleStatus = "removed"
Direction MessageEventV2Direction

Message direction - “outbound” if sent by you, “inbound” if received

One of the following:
const MessageEventV2DirectionInbound MessageEventV2Direction = "inbound"
const MessageEventV2DirectionOutbound MessageEventV2Direction = "outbound"
Parts []MessageEventV2PartUnion

Message parts (text and/or media)

One of the following:
type SchemasTextPartResponse struct{…}

A text message part

Type SchemasTextPartResponseType

Indicates this is a text message part

Value string

The text content

TextDecorations []TextDecorationOptional

Text decorations applied to character ranges in the value

Range []int64

Character range [start, end) in the value string where the decoration applies. start is inclusive, end is exclusive. Characters are measured as UTF-16 code units. Most characters count as 1; some emoji count as 2.

Animation TextDecorationAnimationOptional

Animated text effect to apply. Mutually exclusive with style.

One of the following:
const TextDecorationAnimationBig TextDecorationAnimation = "big"
const TextDecorationAnimationSmall TextDecorationAnimation = "small"
const TextDecorationAnimationShake TextDecorationAnimation = "shake"
const TextDecorationAnimationNod TextDecorationAnimation = "nod"
const TextDecorationAnimationExplode TextDecorationAnimation = "explode"
const TextDecorationAnimationRipple TextDecorationAnimation = "ripple"
const TextDecorationAnimationBloom TextDecorationAnimation = "bloom"
const TextDecorationAnimationJitter TextDecorationAnimation = "jitter"
Style TextDecorationStyleOptional

Text style to apply. Mutually exclusive with animation.

One of the following:
const TextDecorationStyleBold TextDecorationStyle = "bold"
const TextDecorationStyleItalic TextDecorationStyle = "italic"
const TextDecorationStyleStrikethrough TextDecorationStyle = "strikethrough"
const TextDecorationStyleUnderline TextDecorationStyle = "underline"
type SchemasMediaPartResponse struct{…}

A media attachment part

ID string

Unique attachment identifier

formatuuid
Filename string

Original filename

MimeType string

MIME type of the file

SizeBytes int64

File size in bytes

Type SchemasMediaPartResponseType

Indicates this is a media attachment part

URL string

Presigned URL for downloading the attachment (expires in 1 hour).

formaturi
type MessageEventV2PartLink struct{…}

A rich link preview part

Type Link

Indicates this is a rich link preview part

Value string

The URL

SenderHandle ChatHandle

The handle that sent this message

ID string

Unique identifier for this handle

formatuuid
Handle string

Phone number (E.164) or email address of the participant

JoinedAt Time

When this participant joined the chat

formatdate-time
Service ServiceType

Messaging service type

One of the following:
const ServiceTypeiMessage ServiceType = "iMessage"
const ServiceTypeSMS ServiceType = "SMS"
const ServiceTypeRCS ServiceType = "RCS"
IsMe boolOptional

Whether this handle belongs to the sender (your phone number)

LeftAt TimeOptional

When they left (if applicable)

formatdate-time
Status ChatHandleStatusOptional

Participant status

One of the following:
const ChatHandleStatusActive ChatHandleStatus = "active"
const ChatHandleStatusLeft ChatHandleStatus = "left"
const ChatHandleStatusRemoved ChatHandleStatus = "removed"
Service ServiceType

Messaging service type

One of the following:
const ServiceTypeiMessage ServiceType = "iMessage"
const ServiceTypeSMS ServiceType = "SMS"
const ServiceTypeRCS ServiceType = "RCS"
DeliveredAt TimeOptional

When the message was delivered. Null if not yet delivered.

formatdate-time
Effect SchemasMessageEffectOptional

iMessage effect applied to a message (screen or bubble animation)

Name stringOptional

Effect name (confetti, fireworks, slam, gentle, etc.)

Type SchemasMessageEffectTypeOptional

Effect category

One of the following:
const SchemasMessageEffectTypeScreen SchemasMessageEffectType = "screen"
const SchemasMessageEffectTypeBubble SchemasMessageEffectType = "bubble"
IdempotencyKey stringOptional

Idempotency key for deduplication of outbound messages.

PreferredService MessageEventV2PreferredServiceOptional

Preferred messaging service type. Includes “auto” for default fallback behavior.

One of the following:
const MessageEventV2PreferredServiceiMessage MessageEventV2PreferredService = "iMessage"
const MessageEventV2PreferredServiceSMS MessageEventV2PreferredService = "SMS"
const MessageEventV2PreferredServiceRCS MessageEventV2PreferredService = "RCS"
const MessageEventV2PreferredServiceAuto MessageEventV2PreferredService = "auto"
ReadAt TimeOptional

When the message was read. Null if not yet read.

formatdate-time
ReplyTo MessageEventV2ReplyToOptional

Reference to the message this is replying to (for threaded replies)

MessageID stringOptional

ID of the message being replied to

formatuuid
PartIndex int64Optional

Index of the part being replied to

formatint32
minimum0
SentAt TimeOptional

When the message was sent. Null if not yet sent.

formatdate-time
EventID string

Unique identifier for this event (for deduplication)

formatuuid

Valid webhook event types that can be subscribed to.

Note: message.edited is only delivered to subscriptions using webhook_version: "2026-02-03". Subscribing to this event on a v2025 subscription will not produce any deliveries.

One of the following:
const WebhookEventTypeMessageSent WebhookEventType = "message.sent"
const WebhookEventTypeMessageReceived WebhookEventType = "message.received"
const WebhookEventTypeMessageRead WebhookEventType = "message.read"
const WebhookEventTypeMessageDelivered WebhookEventType = "message.delivered"
const WebhookEventTypeMessageFailed WebhookEventType = "message.failed"
const WebhookEventTypeMessageEdited WebhookEventType = "message.edited"
const WebhookEventTypeReactionAdded WebhookEventType = "reaction.added"
const WebhookEventTypeReactionRemoved WebhookEventType = "reaction.removed"
const WebhookEventTypeParticipantAdded WebhookEventType = "participant.added"
const WebhookEventTypeParticipantRemoved WebhookEventType = "participant.removed"
const WebhookEventTypeChatCreated WebhookEventType = "chat.created"
const WebhookEventTypeChatGroupNameUpdated WebhookEventType = "chat.group_name_updated"
const WebhookEventTypeChatGroupIconUpdated WebhookEventType = "chat.group_icon_updated"
const WebhookEventTypeChatGroupNameUpdateFailed WebhookEventType = "chat.group_name_update_failed"
const WebhookEventTypeChatGroupIconUpdateFailed WebhookEventType = "chat.group_icon_update_failed"
const WebhookEventTypeChatTypingIndicatorStarted WebhookEventType = "chat.typing_indicator.started"
const WebhookEventTypeChatTypingIndicatorStopped WebhookEventType = "chat.typing_indicator.stopped"
const WebhookEventTypePhoneNumberStatusUpdated WebhookEventType = "phone_number.status_updated"
const WebhookEventTypeCallInitiated WebhookEventType = "call.initiated"
const WebhookEventTypeCallRinging WebhookEventType = "call.ringing"
const WebhookEventTypeCallAnswered WebhookEventType = "call.answered"
const WebhookEventTypeCallEnded WebhookEventType = "call.ended"
const WebhookEventTypeCallFailed WebhookEventType = "call.failed"
const WebhookEventTypeCallDeclined WebhookEventType = "call.declined"
const WebhookEventTypeCallNoAnswer WebhookEventType = "call.no_answer"
PartnerID string

Partner identifier. Present on all webhooks for cross-referencing.

TraceID string

Trace ID for debugging and correlation across systems.

WebhookVersion string

Date-based webhook payload version. Determined by the ?version= query parameter in your webhook subscription URL. If no version parameter is specified, defaults based on subscription creation date.

type MessageReceivedWebhookEvent struct{…}

Complete webhook payload for message.received events (2026-02-03 format)

APIVersion string

API version for the webhook payload format

CreatedAt Time

When the event was created

formatdate-time

Unified payload for message webhooks when using webhook_version: "2026-02-03".

This schema is used for message.sent, message.received, message.delivered, and message.read events when the subscription URL includes ?version=2026-02-03.

Key differences from V1 (2025-01-01):

  • direction: “inbound” or “outbound” instead of is_from_me boolean
  • sender_handle: Full handle object for the sender
  • chat: Nested object with id, is_group, and owner_handle
  • Message fields (id, parts, effect, etc.) are at the top level, not nested in message

Timestamps indicate the message state:

  • message.sent: sent_at set, delivered_at=null, read_at=null
  • message.received: sent_at set, delivered_at=null, read_at=null
  • message.delivered: sent_at set, delivered_at set, read_at=null
  • message.read: sent_at set, delivered_at set, read_at set
ID string

Message identifier

formatuuid
Chat MessageEventV2Chat

Chat information

ID string

Chat identifier

formatuuid
HealthStatus MessageEventV2ChatHealthStatus

[BETA] Current health for a chat. Always present — chats start at HEALTHY and may shift based on engagement and delivery signals on the conversation. Many AT_RISK or CRITICAL chats on a single line increase the risk of line flagging.

Switch on status to gate sends or surface line health in your UI — the enum is the long-term contract. Each status carries a doc_url that deep-links to the relevant section of the Chat Health guide.

See the Chat Health guide for what each status means and how to react.

DocURL string

Deep-link to the relevant section of the Chat Health guide for this status.

formaturi
Status string

Current health bucket for the chat. See the Chat Health guide for what each value means and how to react. doc_url deep-links to the relevant section.

One of the following:
const MessageEventV2ChatHealthStatusStatusHealthy MessageEventV2ChatHealthStatusStatus = "HEALTHY"
const MessageEventV2ChatHealthStatusStatusAtRisk MessageEventV2ChatHealthStatusStatus = "AT_RISK"
const MessageEventV2ChatHealthStatusStatusCritical MessageEventV2ChatHealthStatusStatus = "CRITICAL"
const MessageEventV2ChatHealthStatusStatusOptedOut MessageEventV2ChatHealthStatusStatus = "OPTED_OUT"
UpdatedAt Time

When this status last changed.

formatdate-time
IsGroup boolOptional

Whether this is a group chat

OwnerHandle ChatHandleOptional

Your phone number’s handle. Always has is_me=true.

ID string

Unique identifier for this handle

formatuuid
Handle string

Phone number (E.164) or email address of the participant

JoinedAt Time

When this participant joined the chat

formatdate-time
Service ServiceType

Messaging service type

One of the following:
const ServiceTypeiMessage ServiceType = "iMessage"
const ServiceTypeSMS ServiceType = "SMS"
const ServiceTypeRCS ServiceType = "RCS"
IsMe boolOptional

Whether this handle belongs to the sender (your phone number)

LeftAt TimeOptional

When they left (if applicable)

formatdate-time
Status ChatHandleStatusOptional

Participant status

One of the following:
const ChatHandleStatusActive ChatHandleStatus = "active"
const ChatHandleStatusLeft ChatHandleStatus = "left"
const ChatHandleStatusRemoved ChatHandleStatus = "removed"
Direction MessageEventV2Direction

Message direction - “outbound” if sent by you, “inbound” if received

One of the following:
const MessageEventV2DirectionInbound MessageEventV2Direction = "inbound"
const MessageEventV2DirectionOutbound MessageEventV2Direction = "outbound"
Parts []MessageEventV2PartUnion

Message parts (text and/or media)

One of the following:
type SchemasTextPartResponse struct{…}

A text message part

Type SchemasTextPartResponseType

Indicates this is a text message part

Value string

The text content

TextDecorations []TextDecorationOptional

Text decorations applied to character ranges in the value

Range []int64

Character range [start, end) in the value string where the decoration applies. start is inclusive, end is exclusive. Characters are measured as UTF-16 code units. Most characters count as 1; some emoji count as 2.

Animation TextDecorationAnimationOptional

Animated text effect to apply. Mutually exclusive with style.

One of the following:
const TextDecorationAnimationBig TextDecorationAnimation = "big"
const TextDecorationAnimationSmall TextDecorationAnimation = "small"
const TextDecorationAnimationShake TextDecorationAnimation = "shake"
const TextDecorationAnimationNod TextDecorationAnimation = "nod"
const TextDecorationAnimationExplode TextDecorationAnimation = "explode"
const TextDecorationAnimationRipple TextDecorationAnimation = "ripple"
const TextDecorationAnimationBloom TextDecorationAnimation = "bloom"
const TextDecorationAnimationJitter TextDecorationAnimation = "jitter"
Style TextDecorationStyleOptional

Text style to apply. Mutually exclusive with animation.

One of the following:
const TextDecorationStyleBold TextDecorationStyle = "bold"
const TextDecorationStyleItalic TextDecorationStyle = "italic"
const TextDecorationStyleStrikethrough TextDecorationStyle = "strikethrough"
const TextDecorationStyleUnderline TextDecorationStyle = "underline"
type SchemasMediaPartResponse struct{…}

A media attachment part

ID string

Unique attachment identifier

formatuuid
Filename string

Original filename

MimeType string

MIME type of the file

SizeBytes int64

File size in bytes

Type SchemasMediaPartResponseType

Indicates this is a media attachment part

URL string

Presigned URL for downloading the attachment (expires in 1 hour).

formaturi
type MessageEventV2PartLink struct{…}

A rich link preview part

Type Link

Indicates this is a rich link preview part

Value string

The URL

SenderHandle ChatHandle

The handle that sent this message

ID string

Unique identifier for this handle

formatuuid
Handle string

Phone number (E.164) or email address of the participant

JoinedAt Time

When this participant joined the chat

formatdate-time
Service ServiceType

Messaging service type

One of the following:
const ServiceTypeiMessage ServiceType = "iMessage"
const ServiceTypeSMS ServiceType = "SMS"
const ServiceTypeRCS ServiceType = "RCS"
IsMe boolOptional

Whether this handle belongs to the sender (your phone number)

LeftAt TimeOptional

When they left (if applicable)

formatdate-time
Status ChatHandleStatusOptional

Participant status

One of the following:
const ChatHandleStatusActive ChatHandleStatus = "active"
const ChatHandleStatusLeft ChatHandleStatus = "left"
const ChatHandleStatusRemoved ChatHandleStatus = "removed"
Service ServiceType

Messaging service type

One of the following:
const ServiceTypeiMessage ServiceType = "iMessage"
const ServiceTypeSMS ServiceType = "SMS"
const ServiceTypeRCS ServiceType = "RCS"
DeliveredAt TimeOptional

When the message was delivered. Null if not yet delivered.

formatdate-time
Effect SchemasMessageEffectOptional

iMessage effect applied to a message (screen or bubble animation)

Name stringOptional

Effect name (confetti, fireworks, slam, gentle, etc.)

Type SchemasMessageEffectTypeOptional

Effect category

One of the following:
const SchemasMessageEffectTypeScreen SchemasMessageEffectType = "screen"
const SchemasMessageEffectTypeBubble SchemasMessageEffectType = "bubble"
IdempotencyKey stringOptional

Idempotency key for deduplication of outbound messages.

PreferredService MessageEventV2PreferredServiceOptional

Preferred messaging service type. Includes “auto” for default fallback behavior.

One of the following:
const MessageEventV2PreferredServiceiMessage MessageEventV2PreferredService = "iMessage"
const MessageEventV2PreferredServiceSMS MessageEventV2PreferredService = "SMS"
const MessageEventV2PreferredServiceRCS MessageEventV2PreferredService = "RCS"
const MessageEventV2PreferredServiceAuto MessageEventV2PreferredService = "auto"
ReadAt TimeOptional

When the message was read. Null if not yet read.

formatdate-time
ReplyTo MessageEventV2ReplyToOptional

Reference to the message this is replying to (for threaded replies)

MessageID stringOptional

ID of the message being replied to

formatuuid
PartIndex int64Optional

Index of the part being replied to

formatint32
minimum0
SentAt TimeOptional

When the message was sent. Null if not yet sent.

formatdate-time
EventID string

Unique identifier for this event (for deduplication)

formatuuid

Valid webhook event types that can be subscribed to.

Note: message.edited is only delivered to subscriptions using webhook_version: "2026-02-03". Subscribing to this event on a v2025 subscription will not produce any deliveries.

One of the following:
const WebhookEventTypeMessageSent WebhookEventType = "message.sent"
const WebhookEventTypeMessageReceived WebhookEventType = "message.received"
const WebhookEventTypeMessageRead WebhookEventType = "message.read"
const WebhookEventTypeMessageDelivered WebhookEventType = "message.delivered"
const WebhookEventTypeMessageFailed WebhookEventType = "message.failed"
const WebhookEventTypeMessageEdited WebhookEventType = "message.edited"
const WebhookEventTypeReactionAdded WebhookEventType = "reaction.added"
const WebhookEventTypeReactionRemoved WebhookEventType = "reaction.removed"
const WebhookEventTypeParticipantAdded WebhookEventType = "participant.added"
const WebhookEventTypeParticipantRemoved WebhookEventType = "participant.removed"
const WebhookEventTypeChatCreated WebhookEventType = "chat.created"
const WebhookEventTypeChatGroupNameUpdated WebhookEventType = "chat.group_name_updated"
const WebhookEventTypeChatGroupIconUpdated WebhookEventType = "chat.group_icon_updated"
const WebhookEventTypeChatGroupNameUpdateFailed WebhookEventType = "chat.group_name_update_failed"
const WebhookEventTypeChatGroupIconUpdateFailed WebhookEventType = "chat.group_icon_update_failed"
const WebhookEventTypeChatTypingIndicatorStarted WebhookEventType = "chat.typing_indicator.started"
const WebhookEventTypeChatTypingIndicatorStopped WebhookEventType = "chat.typing_indicator.stopped"
const WebhookEventTypePhoneNumberStatusUpdated WebhookEventType = "phone_number.status_updated"
const WebhookEventTypeCallInitiated WebhookEventType = "call.initiated"
const WebhookEventTypeCallRinging WebhookEventType = "call.ringing"
const WebhookEventTypeCallAnswered WebhookEventType = "call.answered"
const WebhookEventTypeCallEnded WebhookEventType = "call.ended"
const WebhookEventTypeCallFailed WebhookEventType = "call.failed"
const WebhookEventTypeCallDeclined WebhookEventType = "call.declined"
const WebhookEventTypeCallNoAnswer WebhookEventType = "call.no_answer"
PartnerID string

Partner identifier. Present on all webhooks for cross-referencing.

TraceID string

Trace ID for debugging and correlation across systems.

WebhookVersion string

Date-based webhook payload version. Determined by the ?version= query parameter in your webhook subscription URL. If no version parameter is specified, defaults based on subscription creation date.

type MessageReadWebhookEvent struct{…}

Complete webhook payload for message.read events (2026-02-03 format)

APIVersion string

API version for the webhook payload format

CreatedAt Time

When the event was created

formatdate-time

Unified payload for message webhooks when using webhook_version: "2026-02-03".

This schema is used for message.sent, message.received, message.delivered, and message.read events when the subscription URL includes ?version=2026-02-03.

Key differences from V1 (2025-01-01):

  • direction: “inbound” or “outbound” instead of is_from_me boolean
  • sender_handle: Full handle object for the sender
  • chat: Nested object with id, is_group, and owner_handle
  • Message fields (id, parts, effect, etc.) are at the top level, not nested in message

Timestamps indicate the message state:

  • message.sent: sent_at set, delivered_at=null, read_at=null
  • message.received: sent_at set, delivered_at=null, read_at=null
  • message.delivered: sent_at set, delivered_at set, read_at=null
  • message.read: sent_at set, delivered_at set, read_at set
ID string

Message identifier

formatuuid
Chat MessageEventV2Chat

Chat information

ID string

Chat identifier

formatuuid
HealthStatus MessageEventV2ChatHealthStatus

[BETA] Current health for a chat. Always present — chats start at HEALTHY and may shift based on engagement and delivery signals on the conversation. Many AT_RISK or CRITICAL chats on a single line increase the risk of line flagging.

Switch on status to gate sends or surface line health in your UI — the enum is the long-term contract. Each status carries a doc_url that deep-links to the relevant section of the Chat Health guide.

See the Chat Health guide for what each status means and how to react.

DocURL string

Deep-link to the relevant section of the Chat Health guide for this status.

formaturi
Status string

Current health bucket for the chat. See the Chat Health guide for what each value means and how to react. doc_url deep-links to the relevant section.

One of the following:
const MessageEventV2ChatHealthStatusStatusHealthy MessageEventV2ChatHealthStatusStatus = "HEALTHY"
const MessageEventV2ChatHealthStatusStatusAtRisk MessageEventV2ChatHealthStatusStatus = "AT_RISK"
const MessageEventV2ChatHealthStatusStatusCritical MessageEventV2ChatHealthStatusStatus = "CRITICAL"
const MessageEventV2ChatHealthStatusStatusOptedOut MessageEventV2ChatHealthStatusStatus = "OPTED_OUT"
UpdatedAt Time

When this status last changed.

formatdate-time
IsGroup boolOptional

Whether this is a group chat

OwnerHandle ChatHandleOptional

Your phone number’s handle. Always has is_me=true.

ID string

Unique identifier for this handle

formatuuid
Handle string

Phone number (E.164) or email address of the participant

JoinedAt Time

When this participant joined the chat

formatdate-time
Service ServiceType

Messaging service type

One of the following:
const ServiceTypeiMessage ServiceType = "iMessage"
const ServiceTypeSMS ServiceType = "SMS"
const ServiceTypeRCS ServiceType = "RCS"
IsMe boolOptional

Whether this handle belongs to the sender (your phone number)

LeftAt TimeOptional

When they left (if applicable)

formatdate-time
Status ChatHandleStatusOptional

Participant status

One of the following:
const ChatHandleStatusActive ChatHandleStatus = "active"
const ChatHandleStatusLeft ChatHandleStatus = "left"
const ChatHandleStatusRemoved ChatHandleStatus = "removed"
Direction MessageEventV2Direction

Message direction - “outbound” if sent by you, “inbound” if received

One of the following:
const MessageEventV2DirectionInbound MessageEventV2Direction = "inbound"
const MessageEventV2DirectionOutbound MessageEventV2Direction = "outbound"
Parts []MessageEventV2PartUnion

Message parts (text and/or media)

One of the following:
type SchemasTextPartResponse struct{…}

A text message part

Type SchemasTextPartResponseType

Indicates this is a text message part

Value string

The text content

TextDecorations []TextDecorationOptional

Text decorations applied to character ranges in the value

Range []int64

Character range [start, end) in the value string where the decoration applies. start is inclusive, end is exclusive. Characters are measured as UTF-16 code units. Most characters count as 1; some emoji count as 2.

Animation TextDecorationAnimationOptional

Animated text effect to apply. Mutually exclusive with style.

One of the following:
const TextDecorationAnimationBig TextDecorationAnimation = "big"
const TextDecorationAnimationSmall TextDecorationAnimation = "small"
const TextDecorationAnimationShake TextDecorationAnimation = "shake"
const TextDecorationAnimationNod TextDecorationAnimation = "nod"
const TextDecorationAnimationExplode TextDecorationAnimation = "explode"
const TextDecorationAnimationRipple TextDecorationAnimation = "ripple"
const TextDecorationAnimationBloom TextDecorationAnimation = "bloom"
const TextDecorationAnimationJitter TextDecorationAnimation = "jitter"
Style TextDecorationStyleOptional

Text style to apply. Mutually exclusive with animation.

One of the following:
const TextDecorationStyleBold TextDecorationStyle = "bold"
const TextDecorationStyleItalic TextDecorationStyle = "italic"
const TextDecorationStyleStrikethrough TextDecorationStyle = "strikethrough"
const TextDecorationStyleUnderline TextDecorationStyle = "underline"
type SchemasMediaPartResponse struct{…}

A media attachment part

ID string

Unique attachment identifier

formatuuid
Filename string

Original filename

MimeType string

MIME type of the file

SizeBytes int64

File size in bytes

Type SchemasMediaPartResponseType

Indicates this is a media attachment part

URL string

Presigned URL for downloading the attachment (expires in 1 hour).

formaturi
type MessageEventV2PartLink struct{…}

A rich link preview part

Type Link

Indicates this is a rich link preview part

Value string

The URL

SenderHandle ChatHandle

The handle that sent this message

ID string

Unique identifier for this handle

formatuuid
Handle string

Phone number (E.164) or email address of the participant

JoinedAt Time

When this participant joined the chat

formatdate-time
Service ServiceType

Messaging service type

One of the following:
const ServiceTypeiMessage ServiceType = "iMessage"
const ServiceTypeSMS ServiceType = "SMS"
const ServiceTypeRCS ServiceType = "RCS"
IsMe boolOptional

Whether this handle belongs to the sender (your phone number)

LeftAt TimeOptional

When they left (if applicable)

formatdate-time
Status ChatHandleStatusOptional

Participant status

One of the following:
const ChatHandleStatusActive ChatHandleStatus = "active"
const ChatHandleStatusLeft ChatHandleStatus = "left"
const ChatHandleStatusRemoved ChatHandleStatus = "removed"
Service ServiceType

Messaging service type

One of the following:
const ServiceTypeiMessage ServiceType = "iMessage"
const ServiceTypeSMS ServiceType = "SMS"
const ServiceTypeRCS ServiceType = "RCS"
DeliveredAt TimeOptional

When the message was delivered. Null if not yet delivered.

formatdate-time
Effect SchemasMessageEffectOptional

iMessage effect applied to a message (screen or bubble animation)

Name stringOptional

Effect name (confetti, fireworks, slam, gentle, etc.)

Type SchemasMessageEffectTypeOptional

Effect category

One of the following:
const SchemasMessageEffectTypeScreen SchemasMessageEffectType = "screen"
const SchemasMessageEffectTypeBubble SchemasMessageEffectType = "bubble"
IdempotencyKey stringOptional

Idempotency key for deduplication of outbound messages.

PreferredService MessageEventV2PreferredServiceOptional

Preferred messaging service type. Includes “auto” for default fallback behavior.

One of the following:
const MessageEventV2PreferredServiceiMessage MessageEventV2PreferredService = "iMessage"
const MessageEventV2PreferredServiceSMS MessageEventV2PreferredService = "SMS"
const MessageEventV2PreferredServiceRCS MessageEventV2PreferredService = "RCS"
const MessageEventV2PreferredServiceAuto MessageEventV2PreferredService = "auto"
ReadAt TimeOptional

When the message was read. Null if not yet read.

formatdate-time
ReplyTo MessageEventV2ReplyToOptional

Reference to the message this is replying to (for threaded replies)

MessageID stringOptional

ID of the message being replied to

formatuuid
PartIndex int64Optional

Index of the part being replied to

formatint32
minimum0
SentAt TimeOptional

When the message was sent. Null if not yet sent.

formatdate-time
EventID string

Unique identifier for this event (for deduplication)

formatuuid

Valid webhook event types that can be subscribed to.

Note: message.edited is only delivered to subscriptions using webhook_version: "2026-02-03". Subscribing to this event on a v2025 subscription will not produce any deliveries.

One of the following:
const WebhookEventTypeMessageSent WebhookEventType = "message.sent"
const WebhookEventTypeMessageReceived WebhookEventType = "message.received"
const WebhookEventTypeMessageRead WebhookEventType = "message.read"
const WebhookEventTypeMessageDelivered WebhookEventType = "message.delivered"
const WebhookEventTypeMessageFailed WebhookEventType = "message.failed"
const WebhookEventTypeMessageEdited WebhookEventType = "message.edited"
const WebhookEventTypeReactionAdded WebhookEventType = "reaction.added"
const WebhookEventTypeReactionRemoved WebhookEventType = "reaction.removed"
const WebhookEventTypeParticipantAdded WebhookEventType = "participant.added"
const WebhookEventTypeParticipantRemoved WebhookEventType = "participant.removed"
const WebhookEventTypeChatCreated WebhookEventType = "chat.created"
const WebhookEventTypeChatGroupNameUpdated WebhookEventType = "chat.group_name_updated"
const WebhookEventTypeChatGroupIconUpdated WebhookEventType = "chat.group_icon_updated"
const WebhookEventTypeChatGroupNameUpdateFailed WebhookEventType = "chat.group_name_update_failed"
const WebhookEventTypeChatGroupIconUpdateFailed WebhookEventType = "chat.group_icon_update_failed"
const WebhookEventTypeChatTypingIndicatorStarted WebhookEventType = "chat.typing_indicator.started"
const WebhookEventTypeChatTypingIndicatorStopped WebhookEventType = "chat.typing_indicator.stopped"
const WebhookEventTypePhoneNumberStatusUpdated WebhookEventType = "phone_number.status_updated"
const WebhookEventTypeCallInitiated WebhookEventType = "call.initiated"
const WebhookEventTypeCallRinging WebhookEventType = "call.ringing"
const WebhookEventTypeCallAnswered WebhookEventType = "call.answered"
const WebhookEventTypeCallEnded WebhookEventType = "call.ended"
const WebhookEventTypeCallFailed WebhookEventType = "call.failed"
const WebhookEventTypeCallDeclined WebhookEventType = "call.declined"
const WebhookEventTypeCallNoAnswer WebhookEventType = "call.no_answer"
PartnerID string

Partner identifier. Present on all webhooks for cross-referencing.

TraceID string

Trace ID for debugging and correlation across systems.

WebhookVersion string

Date-based webhook payload version. Determined by the ?version= query parameter in your webhook subscription URL. If no version parameter is specified, defaults based on subscription creation date.

type MessageDeliveredWebhookEvent struct{…}

Complete webhook payload for message.delivered events (2026-02-03 format)

APIVersion string

API version for the webhook payload format

CreatedAt Time

When the event was created

formatdate-time

Unified payload for message webhooks when using webhook_version: "2026-02-03".

This schema is used for message.sent, message.received, message.delivered, and message.read events when the subscription URL includes ?version=2026-02-03.

Key differences from V1 (2025-01-01):

  • direction: “inbound” or “outbound” instead of is_from_me boolean
  • sender_handle: Full handle object for the sender
  • chat: Nested object with id, is_group, and owner_handle
  • Message fields (id, parts, effect, etc.) are at the top level, not nested in message

Timestamps indicate the message state:

  • message.sent: sent_at set, delivered_at=null, read_at=null
  • message.received: sent_at set, delivered_at=null, read_at=null
  • message.delivered: sent_at set, delivered_at set, read_at=null
  • message.read: sent_at set, delivered_at set, read_at set
ID string

Message identifier

formatuuid
Chat MessageEventV2Chat

Chat information

ID string

Chat identifier

formatuuid
HealthStatus MessageEventV2ChatHealthStatus

[BETA] Current health for a chat. Always present — chats start at HEALTHY and may shift based on engagement and delivery signals on the conversation. Many AT_RISK or CRITICAL chats on a single line increase the risk of line flagging.

Switch on status to gate sends or surface line health in your UI — the enum is the long-term contract. Each status carries a doc_url that deep-links to the relevant section of the Chat Health guide.

See the Chat Health guide for what each status means and how to react.

DocURL string

Deep-link to the relevant section of the Chat Health guide for this status.

formaturi
Status string

Current health bucket for the chat. See the Chat Health guide for what each value means and how to react. doc_url deep-links to the relevant section.

One of the following:
const MessageEventV2ChatHealthStatusStatusHealthy MessageEventV2ChatHealthStatusStatus = "HEALTHY"
const MessageEventV2ChatHealthStatusStatusAtRisk MessageEventV2ChatHealthStatusStatus = "AT_RISK"
const MessageEventV2ChatHealthStatusStatusCritical MessageEventV2ChatHealthStatusStatus = "CRITICAL"
const MessageEventV2ChatHealthStatusStatusOptedOut MessageEventV2ChatHealthStatusStatus = "OPTED_OUT"
UpdatedAt Time

When this status last changed.

formatdate-time
IsGroup boolOptional

Whether this is a group chat

OwnerHandle ChatHandleOptional

Your phone number’s handle. Always has is_me=true.

ID string

Unique identifier for this handle

formatuuid
Handle string

Phone number (E.164) or email address of the participant

JoinedAt Time

When this participant joined the chat

formatdate-time
Service ServiceType

Messaging service type

One of the following:
const ServiceTypeiMessage ServiceType = "iMessage"
const ServiceTypeSMS ServiceType = "SMS"
const ServiceTypeRCS ServiceType = "RCS"
IsMe boolOptional

Whether this handle belongs to the sender (your phone number)

LeftAt TimeOptional

When they left (if applicable)

formatdate-time
Status ChatHandleStatusOptional

Participant status

One of the following:
const ChatHandleStatusActive ChatHandleStatus = "active"
const ChatHandleStatusLeft ChatHandleStatus = "left"
const ChatHandleStatusRemoved ChatHandleStatus = "removed"
Direction MessageEventV2Direction

Message direction - “outbound” if sent by you, “inbound” if received

One of the following:
const MessageEventV2DirectionInbound MessageEventV2Direction = "inbound"
const MessageEventV2DirectionOutbound MessageEventV2Direction = "outbound"
Parts []MessageEventV2PartUnion

Message parts (text and/or media)

One of the following:
type SchemasTextPartResponse struct{…}

A text message part

Type SchemasTextPartResponseType

Indicates this is a text message part

Value string

The text content

TextDecorations []TextDecorationOptional

Text decorations applied to character ranges in the value

Range []int64

Character range [start, end) in the value string where the decoration applies. start is inclusive, end is exclusive. Characters are measured as UTF-16 code units. Most characters count as 1; some emoji count as 2.

Animation TextDecorationAnimationOptional

Animated text effect to apply. Mutually exclusive with style.

One of the following:
const TextDecorationAnimationBig TextDecorationAnimation = "big"
const TextDecorationAnimationSmall TextDecorationAnimation = "small"
const TextDecorationAnimationShake TextDecorationAnimation = "shake"
const TextDecorationAnimationNod TextDecorationAnimation = "nod"
const TextDecorationAnimationExplode TextDecorationAnimation = "explode"
const TextDecorationAnimationRipple TextDecorationAnimation = "ripple"
const TextDecorationAnimationBloom TextDecorationAnimation = "bloom"
const TextDecorationAnimationJitter TextDecorationAnimation = "jitter"
Style TextDecorationStyleOptional

Text style to apply. Mutually exclusive with animation.

One of the following:
const TextDecorationStyleBold TextDecorationStyle = "bold"
const TextDecorationStyleItalic TextDecorationStyle = "italic"
const TextDecorationStyleStrikethrough TextDecorationStyle = "strikethrough"
const TextDecorationStyleUnderline TextDecorationStyle = "underline"
type SchemasMediaPartResponse struct{…}

A media attachment part

ID string

Unique attachment identifier

formatuuid
Filename string

Original filename

MimeType string

MIME type of the file

SizeBytes int64

File size in bytes

Type SchemasMediaPartResponseType

Indicates this is a media attachment part

URL string

Presigned URL for downloading the attachment (expires in 1 hour).

formaturi
type MessageEventV2PartLink struct{…}

A rich link preview part

Type Link

Indicates this is a rich link preview part

Value string

The URL

SenderHandle ChatHandle

The handle that sent this message

ID string

Unique identifier for this handle

formatuuid
Handle string

Phone number (E.164) or email address of the participant

JoinedAt Time

When this participant joined the chat

formatdate-time
Service ServiceType

Messaging service type

One of the following:
const ServiceTypeiMessage ServiceType = "iMessage"
const ServiceTypeSMS ServiceType = "SMS"
const ServiceTypeRCS ServiceType = "RCS"
IsMe boolOptional

Whether this handle belongs to the sender (your phone number)

LeftAt TimeOptional

When they left (if applicable)

formatdate-time
Status ChatHandleStatusOptional

Participant status

One of the following:
const ChatHandleStatusActive ChatHandleStatus = "active"
const ChatHandleStatusLeft ChatHandleStatus = "left"
const ChatHandleStatusRemoved ChatHandleStatus = "removed"
Service ServiceType

Messaging service type

One of the following:
const ServiceTypeiMessage ServiceType = "iMessage"
const ServiceTypeSMS ServiceType = "SMS"
const ServiceTypeRCS ServiceType = "RCS"
DeliveredAt TimeOptional

When the message was delivered. Null if not yet delivered.

formatdate-time
Effect SchemasMessageEffectOptional

iMessage effect applied to a message (screen or bubble animation)

Name stringOptional

Effect name (confetti, fireworks, slam, gentle, etc.)

Type SchemasMessageEffectTypeOptional

Effect category

One of the following:
const SchemasMessageEffectTypeScreen SchemasMessageEffectType = "screen"
const SchemasMessageEffectTypeBubble SchemasMessageEffectType = "bubble"
IdempotencyKey stringOptional

Idempotency key for deduplication of outbound messages.

PreferredService MessageEventV2PreferredServiceOptional

Preferred messaging service type. Includes “auto” for default fallback behavior.

One of the following:
const MessageEventV2PreferredServiceiMessage MessageEventV2PreferredService = "iMessage"
const MessageEventV2PreferredServiceSMS MessageEventV2PreferredService = "SMS"
const MessageEventV2PreferredServiceRCS MessageEventV2PreferredService = "RCS"
const MessageEventV2PreferredServiceAuto MessageEventV2PreferredService = "auto"
ReadAt TimeOptional

When the message was read. Null if not yet read.

formatdate-time
ReplyTo MessageEventV2ReplyToOptional

Reference to the message this is replying to (for threaded replies)

MessageID stringOptional

ID of the message being replied to

formatuuid
PartIndex int64Optional

Index of the part being replied to

formatint32
minimum0
SentAt TimeOptional

When the message was sent. Null if not yet sent.

formatdate-time
EventID string

Unique identifier for this event (for deduplication)

formatuuid

Valid webhook event types that can be subscribed to.

Note: message.edited is only delivered to subscriptions using webhook_version: "2026-02-03". Subscribing to this event on a v2025 subscription will not produce any deliveries.

One of the following:
const WebhookEventTypeMessageSent WebhookEventType = "message.sent"
const WebhookEventTypeMessageReceived WebhookEventType = "message.received"
const WebhookEventTypeMessageRead WebhookEventType = "message.read"
const WebhookEventTypeMessageDelivered WebhookEventType = "message.delivered"
const WebhookEventTypeMessageFailed WebhookEventType = "message.failed"
const WebhookEventTypeMessageEdited WebhookEventType = "message.edited"
const WebhookEventTypeReactionAdded WebhookEventType = "reaction.added"
const WebhookEventTypeReactionRemoved WebhookEventType = "reaction.removed"
const WebhookEventTypeParticipantAdded WebhookEventType = "participant.added"
const WebhookEventTypeParticipantRemoved WebhookEventType = "participant.removed"
const WebhookEventTypeChatCreated WebhookEventType = "chat.created"
const WebhookEventTypeChatGroupNameUpdated WebhookEventType = "chat.group_name_updated"
const WebhookEventTypeChatGroupIconUpdated WebhookEventType = "chat.group_icon_updated"
const WebhookEventTypeChatGroupNameUpdateFailed WebhookEventType = "chat.group_name_update_failed"
const WebhookEventTypeChatGroupIconUpdateFailed WebhookEventType = "chat.group_icon_update_failed"
const WebhookEventTypeChatTypingIndicatorStarted WebhookEventType = "chat.typing_indicator.started"
const WebhookEventTypeChatTypingIndicatorStopped WebhookEventType = "chat.typing_indicator.stopped"
const WebhookEventTypePhoneNumberStatusUpdated WebhookEventType = "phone_number.status_updated"
const WebhookEventTypeCallInitiated WebhookEventType = "call.initiated"
const WebhookEventTypeCallRinging WebhookEventType = "call.ringing"
const WebhookEventTypeCallAnswered WebhookEventType = "call.answered"
const WebhookEventTypeCallEnded WebhookEventType = "call.ended"
const WebhookEventTypeCallFailed WebhookEventType = "call.failed"
const WebhookEventTypeCallDeclined WebhookEventType = "call.declined"
const WebhookEventTypeCallNoAnswer WebhookEventType = "call.no_answer"
PartnerID string

Partner identifier. Present on all webhooks for cross-referencing.

TraceID string

Trace ID for debugging and correlation across systems.

WebhookVersion string

Date-based webhook payload version. Determined by the ?version= query parameter in your webhook subscription URL. If no version parameter is specified, defaults based on subscription creation date.

type MessageFailedWebhookEvent struct{…}

Complete webhook payload for message.failed events

APIVersion string

API version for the webhook payload format

CreatedAt Time

When the event was created

formatdate-time
Data MessageFailedWebhookEventData

Error details for message.failed webhook events. See WebhookErrorCode for the full error code reference.

Code int64

Error codes in webhook failure events (3007, 4001).

FailedAt Time

When the failure was detected

formatdate-time
ChatID stringOptional

Chat identifier (UUID)

MessageID stringOptional

Message identifier (UUID)

Reason stringOptional

Human-readable description of the failure

EventID string

Unique identifier for this event (for deduplication)

formatuuid

Valid webhook event types that can be subscribed to.

Note: message.edited is only delivered to subscriptions using webhook_version: "2026-02-03". Subscribing to this event on a v2025 subscription will not produce any deliveries.

One of the following:
const WebhookEventTypeMessageSent WebhookEventType = "message.sent"
const WebhookEventTypeMessageReceived WebhookEventType = "message.received"
const WebhookEventTypeMessageRead WebhookEventType = "message.read"
const WebhookEventTypeMessageDelivered WebhookEventType = "message.delivered"
const WebhookEventTypeMessageFailed WebhookEventType = "message.failed"
const WebhookEventTypeMessageEdited WebhookEventType = "message.edited"
const WebhookEventTypeReactionAdded WebhookEventType = "reaction.added"
const WebhookEventTypeReactionRemoved WebhookEventType = "reaction.removed"
const WebhookEventTypeParticipantAdded WebhookEventType = "participant.added"
const WebhookEventTypeParticipantRemoved WebhookEventType = "participant.removed"
const WebhookEventTypeChatCreated WebhookEventType = "chat.created"
const WebhookEventTypeChatGroupNameUpdated WebhookEventType = "chat.group_name_updated"
const WebhookEventTypeChatGroupIconUpdated WebhookEventType = "chat.group_icon_updated"
const WebhookEventTypeChatGroupNameUpdateFailed WebhookEventType = "chat.group_name_update_failed"
const WebhookEventTypeChatGroupIconUpdateFailed WebhookEventType = "chat.group_icon_update_failed"
const WebhookEventTypeChatTypingIndicatorStarted WebhookEventType = "chat.typing_indicator.started"
const WebhookEventTypeChatTypingIndicatorStopped WebhookEventType = "chat.typing_indicator.stopped"
const WebhookEventTypePhoneNumberStatusUpdated WebhookEventType = "phone_number.status_updated"
const WebhookEventTypeCallInitiated WebhookEventType = "call.initiated"
const WebhookEventTypeCallRinging WebhookEventType = "call.ringing"
const WebhookEventTypeCallAnswered WebhookEventType = "call.answered"
const WebhookEventTypeCallEnded WebhookEventType = "call.ended"
const WebhookEventTypeCallFailed WebhookEventType = "call.failed"
const WebhookEventTypeCallDeclined WebhookEventType = "call.declined"
const WebhookEventTypeCallNoAnswer WebhookEventType = "call.no_answer"
PartnerID string

Partner identifier. Present on all webhooks for cross-referencing.

TraceID string

Trace ID for debugging and correlation across systems.

WebhookVersion string

Date-based webhook payload version. Determined by the ?version= query parameter in your webhook subscription URL. If no version parameter is specified, defaults based on subscription creation date.

type MessageEditedWebhookEvent struct{…}

Complete webhook payload for message.edited events (2026-02-03 format only)

APIVersion string

API version for the webhook payload format

CreatedAt Time

When the event was created

formatdate-time
Data MessageEditedWebhookEventData

Payload for message.edited events (2026-02-03 format).

Describes which part of a message was edited and when. Only text parts can be edited. Only available for subscriptions using webhook_version: "2026-02-03".

ID string

Message identifier

formatuuid
Chat MessageEditedWebhookEventDataChat

Chat context

ID string

Chat identifier

formatuuid
HealthStatus MessageEditedWebhookEventDataChatHealthStatus

[BETA] Current health for a chat. Always present — chats start at HEALTHY and may shift based on engagement and delivery signals on the conversation. Many AT_RISK or CRITICAL chats on a single line increase the risk of line flagging.

Switch on status to gate sends or surface line health in your UI — the enum is the long-term contract. Each status carries a doc_url that deep-links to the relevant section of the Chat Health guide.

See the Chat Health guide for what each status means and how to react.

DocURL string

Deep-link to the relevant section of the Chat Health guide for this status.

formaturi
Status string

Current health bucket for the chat. See the Chat Health guide for what each value means and how to react. doc_url deep-links to the relevant section.

One of the following:
const MessageEditedWebhookEventDataChatHealthStatusStatusHealthy MessageEditedWebhookEventDataChatHealthStatusStatus = "HEALTHY"
const MessageEditedWebhookEventDataChatHealthStatusStatusAtRisk MessageEditedWebhookEventDataChatHealthStatusStatus = "AT_RISK"
const MessageEditedWebhookEventDataChatHealthStatusStatusCritical MessageEditedWebhookEventDataChatHealthStatusStatus = "CRITICAL"
const MessageEditedWebhookEventDataChatHealthStatusStatusOptedOut MessageEditedWebhookEventDataChatHealthStatusStatus = "OPTED_OUT"
UpdatedAt Time

When this status last changed.

formatdate-time
IsGroup bool

Whether this is a group chat

OwnerHandle ChatHandle

The handle that owns this chat (your phone number)

ID string

Unique identifier for this handle

formatuuid
Handle string

Phone number (E.164) or email address of the participant

JoinedAt Time

When this participant joined the chat

formatdate-time
Service ServiceType

Messaging service type

One of the following:
const ServiceTypeiMessage ServiceType = "iMessage"
const ServiceTypeSMS ServiceType = "SMS"
const ServiceTypeRCS ServiceType = "RCS"
IsMe boolOptional

Whether this handle belongs to the sender (your phone number)

LeftAt TimeOptional

When they left (if applicable)

formatdate-time
Status ChatHandleStatusOptional

Participant status

One of the following:
const ChatHandleStatusActive ChatHandleStatus = "active"
const ChatHandleStatusLeft ChatHandleStatus = "left"
const ChatHandleStatusRemoved ChatHandleStatus = "removed"
Direction string

“outbound” if you sent the original message, “inbound” if you received it

One of the following:
const MessageEditedWebhookEventDataDirectionOutbound MessageEditedWebhookEventDataDirection = "outbound"
const MessageEditedWebhookEventDataDirectionInbound MessageEditedWebhookEventDataDirection = "inbound"
EditedAt Time

When the edit occurred

formatdate-time
Part MessageEditedWebhookEventDataPart

The edited part

Index int64

Zero-based index of the edited part within the message

Text string

New text content of the part

SenderHandle ChatHandle

The handle that sent (and edited) this message

ID string

Unique identifier for this handle

formatuuid
Handle string

Phone number (E.164) or email address of the participant

JoinedAt Time

When this participant joined the chat

formatdate-time
Service ServiceType

Messaging service type

One of the following:
const ServiceTypeiMessage ServiceType = "iMessage"
const ServiceTypeSMS ServiceType = "SMS"
const ServiceTypeRCS ServiceType = "RCS"
IsMe boolOptional

Whether this handle belongs to the sender (your phone number)

LeftAt TimeOptional

When they left (if applicable)

formatdate-time
Status ChatHandleStatusOptional

Participant status

One of the following:
const ChatHandleStatusActive ChatHandleStatus = "active"
const ChatHandleStatusLeft ChatHandleStatus = "left"
const ChatHandleStatusRemoved ChatHandleStatus = "removed"
EventID string

Unique identifier for this event (for deduplication)

formatuuid

Valid webhook event types that can be subscribed to.

Note: message.edited is only delivered to subscriptions using webhook_version: "2026-02-03". Subscribing to this event on a v2025 subscription will not produce any deliveries.

One of the following:
const WebhookEventTypeMessageSent WebhookEventType = "message.sent"
const WebhookEventTypeMessageReceived WebhookEventType = "message.received"
const WebhookEventTypeMessageRead WebhookEventType = "message.read"
const WebhookEventTypeMessageDelivered WebhookEventType = "message.delivered"
const WebhookEventTypeMessageFailed WebhookEventType = "message.failed"
const WebhookEventTypeMessageEdited WebhookEventType = "message.edited"
const WebhookEventTypeReactionAdded WebhookEventType = "reaction.added"
const WebhookEventTypeReactionRemoved WebhookEventType = "reaction.removed"
const WebhookEventTypeParticipantAdded WebhookEventType = "participant.added"
const WebhookEventTypeParticipantRemoved WebhookEventType = "participant.removed"
const WebhookEventTypeChatCreated WebhookEventType = "chat.created"
const WebhookEventTypeChatGroupNameUpdated WebhookEventType = "chat.group_name_updated"
const WebhookEventTypeChatGroupIconUpdated WebhookEventType = "chat.group_icon_updated"
const WebhookEventTypeChatGroupNameUpdateFailed WebhookEventType = "chat.group_name_update_failed"
const WebhookEventTypeChatGroupIconUpdateFailed WebhookEventType = "chat.group_icon_update_failed"
const WebhookEventTypeChatTypingIndicatorStarted WebhookEventType = "chat.typing_indicator.started"
const WebhookEventTypeChatTypingIndicatorStopped WebhookEventType = "chat.typing_indicator.stopped"
const WebhookEventTypePhoneNumberStatusUpdated WebhookEventType = "phone_number.status_updated"
const WebhookEventTypeCallInitiated WebhookEventType = "call.initiated"
const WebhookEventTypeCallRinging WebhookEventType = "call.ringing"
const WebhookEventTypeCallAnswered WebhookEventType = "call.answered"
const WebhookEventTypeCallEnded WebhookEventType = "call.ended"
const WebhookEventTypeCallFailed WebhookEventType = "call.failed"
const WebhookEventTypeCallDeclined WebhookEventType = "call.declined"
const WebhookEventTypeCallNoAnswer WebhookEventType = "call.no_answer"
PartnerID string

Partner identifier. Present on all webhooks for cross-referencing.

TraceID string

Trace ID for debugging and correlation across systems.

WebhookVersion string

Date-based webhook payload version. Determined by the ?version= query parameter in your webhook subscription URL. If no version parameter is specified, defaults based on subscription creation date.

type ReactionAddedWebhookEvent struct{…}

Complete webhook payload for reaction.added events

APIVersion string

API version for the webhook payload format

CreatedAt Time

When the event was created

formatdate-time

Payload for reaction.added webhook events

IsFromMe bool

Whether this reaction was from the owner of the phone number (true) or from someone else (false)

ReactionType ReactionType

Type of reaction. Standard iMessage tapbacks are love, like, dislike, laugh, emphasize, question. Custom emoji reactions have type “custom” with the actual emoji in the custom_emoji field. Sticker reactions have type “sticker” with sticker attachment details in the sticker field.

One of the following:
const ReactionTypeLove ReactionType = "love"
const ReactionTypeLike ReactionType = "like"
const ReactionTypeDislike ReactionType = "dislike"
const ReactionTypeLaugh ReactionType = "laugh"
const ReactionTypeEmphasize ReactionType = "emphasize"
const ReactionTypeQuestion ReactionType = "question"
const ReactionTypeCustom ReactionType = "custom"
const ReactionTypeSticker ReactionType = "sticker"
ChatID stringOptional

Chat identifier (UUID)

CustomEmoji stringOptional

The actual emoji when reaction_type is “custom”. Null for standard tapbacks.

DeprecatedFrom stringOptional

DEPRECATED: Use from_handle instead. Phone number or email address of the person who added/removed the reaction.

FromHandle ChatHandleOptional

The person who added/removed the reaction as a full handle object

ID string

Unique identifier for this handle

formatuuid
Handle string

Phone number (E.164) or email address of the participant

JoinedAt Time

When this participant joined the chat

formatdate-time
Service ServiceType

Messaging service type

One of the following:
const ServiceTypeiMessage ServiceType = "iMessage"
const ServiceTypeSMS ServiceType = "SMS"
const ServiceTypeRCS ServiceType = "RCS"
IsMe boolOptional

Whether this handle belongs to the sender (your phone number)

LeftAt TimeOptional

When they left (if applicable)

formatdate-time
Status ChatHandleStatusOptional

Participant status

One of the following:
const ChatHandleStatusActive ChatHandleStatus = "active"
const ChatHandleStatusLeft ChatHandleStatus = "left"
const ChatHandleStatusRemoved ChatHandleStatus = "removed"
MessageID stringOptional

Message identifier (UUID) that the reaction was added to or removed from

PartIndex int64Optional

Index of the message part that was reacted to (0-based)

formatint32
minimum0
ReactedAt TimeOptional

When the reaction was added or removed

formatdate-time
Service ServiceTypeOptional

Messaging service type

One of the following:
const ServiceTypeiMessage ServiceType = "iMessage"
const ServiceTypeSMS ServiceType = "SMS"
const ServiceTypeRCS ServiceType = "RCS"
Sticker ReactionEventBaseStickerOptional

Sticker attachment details when reaction_type is “sticker”. Null for non-sticker reactions.

FileName stringOptional

Filename of the sticker

Height int64Optional

Sticker image height in pixels

MimeType stringOptional

MIME type of the sticker image

URL stringOptional

Presigned URL for downloading the sticker image (expires in 1 hour).

formaturi
Width int64Optional

Sticker image width in pixels

EventID string

Unique identifier for this event (for deduplication)

formatuuid

Valid webhook event types that can be subscribed to.

Note: message.edited is only delivered to subscriptions using webhook_version: "2026-02-03". Subscribing to this event on a v2025 subscription will not produce any deliveries.

One of the following:
const WebhookEventTypeMessageSent WebhookEventType = "message.sent"
const WebhookEventTypeMessageReceived WebhookEventType = "message.received"
const WebhookEventTypeMessageRead WebhookEventType = "message.read"
const WebhookEventTypeMessageDelivered WebhookEventType = "message.delivered"
const WebhookEventTypeMessageFailed WebhookEventType = "message.failed"
const WebhookEventTypeMessageEdited WebhookEventType = "message.edited"
const WebhookEventTypeReactionAdded WebhookEventType = "reaction.added"
const WebhookEventTypeReactionRemoved WebhookEventType = "reaction.removed"
const WebhookEventTypeParticipantAdded WebhookEventType = "participant.added"
const WebhookEventTypeParticipantRemoved WebhookEventType = "participant.removed"
const WebhookEventTypeChatCreated WebhookEventType = "chat.created"
const WebhookEventTypeChatGroupNameUpdated WebhookEventType = "chat.group_name_updated"
const WebhookEventTypeChatGroupIconUpdated WebhookEventType = "chat.group_icon_updated"
const WebhookEventTypeChatGroupNameUpdateFailed WebhookEventType = "chat.group_name_update_failed"
const WebhookEventTypeChatGroupIconUpdateFailed WebhookEventType = "chat.group_icon_update_failed"
const WebhookEventTypeChatTypingIndicatorStarted WebhookEventType = "chat.typing_indicator.started"
const WebhookEventTypeChatTypingIndicatorStopped WebhookEventType = "chat.typing_indicator.stopped"
const WebhookEventTypePhoneNumberStatusUpdated WebhookEventType = "phone_number.status_updated"
const WebhookEventTypeCallInitiated WebhookEventType = "call.initiated"
const WebhookEventTypeCallRinging WebhookEventType = "call.ringing"
const WebhookEventTypeCallAnswered WebhookEventType = "call.answered"
const WebhookEventTypeCallEnded WebhookEventType = "call.ended"
const WebhookEventTypeCallFailed WebhookEventType = "call.failed"
const WebhookEventTypeCallDeclined WebhookEventType = "call.declined"
const WebhookEventTypeCallNoAnswer WebhookEventType = "call.no_answer"
PartnerID string

Partner identifier. Present on all webhooks for cross-referencing.

TraceID string

Trace ID for debugging and correlation across systems.

WebhookVersion string

Date-based webhook payload version. Determined by the ?version= query parameter in your webhook subscription URL. If no version parameter is specified, defaults based on subscription creation date.

type ReactionRemovedWebhookEvent struct{…}

Complete webhook payload for reaction.removed events

APIVersion string

API version for the webhook payload format

CreatedAt Time

When the event was created

formatdate-time

Payload for reaction.removed webhook events

IsFromMe bool

Whether this reaction was from the owner of the phone number (true) or from someone else (false)

ReactionType ReactionType

Type of reaction. Standard iMessage tapbacks are love, like, dislike, laugh, emphasize, question. Custom emoji reactions have type “custom” with the actual emoji in the custom_emoji field. Sticker reactions have type “sticker” with sticker attachment details in the sticker field.

One of the following:
const ReactionTypeLove ReactionType = "love"
const ReactionTypeLike ReactionType = "like"
const ReactionTypeDislike ReactionType = "dislike"
const ReactionTypeLaugh ReactionType = "laugh"
const ReactionTypeEmphasize ReactionType = "emphasize"
const ReactionTypeQuestion ReactionType = "question"
const ReactionTypeCustom ReactionType = "custom"
const ReactionTypeSticker ReactionType = "sticker"
ChatID stringOptional

Chat identifier (UUID)

CustomEmoji stringOptional

The actual emoji when reaction_type is “custom”. Null for standard tapbacks.

DeprecatedFrom stringOptional

DEPRECATED: Use from_handle instead. Phone number or email address of the person who added/removed the reaction.

FromHandle ChatHandleOptional

The person who added/removed the reaction as a full handle object

ID string

Unique identifier for this handle

formatuuid
Handle string

Phone number (E.164) or email address of the participant

JoinedAt Time

When this participant joined the chat

formatdate-time
Service ServiceType

Messaging service type

One of the following:
const ServiceTypeiMessage ServiceType = "iMessage"
const ServiceTypeSMS ServiceType = "SMS"
const ServiceTypeRCS ServiceType = "RCS"
IsMe boolOptional

Whether this handle belongs to the sender (your phone number)

LeftAt TimeOptional

When they left (if applicable)

formatdate-time
Status ChatHandleStatusOptional

Participant status

One of the following:
const ChatHandleStatusActive ChatHandleStatus = "active"
const ChatHandleStatusLeft ChatHandleStatus = "left"
const ChatHandleStatusRemoved ChatHandleStatus = "removed"
MessageID stringOptional

Message identifier (UUID) that the reaction was added to or removed from

PartIndex int64Optional

Index of the message part that was reacted to (0-based)

formatint32
minimum0
ReactedAt TimeOptional

When the reaction was added or removed

formatdate-time
Service ServiceTypeOptional

Messaging service type

One of the following:
const ServiceTypeiMessage ServiceType = "iMessage"
const ServiceTypeSMS ServiceType = "SMS"
const ServiceTypeRCS ServiceType = "RCS"
Sticker ReactionEventBaseStickerOptional

Sticker attachment details when reaction_type is “sticker”. Null for non-sticker reactions.

FileName stringOptional

Filename of the sticker

Height int64Optional

Sticker image height in pixels

MimeType stringOptional

MIME type of the sticker image

URL stringOptional

Presigned URL for downloading the sticker image (expires in 1 hour).

formaturi
Width int64Optional

Sticker image width in pixels

EventID string

Unique identifier for this event (for deduplication)

formatuuid

Valid webhook event types that can be subscribed to.

Note: message.edited is only delivered to subscriptions using webhook_version: "2026-02-03". Subscribing to this event on a v2025 subscription will not produce any deliveries.

One of the following:
const WebhookEventTypeMessageSent WebhookEventType = "message.sent"
const WebhookEventTypeMessageReceived WebhookEventType = "message.received"
const WebhookEventTypeMessageRead WebhookEventType = "message.read"
const WebhookEventTypeMessageDelivered WebhookEventType = "message.delivered"
const WebhookEventTypeMessageFailed WebhookEventType = "message.failed"
const WebhookEventTypeMessageEdited WebhookEventType = "message.edited"
const WebhookEventTypeReactionAdded WebhookEventType = "reaction.added"
const WebhookEventTypeReactionRemoved WebhookEventType = "reaction.removed"
const WebhookEventTypeParticipantAdded WebhookEventType = "participant.added"
const WebhookEventTypeParticipantRemoved WebhookEventType = "participant.removed"
const WebhookEventTypeChatCreated WebhookEventType = "chat.created"
const WebhookEventTypeChatGroupNameUpdated WebhookEventType = "chat.group_name_updated"
const WebhookEventTypeChatGroupIconUpdated WebhookEventType = "chat.group_icon_updated"
const WebhookEventTypeChatGroupNameUpdateFailed WebhookEventType = "chat.group_name_update_failed"
const WebhookEventTypeChatGroupIconUpdateFailed WebhookEventType = "chat.group_icon_update_failed"
const WebhookEventTypeChatTypingIndicatorStarted WebhookEventType = "chat.typing_indicator.started"
const WebhookEventTypeChatTypingIndicatorStopped WebhookEventType = "chat.typing_indicator.stopped"
const WebhookEventTypePhoneNumberStatusUpdated WebhookEventType = "phone_number.status_updated"
const WebhookEventTypeCallInitiated WebhookEventType = "call.initiated"
const WebhookEventTypeCallRinging WebhookEventType = "call.ringing"
const WebhookEventTypeCallAnswered WebhookEventType = "call.answered"
const WebhookEventTypeCallEnded WebhookEventType = "call.ended"
const WebhookEventTypeCallFailed WebhookEventType = "call.failed"
const WebhookEventTypeCallDeclined WebhookEventType = "call.declined"
const WebhookEventTypeCallNoAnswer WebhookEventType = "call.no_answer"
PartnerID string

Partner identifier. Present on all webhooks for cross-referencing.

TraceID string

Trace ID for debugging and correlation across systems.

WebhookVersion string

Date-based webhook payload version. Determined by the ?version= query parameter in your webhook subscription URL. If no version parameter is specified, defaults based on subscription creation date.

type ParticipantAddedWebhookEvent struct{…}

Complete webhook payload for participant.added events

APIVersion string

API version for the webhook payload format

CreatedAt Time

When the event was created

formatdate-time
Data ParticipantAddedWebhookEventData

Payload for participant.added webhook events

DeprecatedHandle string

DEPRECATED: Use participant instead. Handle (phone number or email address) of the added participant.

AddedAt TimeOptional

When the participant was added

formatdate-time
ChatID stringOptional

Chat identifier (UUID) of the group chat

Participant ChatHandleOptional

The added participant as a full handle object

ID string

Unique identifier for this handle

formatuuid
Handle string

Phone number (E.164) or email address of the participant

JoinedAt Time

When this participant joined the chat

formatdate-time
Service ServiceType

Messaging service type

One of the following:
const ServiceTypeiMessage ServiceType = "iMessage"
const ServiceTypeSMS ServiceType = "SMS"
const ServiceTypeRCS ServiceType = "RCS"
IsMe boolOptional

Whether this handle belongs to the sender (your phone number)

LeftAt TimeOptional

When they left (if applicable)

formatdate-time
Status ChatHandleStatusOptional

Participant status

One of the following:
const ChatHandleStatusActive ChatHandleStatus = "active"
const ChatHandleStatusLeft ChatHandleStatus = "left"
const ChatHandleStatusRemoved ChatHandleStatus = "removed"
EventID string

Unique identifier for this event (for deduplication)

formatuuid

Valid webhook event types that can be subscribed to.

Note: message.edited is only delivered to subscriptions using webhook_version: "2026-02-03". Subscribing to this event on a v2025 subscription will not produce any deliveries.

One of the following:
const WebhookEventTypeMessageSent WebhookEventType = "message.sent"
const WebhookEventTypeMessageReceived WebhookEventType = "message.received"
const WebhookEventTypeMessageRead WebhookEventType = "message.read"
const WebhookEventTypeMessageDelivered WebhookEventType = "message.delivered"
const WebhookEventTypeMessageFailed WebhookEventType = "message.failed"
const WebhookEventTypeMessageEdited WebhookEventType = "message.edited"
const WebhookEventTypeReactionAdded WebhookEventType = "reaction.added"
const WebhookEventTypeReactionRemoved WebhookEventType = "reaction.removed"
const WebhookEventTypeParticipantAdded WebhookEventType = "participant.added"
const WebhookEventTypeParticipantRemoved WebhookEventType = "participant.removed"
const WebhookEventTypeChatCreated WebhookEventType = "chat.created"
const WebhookEventTypeChatGroupNameUpdated WebhookEventType = "chat.group_name_updated"
const WebhookEventTypeChatGroupIconUpdated WebhookEventType = "chat.group_icon_updated"
const WebhookEventTypeChatGroupNameUpdateFailed WebhookEventType = "chat.group_name_update_failed"
const WebhookEventTypeChatGroupIconUpdateFailed WebhookEventType = "chat.group_icon_update_failed"
const WebhookEventTypeChatTypingIndicatorStarted WebhookEventType = "chat.typing_indicator.started"
const WebhookEventTypeChatTypingIndicatorStopped WebhookEventType = "chat.typing_indicator.stopped"
const WebhookEventTypePhoneNumberStatusUpdated WebhookEventType = "phone_number.status_updated"
const WebhookEventTypeCallInitiated WebhookEventType = "call.initiated"
const WebhookEventTypeCallRinging WebhookEventType = "call.ringing"
const WebhookEventTypeCallAnswered WebhookEventType = "call.answered"
const WebhookEventTypeCallEnded WebhookEventType = "call.ended"
const WebhookEventTypeCallFailed WebhookEventType = "call.failed"
const WebhookEventTypeCallDeclined WebhookEventType = "call.declined"
const WebhookEventTypeCallNoAnswer WebhookEventType = "call.no_answer"
PartnerID string

Partner identifier. Present on all webhooks for cross-referencing.

TraceID string

Trace ID for debugging and correlation across systems.

WebhookVersion string

Date-based webhook payload version. Determined by the ?version= query parameter in your webhook subscription URL. If no version parameter is specified, defaults based on subscription creation date.

type ParticipantRemovedWebhookEvent struct{…}

Complete webhook payload for participant.removed events

APIVersion string

API version for the webhook payload format

CreatedAt Time

When the event was created

formatdate-time
Data ParticipantRemovedWebhookEventData

Payload for participant.removed webhook events

DeprecatedHandle string

DEPRECATED: Use participant instead. Handle (phone number or email address) of the removed participant.

ChatID stringOptional

Chat identifier (UUID) of the group chat

Participant ChatHandleOptional

The removed participant as a full handle object

ID string

Unique identifier for this handle

formatuuid
Handle string

Phone number (E.164) or email address of the participant

JoinedAt Time

When this participant joined the chat

formatdate-time
Service ServiceType

Messaging service type

One of the following:
const ServiceTypeiMessage ServiceType = "iMessage"
const ServiceTypeSMS ServiceType = "SMS"
const ServiceTypeRCS ServiceType = "RCS"
IsMe boolOptional

Whether this handle belongs to the sender (your phone number)

LeftAt TimeOptional

When they left (if applicable)

formatdate-time
Status ChatHandleStatusOptional

Participant status

One of the following:
const ChatHandleStatusActive ChatHandleStatus = "active"
const ChatHandleStatusLeft ChatHandleStatus = "left"
const ChatHandleStatusRemoved ChatHandleStatus = "removed"
RemovedAt TimeOptional

When the participant was removed

formatdate-time
EventID string

Unique identifier for this event (for deduplication)

formatuuid

Valid webhook event types that can be subscribed to.

Note: message.edited is only delivered to subscriptions using webhook_version: "2026-02-03". Subscribing to this event on a v2025 subscription will not produce any deliveries.

One of the following:
const WebhookEventTypeMessageSent WebhookEventType = "message.sent"
const WebhookEventTypeMessageReceived WebhookEventType = "message.received"
const WebhookEventTypeMessageRead WebhookEventType = "message.read"
const WebhookEventTypeMessageDelivered WebhookEventType = "message.delivered"
const WebhookEventTypeMessageFailed WebhookEventType = "message.failed"
const WebhookEventTypeMessageEdited WebhookEventType = "message.edited"
const WebhookEventTypeReactionAdded WebhookEventType = "reaction.added"
const WebhookEventTypeReactionRemoved WebhookEventType = "reaction.removed"
const WebhookEventTypeParticipantAdded WebhookEventType = "participant.added"
const WebhookEventTypeParticipantRemoved WebhookEventType = "participant.removed"
const WebhookEventTypeChatCreated WebhookEventType = "chat.created"
const WebhookEventTypeChatGroupNameUpdated WebhookEventType = "chat.group_name_updated"
const WebhookEventTypeChatGroupIconUpdated WebhookEventType = "chat.group_icon_updated"
const WebhookEventTypeChatGroupNameUpdateFailed WebhookEventType = "chat.group_name_update_failed"
const WebhookEventTypeChatGroupIconUpdateFailed WebhookEventType = "chat.group_icon_update_failed"
const WebhookEventTypeChatTypingIndicatorStarted WebhookEventType = "chat.typing_indicator.started"
const WebhookEventTypeChatTypingIndicatorStopped WebhookEventType = "chat.typing_indicator.stopped"
const WebhookEventTypePhoneNumberStatusUpdated WebhookEventType = "phone_number.status_updated"
const WebhookEventTypeCallInitiated WebhookEventType = "call.initiated"
const WebhookEventTypeCallRinging WebhookEventType = "call.ringing"
const WebhookEventTypeCallAnswered WebhookEventType = "call.answered"
const WebhookEventTypeCallEnded WebhookEventType = "call.ended"
const WebhookEventTypeCallFailed WebhookEventType = "call.failed"
const WebhookEventTypeCallDeclined WebhookEventType = "call.declined"
const WebhookEventTypeCallNoAnswer WebhookEventType = "call.no_answer"
PartnerID string

Partner identifier. Present on all webhooks for cross-referencing.

TraceID string

Trace ID for debugging and correlation across systems.

WebhookVersion string

Date-based webhook payload version. Determined by the ?version= query parameter in your webhook subscription URL. If no version parameter is specified, defaults based on subscription creation date.

type ChatCreatedWebhookEvent struct{…}

Complete webhook payload for chat.created events

APIVersion string

API version for the webhook payload format

CreatedAt Time

When the event was created

formatdate-time
Data ChatCreatedWebhookEventData

Payload for chat.created webhook events. Matches GET /v3/chats/{chatId} response.

ID string

Unique identifier for the chat

formatuuid
CreatedAt Time

When the chat was created

formatdate-time
DisplayName string

Display name for the chat. Defaults to a comma-separated list of recipient handles. Can be updated for group chats.

Handles []ChatHandle

List of chat participants with full handle details. Always contains at least two handles (your phone number and the other participant).

ID string

Unique identifier for this handle

formatuuid
Handle string

Phone number (E.164) or email address of the participant

JoinedAt Time

When this participant joined the chat

formatdate-time
Service ServiceType

Messaging service type

One of the following:
const ServiceTypeiMessage ServiceType = "iMessage"
const ServiceTypeSMS ServiceType = "SMS"
const ServiceTypeRCS ServiceType = "RCS"
IsMe boolOptional

Whether this handle belongs to the sender (your phone number)

LeftAt TimeOptional

When they left (if applicable)

formatdate-time
Status ChatHandleStatusOptional

Participant status

One of the following:
const ChatHandleStatusActive ChatHandleStatus = "active"
const ChatHandleStatusLeft ChatHandleStatus = "left"
const ChatHandleStatusRemoved ChatHandleStatus = "removed"
HealthStatus ChatCreatedWebhookEventDataHealthStatus

[BETA] Current health for a chat. Always present — chats start at HEALTHY and may shift based on engagement and delivery signals on the conversation. Many AT_RISK or CRITICAL chats on a single line increase the risk of line flagging.

Switch on status to gate sends or surface line health in your UI — the enum is the long-term contract. Each status carries a doc_url that deep-links to the relevant section of the Chat Health guide.

See the Chat Health guide for what each status means and how to react.

DocURL string

Deep-link to the relevant section of the Chat Health guide for this status.

formaturi
Status string

Current health bucket for the chat. See the Chat Health guide for what each value means and how to react. doc_url deep-links to the relevant section.

One of the following:
const ChatCreatedWebhookEventDataHealthStatusStatusHealthy ChatCreatedWebhookEventDataHealthStatusStatus = "HEALTHY"
const ChatCreatedWebhookEventDataHealthStatusStatusAtRisk ChatCreatedWebhookEventDataHealthStatusStatus = "AT_RISK"
const ChatCreatedWebhookEventDataHealthStatusStatusCritical ChatCreatedWebhookEventDataHealthStatusStatus = "CRITICAL"
const ChatCreatedWebhookEventDataHealthStatusStatusOptedOut ChatCreatedWebhookEventDataHealthStatusStatus = "OPTED_OUT"
UpdatedAt Time

When this status last changed.

formatdate-time
IsGroup bool

Whether this is a group chat

UpdatedAt Time

When the chat was last updated

formatdate-time
Service ServiceTypeOptional

Messaging service type

One of the following:
const ServiceTypeiMessage ServiceType = "iMessage"
const ServiceTypeSMS ServiceType = "SMS"
const ServiceTypeRCS ServiceType = "RCS"
EventID string

Unique identifier for this event (for deduplication)

formatuuid

Valid webhook event types that can be subscribed to.

Note: message.edited is only delivered to subscriptions using webhook_version: "2026-02-03". Subscribing to this event on a v2025 subscription will not produce any deliveries.

One of the following:
const WebhookEventTypeMessageSent WebhookEventType = "message.sent"
const WebhookEventTypeMessageReceived WebhookEventType = "message.received"
const WebhookEventTypeMessageRead WebhookEventType = "message.read"
const WebhookEventTypeMessageDelivered WebhookEventType = "message.delivered"
const WebhookEventTypeMessageFailed WebhookEventType = "message.failed"
const WebhookEventTypeMessageEdited WebhookEventType = "message.edited"
const WebhookEventTypeReactionAdded WebhookEventType = "reaction.added"
const WebhookEventTypeReactionRemoved WebhookEventType = "reaction.removed"
const WebhookEventTypeParticipantAdded WebhookEventType = "participant.added"
const WebhookEventTypeParticipantRemoved WebhookEventType = "participant.removed"
const WebhookEventTypeChatCreated WebhookEventType = "chat.created"
const WebhookEventTypeChatGroupNameUpdated WebhookEventType = "chat.group_name_updated"
const WebhookEventTypeChatGroupIconUpdated WebhookEventType = "chat.group_icon_updated"
const WebhookEventTypeChatGroupNameUpdateFailed WebhookEventType = "chat.group_name_update_failed"
const WebhookEventTypeChatGroupIconUpdateFailed WebhookEventType = "chat.group_icon_update_failed"
const WebhookEventTypeChatTypingIndicatorStarted WebhookEventType = "chat.typing_indicator.started"
const WebhookEventTypeChatTypingIndicatorStopped WebhookEventType = "chat.typing_indicator.stopped"
const WebhookEventTypePhoneNumberStatusUpdated WebhookEventType = "phone_number.status_updated"
const WebhookEventTypeCallInitiated WebhookEventType = "call.initiated"
const WebhookEventTypeCallRinging WebhookEventType = "call.ringing"
const WebhookEventTypeCallAnswered WebhookEventType = "call.answered"
const WebhookEventTypeCallEnded WebhookEventType = "call.ended"
const WebhookEventTypeCallFailed WebhookEventType = "call.failed"
const WebhookEventTypeCallDeclined WebhookEventType = "call.declined"
const WebhookEventTypeCallNoAnswer WebhookEventType = "call.no_answer"
PartnerID string

Partner identifier. Present on all webhooks for cross-referencing.

TraceID string

Trace ID for debugging and correlation across systems.

WebhookVersion string

Date-based webhook payload version. Determined by the ?version= query parameter in your webhook subscription URL. If no version parameter is specified, defaults based on subscription creation date.

type ChatGroupNameUpdatedWebhookEvent struct{…}

Complete webhook payload for chat.group_name_updated events

APIVersion string

API version for the webhook payload format

CreatedAt Time

When the event was created

formatdate-time
Data ChatGroupNameUpdatedWebhookEventData

Payload for chat.group_name_updated webhook events

ChatID string

Chat identifier (UUID) of the group chat

UpdatedAt Time

When the update occurred

formatdate-time
ChangedByHandle ChatHandleOptional

The handle who made the change.

ID string

Unique identifier for this handle

formatuuid
Handle string

Phone number (E.164) or email address of the participant

JoinedAt Time

When this participant joined the chat

formatdate-time
Service ServiceType

Messaging service type

One of the following:
const ServiceTypeiMessage ServiceType = "iMessage"
const ServiceTypeSMS ServiceType = "SMS"
const ServiceTypeRCS ServiceType = "RCS"
IsMe boolOptional

Whether this handle belongs to the sender (your phone number)

LeftAt TimeOptional

When they left (if applicable)

formatdate-time
Status ChatHandleStatusOptional

Participant status

One of the following:
const ChatHandleStatusActive ChatHandleStatus = "active"
const ChatHandleStatusLeft ChatHandleStatus = "left"
const ChatHandleStatusRemoved ChatHandleStatus = "removed"
NewValue stringOptional

New group name (null if the name was removed)

OldValue stringOptional

Previous group name (null if no previous name)

EventID string

Unique identifier for this event (for deduplication)

formatuuid

Valid webhook event types that can be subscribed to.

Note: message.edited is only delivered to subscriptions using webhook_version: "2026-02-03". Subscribing to this event on a v2025 subscription will not produce any deliveries.

One of the following:
const WebhookEventTypeMessageSent WebhookEventType = "message.sent"
const WebhookEventTypeMessageReceived WebhookEventType = "message.received"
const WebhookEventTypeMessageRead WebhookEventType = "message.read"
const WebhookEventTypeMessageDelivered WebhookEventType = "message.delivered"
const WebhookEventTypeMessageFailed WebhookEventType = "message.failed"
const WebhookEventTypeMessageEdited WebhookEventType = "message.edited"
const WebhookEventTypeReactionAdded WebhookEventType = "reaction.added"
const WebhookEventTypeReactionRemoved WebhookEventType = "reaction.removed"
const WebhookEventTypeParticipantAdded WebhookEventType = "participant.added"
const WebhookEventTypeParticipantRemoved WebhookEventType = "participant.removed"
const WebhookEventTypeChatCreated WebhookEventType = "chat.created"
const WebhookEventTypeChatGroupNameUpdated WebhookEventType = "chat.group_name_updated"
const WebhookEventTypeChatGroupIconUpdated WebhookEventType = "chat.group_icon_updated"
const WebhookEventTypeChatGroupNameUpdateFailed WebhookEventType = "chat.group_name_update_failed"
const WebhookEventTypeChatGroupIconUpdateFailed WebhookEventType = "chat.group_icon_update_failed"
const WebhookEventTypeChatTypingIndicatorStarted WebhookEventType = "chat.typing_indicator.started"
const WebhookEventTypeChatTypingIndicatorStopped WebhookEventType = "chat.typing_indicator.stopped"
const WebhookEventTypePhoneNumberStatusUpdated WebhookEventType = "phone_number.status_updated"
const WebhookEventTypeCallInitiated WebhookEventType = "call.initiated"
const WebhookEventTypeCallRinging WebhookEventType = "call.ringing"
const WebhookEventTypeCallAnswered WebhookEventType = "call.answered"
const WebhookEventTypeCallEnded WebhookEventType = "call.ended"
const WebhookEventTypeCallFailed WebhookEventType = "call.failed"
const WebhookEventTypeCallDeclined WebhookEventType = "call.declined"
const WebhookEventTypeCallNoAnswer WebhookEventType = "call.no_answer"
PartnerID string

Partner identifier. Present on all webhooks for cross-referencing.

TraceID string

Trace ID for debugging and correlation across systems.

WebhookVersion string

Date-based webhook payload version. Determined by the ?version= query parameter in your webhook subscription URL. If no version parameter is specified, defaults based on subscription creation date.

type ChatGroupIconUpdatedWebhookEvent struct{…}

Complete webhook payload for chat.group_icon_updated events

APIVersion string

API version for the webhook payload format

CreatedAt Time

When the event was created

formatdate-time
Data ChatGroupIconUpdatedWebhookEventData

Payload for chat.group_icon_updated webhook events

ChatID string

Chat identifier (UUID) of the group chat

UpdatedAt Time

When the update occurred

formatdate-time
ChangedByHandle ChatHandleOptional

The handle who made the change.

ID string

Unique identifier for this handle

formatuuid
Handle string

Phone number (E.164) or email address of the participant

JoinedAt Time

When this participant joined the chat

formatdate-time
Service ServiceType

Messaging service type

One of the following:
const ServiceTypeiMessage ServiceType = "iMessage"
const ServiceTypeSMS ServiceType = "SMS"
const ServiceTypeRCS ServiceType = "RCS"
IsMe boolOptional

Whether this handle belongs to the sender (your phone number)

LeftAt TimeOptional

When they left (if applicable)

formatdate-time
Status ChatHandleStatusOptional

Participant status

One of the following:
const ChatHandleStatusActive ChatHandleStatus = "active"
const ChatHandleStatusLeft ChatHandleStatus = "left"
const ChatHandleStatusRemoved ChatHandleStatus = "removed"
NewValue stringOptional

New icon URL (null if the icon was removed)

OldValue stringOptional

Previous icon URL (null if no previous icon)

EventID string

Unique identifier for this event (for deduplication)

formatuuid

Valid webhook event types that can be subscribed to.

Note: message.edited is only delivered to subscriptions using webhook_version: "2026-02-03". Subscribing to this event on a v2025 subscription will not produce any deliveries.

One of the following:
const WebhookEventTypeMessageSent WebhookEventType = "message.sent"
const WebhookEventTypeMessageReceived WebhookEventType = "message.received"
const WebhookEventTypeMessageRead WebhookEventType = "message.read"
const WebhookEventTypeMessageDelivered WebhookEventType = "message.delivered"
const WebhookEventTypeMessageFailed WebhookEventType = "message.failed"
const WebhookEventTypeMessageEdited WebhookEventType = "message.edited"
const WebhookEventTypeReactionAdded WebhookEventType = "reaction.added"
const WebhookEventTypeReactionRemoved WebhookEventType = "reaction.removed"
const WebhookEventTypeParticipantAdded WebhookEventType = "participant.added"
const WebhookEventTypeParticipantRemoved WebhookEventType = "participant.removed"
const WebhookEventTypeChatCreated WebhookEventType = "chat.created"
const WebhookEventTypeChatGroupNameUpdated WebhookEventType = "chat.group_name_updated"
const WebhookEventTypeChatGroupIconUpdated WebhookEventType = "chat.group_icon_updated"
const WebhookEventTypeChatGroupNameUpdateFailed WebhookEventType = "chat.group_name_update_failed"
const WebhookEventTypeChatGroupIconUpdateFailed WebhookEventType = "chat.group_icon_update_failed"
const WebhookEventTypeChatTypingIndicatorStarted WebhookEventType = "chat.typing_indicator.started"
const WebhookEventTypeChatTypingIndicatorStopped WebhookEventType = "chat.typing_indicator.stopped"
const WebhookEventTypePhoneNumberStatusUpdated WebhookEventType = "phone_number.status_updated"
const WebhookEventTypeCallInitiated WebhookEventType = "call.initiated"
const WebhookEventTypeCallRinging WebhookEventType = "call.ringing"
const WebhookEventTypeCallAnswered WebhookEventType = "call.answered"
const WebhookEventTypeCallEnded WebhookEventType = "call.ended"
const WebhookEventTypeCallFailed WebhookEventType = "call.failed"
const WebhookEventTypeCallDeclined WebhookEventType = "call.declined"
const WebhookEventTypeCallNoAnswer WebhookEventType = "call.no_answer"
PartnerID string

Partner identifier. Present on all webhooks for cross-referencing.

TraceID string

Trace ID for debugging and correlation across systems.

WebhookVersion string

Date-based webhook payload version. Determined by the ?version= query parameter in your webhook subscription URL. If no version parameter is specified, defaults based on subscription creation date.

type ChatGroupNameUpdateFailedWebhookEvent struct{…}

Complete webhook payload for chat.group_name_update_failed events

APIVersion string

API version for the webhook payload format

CreatedAt Time

When the event was created

formatdate-time
Data ChatGroupNameUpdateFailedWebhookEventData

Error details for chat.group_name_update_failed webhook events. See WebhookErrorCode for the full error code reference.

ChatID string

Chat identifier (UUID) of the group chat

ErrorCode int64

Error codes in webhook failure events (3007, 4001).

FailedAt Time

When the failure was detected

formatdate-time
EventID string

Unique identifier for this event (for deduplication)

formatuuid

Valid webhook event types that can be subscribed to.

Note: message.edited is only delivered to subscriptions using webhook_version: "2026-02-03". Subscribing to this event on a v2025 subscription will not produce any deliveries.

One of the following:
const WebhookEventTypeMessageSent WebhookEventType = "message.sent"
const WebhookEventTypeMessageReceived WebhookEventType = "message.received"
const WebhookEventTypeMessageRead WebhookEventType = "message.read"
const WebhookEventTypeMessageDelivered WebhookEventType = "message.delivered"
const WebhookEventTypeMessageFailed WebhookEventType = "message.failed"
const WebhookEventTypeMessageEdited WebhookEventType = "message.edited"
const WebhookEventTypeReactionAdded WebhookEventType = "reaction.added"
const WebhookEventTypeReactionRemoved WebhookEventType = "reaction.removed"
const WebhookEventTypeParticipantAdded WebhookEventType = "participant.added"
const WebhookEventTypeParticipantRemoved WebhookEventType = "participant.removed"
const WebhookEventTypeChatCreated WebhookEventType = "chat.created"
const WebhookEventTypeChatGroupNameUpdated WebhookEventType = "chat.group_name_updated"
const WebhookEventTypeChatGroupIconUpdated WebhookEventType = "chat.group_icon_updated"
const WebhookEventTypeChatGroupNameUpdateFailed WebhookEventType = "chat.group_name_update_failed"
const WebhookEventTypeChatGroupIconUpdateFailed WebhookEventType = "chat.group_icon_update_failed"
const WebhookEventTypeChatTypingIndicatorStarted WebhookEventType = "chat.typing_indicator.started"
const WebhookEventTypeChatTypingIndicatorStopped WebhookEventType = "chat.typing_indicator.stopped"
const WebhookEventTypePhoneNumberStatusUpdated WebhookEventType = "phone_number.status_updated"
const WebhookEventTypeCallInitiated WebhookEventType = "call.initiated"
const WebhookEventTypeCallRinging WebhookEventType = "call.ringing"
const WebhookEventTypeCallAnswered WebhookEventType = "call.answered"
const WebhookEventTypeCallEnded WebhookEventType = "call.ended"
const WebhookEventTypeCallFailed WebhookEventType = "call.failed"
const WebhookEventTypeCallDeclined WebhookEventType = "call.declined"
const WebhookEventTypeCallNoAnswer WebhookEventType = "call.no_answer"
PartnerID string

Partner identifier. Present on all webhooks for cross-referencing.

TraceID string

Trace ID for debugging and correlation across systems.

WebhookVersion string

Date-based webhook payload version. Determined by the ?version= query parameter in your webhook subscription URL. If no version parameter is specified, defaults based on subscription creation date.

type ChatGroupIconUpdateFailedWebhookEvent struct{…}

Complete webhook payload for chat.group_icon_update_failed events

APIVersion string

API version for the webhook payload format

CreatedAt Time

When the event was created

formatdate-time
Data ChatGroupIconUpdateFailedWebhookEventData

Error details for chat.group_icon_update_failed webhook events. See WebhookErrorCode for the full error code reference.

ChatID string

Chat identifier (UUID) of the group chat

ErrorCode int64

Error codes in webhook failure events (3007, 4001).

FailedAt Time

When the failure was detected

formatdate-time
EventID string

Unique identifier for this event (for deduplication)

formatuuid

Valid webhook event types that can be subscribed to.

Note: message.edited is only delivered to subscriptions using webhook_version: "2026-02-03". Subscribing to this event on a v2025 subscription will not produce any deliveries.

One of the following:
const WebhookEventTypeMessageSent WebhookEventType = "message.sent"
const WebhookEventTypeMessageReceived WebhookEventType = "message.received"
const WebhookEventTypeMessageRead WebhookEventType = "message.read"
const WebhookEventTypeMessageDelivered WebhookEventType = "message.delivered"
const WebhookEventTypeMessageFailed WebhookEventType = "message.failed"
const WebhookEventTypeMessageEdited WebhookEventType = "message.edited"
const WebhookEventTypeReactionAdded WebhookEventType = "reaction.added"
const WebhookEventTypeReactionRemoved WebhookEventType = "reaction.removed"
const WebhookEventTypeParticipantAdded WebhookEventType = "participant.added"
const WebhookEventTypeParticipantRemoved WebhookEventType = "participant.removed"
const WebhookEventTypeChatCreated WebhookEventType = "chat.created"
const WebhookEventTypeChatGroupNameUpdated WebhookEventType = "chat.group_name_updated"
const WebhookEventTypeChatGroupIconUpdated WebhookEventType = "chat.group_icon_updated"
const WebhookEventTypeChatGroupNameUpdateFailed WebhookEventType = "chat.group_name_update_failed"
const WebhookEventTypeChatGroupIconUpdateFailed WebhookEventType = "chat.group_icon_update_failed"
const WebhookEventTypeChatTypingIndicatorStarted WebhookEventType = "chat.typing_indicator.started"
const WebhookEventTypeChatTypingIndicatorStopped WebhookEventType = "chat.typing_indicator.stopped"
const WebhookEventTypePhoneNumberStatusUpdated WebhookEventType = "phone_number.status_updated"
const WebhookEventTypeCallInitiated WebhookEventType = "call.initiated"
const WebhookEventTypeCallRinging WebhookEventType = "call.ringing"
const WebhookEventTypeCallAnswered WebhookEventType = "call.answered"
const WebhookEventTypeCallEnded WebhookEventType = "call.ended"
const WebhookEventTypeCallFailed WebhookEventType = "call.failed"
const WebhookEventTypeCallDeclined WebhookEventType = "call.declined"
const WebhookEventTypeCallNoAnswer WebhookEventType = "call.no_answer"
PartnerID string

Partner identifier. Present on all webhooks for cross-referencing.

TraceID string

Trace ID for debugging and correlation across systems.

WebhookVersion string

Date-based webhook payload version. Determined by the ?version= query parameter in your webhook subscription URL. If no version parameter is specified, defaults based on subscription creation date.

type ChatTypingIndicatorStartedWebhookEvent struct{…}

Complete webhook payload for chat.typing_indicator.started events

APIVersion string

API version for the webhook payload format

CreatedAt Time

When the event was created

formatdate-time
Data ChatTypingIndicatorStartedWebhookEventData

Payload for chat.typing_indicator.started webhook events

ChatID string

Chat identifier

formatuuid
EventID string

Unique identifier for this event (for deduplication)

formatuuid

Valid webhook event types that can be subscribed to.

Note: message.edited is only delivered to subscriptions using webhook_version: "2026-02-03". Subscribing to this event on a v2025 subscription will not produce any deliveries.

One of the following:
const WebhookEventTypeMessageSent WebhookEventType = "message.sent"
const WebhookEventTypeMessageReceived WebhookEventType = "message.received"
const WebhookEventTypeMessageRead WebhookEventType = "message.read"
const WebhookEventTypeMessageDelivered WebhookEventType = "message.delivered"
const WebhookEventTypeMessageFailed WebhookEventType = "message.failed"
const WebhookEventTypeMessageEdited WebhookEventType = "message.edited"
const WebhookEventTypeReactionAdded WebhookEventType = "reaction.added"
const WebhookEventTypeReactionRemoved WebhookEventType = "reaction.removed"
const WebhookEventTypeParticipantAdded WebhookEventType = "participant.added"
const WebhookEventTypeParticipantRemoved WebhookEventType = "participant.removed"
const WebhookEventTypeChatCreated WebhookEventType = "chat.created"
const WebhookEventTypeChatGroupNameUpdated WebhookEventType = "chat.group_name_updated"
const WebhookEventTypeChatGroupIconUpdated WebhookEventType = "chat.group_icon_updated"
const WebhookEventTypeChatGroupNameUpdateFailed WebhookEventType = "chat.group_name_update_failed"
const WebhookEventTypeChatGroupIconUpdateFailed WebhookEventType = "chat.group_icon_update_failed"
const WebhookEventTypeChatTypingIndicatorStarted WebhookEventType = "chat.typing_indicator.started"
const WebhookEventTypeChatTypingIndicatorStopped WebhookEventType = "chat.typing_indicator.stopped"
const WebhookEventTypePhoneNumberStatusUpdated WebhookEventType = "phone_number.status_updated"
const WebhookEventTypeCallInitiated WebhookEventType = "call.initiated"
const WebhookEventTypeCallRinging WebhookEventType = "call.ringing"
const WebhookEventTypeCallAnswered WebhookEventType = "call.answered"
const WebhookEventTypeCallEnded WebhookEventType = "call.ended"
const WebhookEventTypeCallFailed WebhookEventType = "call.failed"
const WebhookEventTypeCallDeclined WebhookEventType = "call.declined"
const WebhookEventTypeCallNoAnswer WebhookEventType = "call.no_answer"
PartnerID string

Partner identifier. Present on all webhooks for cross-referencing.

TraceID string

Trace ID for debugging and correlation across systems.

WebhookVersion string

Date-based webhook payload version. Determined by the ?version= query parameter in your webhook subscription URL. If no version parameter is specified, defaults based on subscription creation date.

type ChatTypingIndicatorStoppedWebhookEvent struct{…}

Complete webhook payload for chat.typing_indicator.stopped events

APIVersion string

API version for the webhook payload format

CreatedAt Time

When the event was created

formatdate-time
Data ChatTypingIndicatorStoppedWebhookEventData

Payload for chat.typing_indicator.stopped webhook events

ChatID string

Chat identifier

formatuuid
EventID string

Unique identifier for this event (for deduplication)

formatuuid

Valid webhook event types that can be subscribed to.

Note: message.edited is only delivered to subscriptions using webhook_version: "2026-02-03". Subscribing to this event on a v2025 subscription will not produce any deliveries.

One of the following:
const WebhookEventTypeMessageSent WebhookEventType = "message.sent"
const WebhookEventTypeMessageReceived WebhookEventType = "message.received"
const WebhookEventTypeMessageRead WebhookEventType = "message.read"
const WebhookEventTypeMessageDelivered WebhookEventType = "message.delivered"
const WebhookEventTypeMessageFailed WebhookEventType = "message.failed"
const WebhookEventTypeMessageEdited WebhookEventType = "message.edited"
const WebhookEventTypeReactionAdded WebhookEventType = "reaction.added"
const WebhookEventTypeReactionRemoved WebhookEventType = "reaction.removed"
const WebhookEventTypeParticipantAdded WebhookEventType = "participant.added"
const WebhookEventTypeParticipantRemoved WebhookEventType = "participant.removed"
const WebhookEventTypeChatCreated WebhookEventType = "chat.created"
const WebhookEventTypeChatGroupNameUpdated WebhookEventType = "chat.group_name_updated"
const WebhookEventTypeChatGroupIconUpdated WebhookEventType = "chat.group_icon_updated"
const WebhookEventTypeChatGroupNameUpdateFailed WebhookEventType = "chat.group_name_update_failed"
const WebhookEventTypeChatGroupIconUpdateFailed WebhookEventType = "chat.group_icon_update_failed"
const WebhookEventTypeChatTypingIndicatorStarted WebhookEventType = "chat.typing_indicator.started"
const WebhookEventTypeChatTypingIndicatorStopped WebhookEventType = "chat.typing_indicator.stopped"
const WebhookEventTypePhoneNumberStatusUpdated WebhookEventType = "phone_number.status_updated"
const WebhookEventTypeCallInitiated WebhookEventType = "call.initiated"
const WebhookEventTypeCallRinging WebhookEventType = "call.ringing"
const WebhookEventTypeCallAnswered WebhookEventType = "call.answered"
const WebhookEventTypeCallEnded WebhookEventType = "call.ended"
const WebhookEventTypeCallFailed WebhookEventType = "call.failed"
const WebhookEventTypeCallDeclined WebhookEventType = "call.declined"
const WebhookEventTypeCallNoAnswer WebhookEventType = "call.no_answer"
PartnerID string

Partner identifier. Present on all webhooks for cross-referencing.

TraceID string

Trace ID for debugging and correlation across systems.

WebhookVersion string

Date-based webhook payload version. Determined by the ?version= query parameter in your webhook subscription URL. If no version parameter is specified, defaults based on subscription creation date.

type PhoneNumberStatusUpdatedWebhookEvent struct{…}

Complete webhook payload for phone_number.status_updated events

APIVersion string

API version for the webhook payload format

CreatedAt Time

When the event was created

formatdate-time
Data PhoneNumberStatusUpdatedWebhookEventData

Payload for phone_number.status_updated webhook events

ChangedAt Time

When the status change occurred

formatdate-time
NewHealthStatus string

The new line health status

One of the following:
const PhoneNumberStatusUpdatedWebhookEventDataNewHealthStatusHealthy PhoneNumberStatusUpdatedWebhookEventDataNewHealthStatus = "HEALTHY"
const PhoneNumberStatusUpdatedWebhookEventDataNewHealthStatusAtRisk PhoneNumberStatusUpdatedWebhookEventDataNewHealthStatus = "AT_RISK"
const PhoneNumberStatusUpdatedWebhookEventDataNewHealthStatusCritical PhoneNumberStatusUpdatedWebhookEventDataNewHealthStatus = "CRITICAL"
NewStatus string

The new service status

One of the following:
const PhoneNumberStatusUpdatedWebhookEventDataNewStatusActive PhoneNumberStatusUpdatedWebhookEventDataNewStatus = "ACTIVE"
const PhoneNumberStatusUpdatedWebhookEventDataNewStatusFlagged PhoneNumberStatusUpdatedWebhookEventDataNewStatus = "FLAGGED"
PhoneNumber string

Phone number in E.164 format

PreviousHealthStatus string

The previous line health status

One of the following:
const PhoneNumberStatusUpdatedWebhookEventDataPreviousHealthStatusHealthy PhoneNumberStatusUpdatedWebhookEventDataPreviousHealthStatus = "HEALTHY"
const PhoneNumberStatusUpdatedWebhookEventDataPreviousHealthStatusAtRisk PhoneNumberStatusUpdatedWebhookEventDataPreviousHealthStatus = "AT_RISK"
const PhoneNumberStatusUpdatedWebhookEventDataPreviousHealthStatusCritical PhoneNumberStatusUpdatedWebhookEventDataPreviousHealthStatus = "CRITICAL"
PreviousStatus string

The previous service status

One of the following:
const PhoneNumberStatusUpdatedWebhookEventDataPreviousStatusActive PhoneNumberStatusUpdatedWebhookEventDataPreviousStatus = "ACTIVE"
const PhoneNumberStatusUpdatedWebhookEventDataPreviousStatusFlagged PhoneNumberStatusUpdatedWebhookEventDataPreviousStatus = "FLAGGED"
EventID string

Unique identifier for this event (for deduplication)

formatuuid
EventType PhoneNumberStatusUpdatedWebhookEventEventType

The type of event

One of the following:
const PhoneNumberStatusUpdatedWebhookEventEventTypeMessageSent PhoneNumberStatusUpdatedWebhookEventEventType = "message.sent"
const PhoneNumberStatusUpdatedWebhookEventEventTypeMessageReceived PhoneNumberStatusUpdatedWebhookEventEventType = "message.received"
const PhoneNumberStatusUpdatedWebhookEventEventTypeMessageRead PhoneNumberStatusUpdatedWebhookEventEventType = "message.read"
const PhoneNumberStatusUpdatedWebhookEventEventTypeMessageDelivered PhoneNumberStatusUpdatedWebhookEventEventType = "message.delivered"
const PhoneNumberStatusUpdatedWebhookEventEventTypeMessageFailed PhoneNumberStatusUpdatedWebhookEventEventType = "message.failed"
const PhoneNumberStatusUpdatedWebhookEventEventTypeMessageEdited PhoneNumberStatusUpdatedWebhookEventEventType = "message.edited"
const PhoneNumberStatusUpdatedWebhookEventEventTypeReactionAdded PhoneNumberStatusUpdatedWebhookEventEventType = "reaction.added"
const PhoneNumberStatusUpdatedWebhookEventEventTypeReactionRemoved PhoneNumberStatusUpdatedWebhookEventEventType = "reaction.removed"
const PhoneNumberStatusUpdatedWebhookEventEventTypeParticipantAdded PhoneNumberStatusUpdatedWebhookEventEventType = "participant.added"
const PhoneNumberStatusUpdatedWebhookEventEventTypeParticipantRemoved PhoneNumberStatusUpdatedWebhookEventEventType = "participant.removed"
const PhoneNumberStatusUpdatedWebhookEventEventTypeChatCreated PhoneNumberStatusUpdatedWebhookEventEventType = "chat.created"
const PhoneNumberStatusUpdatedWebhookEventEventTypeChatGroupNameUpdated PhoneNumberStatusUpdatedWebhookEventEventType = "chat.group_name_updated"
const PhoneNumberStatusUpdatedWebhookEventEventTypeChatGroupIconUpdated PhoneNumberStatusUpdatedWebhookEventEventType = "chat.group_icon_updated"
const PhoneNumberStatusUpdatedWebhookEventEventTypeChatGroupNameUpdateFailed PhoneNumberStatusUpdatedWebhookEventEventType = "chat.group_name_update_failed"
const PhoneNumberStatusUpdatedWebhookEventEventTypeChatGroupIconUpdateFailed PhoneNumberStatusUpdatedWebhookEventEventType = "chat.group_icon_update_failed"
const PhoneNumberStatusUpdatedWebhookEventEventTypeChatTypingIndicatorStarted PhoneNumberStatusUpdatedWebhookEventEventType = "chat.typing_indicator.started"
const PhoneNumberStatusUpdatedWebhookEventEventTypeChatTypingIndicatorStopped PhoneNumberStatusUpdatedWebhookEventEventType = "chat.typing_indicator.stopped"
const PhoneNumberStatusUpdatedWebhookEventEventTypePhoneNumberStatusUpdated PhoneNumberStatusUpdatedWebhookEventEventType = "phone_number.status_updated"
const PhoneNumberStatusUpdatedWebhookEventEventTypeCallInitiated PhoneNumberStatusUpdatedWebhookEventEventType = "call.initiated"
const PhoneNumberStatusUpdatedWebhookEventEventTypeCallRinging PhoneNumberStatusUpdatedWebhookEventEventType = "call.ringing"
const PhoneNumberStatusUpdatedWebhookEventEventTypeCallAnswered PhoneNumberStatusUpdatedWebhookEventEventType = "call.answered"
const PhoneNumberStatusUpdatedWebhookEventEventTypeCallEnded PhoneNumberStatusUpdatedWebhookEventEventType = "call.ended"
const PhoneNumberStatusUpdatedWebhookEventEventTypeCallFailed PhoneNumberStatusUpdatedWebhookEventEventType = "call.failed"
const PhoneNumberStatusUpdatedWebhookEventEventTypeCallDeclined PhoneNumberStatusUpdatedWebhookEventEventType = "call.declined"
const PhoneNumberStatusUpdatedWebhookEventEventTypeCallNoAnswer PhoneNumberStatusUpdatedWebhookEventEventType = "call.no_answer"
PartnerID string

Partner identifier. Present on all webhooks for cross-referencing.

TraceID string

Trace ID for debugging and correlation across systems.

WebhookVersion string

Date-based webhook payload version. Determined by the ?version= query parameter in your webhook subscription URL. If no version parameter is specified, defaults based on subscription creation date.