# Webhook Events

## List available webhook event types

`webhook_events.list()  -> WebhookEventListResponse`

**get** `/v3/webhook-events`

Returns all available webhook event types that can be subscribed to.
Use this endpoint to discover valid values for the `subscribed_events`
field when creating or updating webhook subscriptions.

### Returns

- `class WebhookEventListResponse: …`

  - `doc_url: Literal["https://docs.linqapp.com/channel/imessage/guides/webhooks/events"]`

    URL to the webhook events documentation

    - `"https://docs.linqapp.com/channel/imessage/guides/webhooks/events"`

  - `events: List[WebhookEventType]`

    List of all available webhook event types

    - `"message.sent"`

    - `"message.received"`

    - `"message.read"`

    - `"message.delivered"`

    - `"message.failed"`

    - `"message.edited"`

    - `"reaction.added"`

    - `"reaction.removed"`

    - `"poll.received"`

    - `"poll.failed"`

    - `"poll.sent"`

    - `"poll.delivered"`

    - `"poll.read"`

    - `"poll.updated"`

    - `"poll.vote.added"`

    - `"poll.vote.removed"`

    - `"poll.reaction.added"`

    - `"participant.added"`

    - `"participant.removed"`

    - `"chat.created"`

    - `"chat.group_name_updated"`

    - `"chat.group_icon_updated"`

    - `"chat.group_name_update_failed"`

    - `"chat.group_icon_update_failed"`

    - `"chat.background_updated"`

    - `"chat.background_update_failed"`

    - `"chat.typing_indicator.started"`

    - `"chat.typing_indicator.stopped"`

    - `"phone_number.status_updated"`

    - `"contact_card.received"`

    - `"call.initiated"`

    - `"call.ringing"`

    - `"call.answered"`

    - `"call.ended"`

    - `"call.failed"`

    - `"call.declined"`

    - `"call.no_answer"`

    - `"location.sharing.started"`

    - `"location.sharing.stopped"`

    - `"payment.succeeded"`

    - `"payment.canceled"`

    - `"payment.expired"`

    - `"payment.declined"`

    - `"payment.authorized"`

    - `"connection.created"`

    - `"connection.revoked"`

### Example

```python
import os
from linq import LinqAPIV3

client = LinqAPIV3(
    api_key=os.environ.get("LINQ_API_V3_API_KEY"),  # This is the default and can be omitted
)
webhook_events = client.webhook_events.list()
print(webhook_events.doc_url)
```

#### Response

```json
{
  "events": [
    "message.sent",
    "message.received",
    "message.read",
    "message.delivered",
    "message.failed",
    "reaction.added",
    "reaction.removed",
    "poll.received",
    "poll.sent",
    "poll.delivered",
    "poll.read",
    "poll.updated",
    "poll.failed",
    "poll.vote.added",
    "poll.vote.removed",
    "poll.reaction.added",
    "participant.added",
    "participant.removed",
    "chat.created",
    "chat.group_name_updated",
    "chat.group_icon_updated",
    "chat.group_name_update_failed",
    "chat.group_icon_update_failed",
    "chat.background_updated",
    "chat.typing_indicator.started",
    "chat.typing_indicator.stopped",
    "message.edited",
    "phone_number.status_updated",
    "contact_card.received"
  ],
  "doc_url": "https://docs.linqapp.com/channel/imessage/guides/webhooks/events"
}
```

## Domain Types

### Webhook Event Type

- `Literal["message.sent", "message.received", "message.read", 43 more]`

  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.

  - `"message.sent"`

  - `"message.received"`

  - `"message.read"`

  - `"message.delivered"`

  - `"message.failed"`

  - `"message.edited"`

  - `"reaction.added"`

  - `"reaction.removed"`

  - `"poll.received"`

  - `"poll.failed"`

  - `"poll.sent"`

  - `"poll.delivered"`

  - `"poll.read"`

  - `"poll.updated"`

  - `"poll.vote.added"`

  - `"poll.vote.removed"`

  - `"poll.reaction.added"`

  - `"participant.added"`

  - `"participant.removed"`

  - `"chat.created"`

  - `"chat.group_name_updated"`

  - `"chat.group_icon_updated"`

  - `"chat.group_name_update_failed"`

  - `"chat.group_icon_update_failed"`

  - `"chat.background_updated"`

  - `"chat.background_update_failed"`

  - `"chat.typing_indicator.started"`

  - `"chat.typing_indicator.stopped"`

  - `"phone_number.status_updated"`

  - `"contact_card.received"`

  - `"call.initiated"`

  - `"call.ringing"`

  - `"call.answered"`

  - `"call.ended"`

  - `"call.failed"`

  - `"call.declined"`

  - `"call.no_answer"`

  - `"location.sharing.started"`

  - `"location.sharing.stopped"`

  - `"payment.succeeded"`

  - `"payment.canceled"`

  - `"payment.expired"`

  - `"payment.declined"`

  - `"payment.authorized"`

  - `"connection.created"`

  - `"connection.revoked"`

### Webhook Event List Response

- `class WebhookEventListResponse: …`

  - `doc_url: Literal["https://docs.linqapp.com/channel/imessage/guides/webhooks/events"]`

    URL to the webhook events documentation

    - `"https://docs.linqapp.com/channel/imessage/guides/webhooks/events"`

  - `events: List[WebhookEventType]`

    List of all available webhook event types

    - `"message.sent"`

    - `"message.received"`

    - `"message.read"`

    - `"message.delivered"`

    - `"message.failed"`

    - `"message.edited"`

    - `"reaction.added"`

    - `"reaction.removed"`

    - `"poll.received"`

    - `"poll.failed"`

    - `"poll.sent"`

    - `"poll.delivered"`

    - `"poll.read"`

    - `"poll.updated"`

    - `"poll.vote.added"`

    - `"poll.vote.removed"`

    - `"poll.reaction.added"`

    - `"participant.added"`

    - `"participant.removed"`

    - `"chat.created"`

    - `"chat.group_name_updated"`

    - `"chat.group_icon_updated"`

    - `"chat.group_name_update_failed"`

    - `"chat.group_icon_update_failed"`

    - `"chat.background_updated"`

    - `"chat.background_update_failed"`

    - `"chat.typing_indicator.started"`

    - `"chat.typing_indicator.stopped"`

    - `"phone_number.status_updated"`

    - `"contact_card.received"`

    - `"call.initiated"`

    - `"call.ringing"`

    - `"call.answered"`

    - `"call.ended"`

    - `"call.failed"`

    - `"call.declined"`

    - `"call.no_answer"`

    - `"location.sharing.started"`

    - `"location.sharing.stopped"`

    - `"payment.succeeded"`

    - `"payment.canceled"`

    - `"payment.expired"`

    - `"payment.declined"`

    - `"payment.authorized"`

    - `"connection.created"`

    - `"connection.revoked"`
