# User Events

`POST userEvents`

Receive events related to user interactions such as when a user starts typing via webhook. See our guide for handling user and message events with SDKs.

> **Note:** Typing indicators are best-effort hints. RBM may coalesce, drop, or skip indicators, and you may not receive an indicator for every keystroke or session. Events can be missed if messages arrive before typing events are processed.

## Authentication

No authentication is required.

## Parameters

- `PINNACLE-SIGNING-SECRET` — header, string. Secret for verifying the authenticity of the request. Starts with `pss-` and is unique for each webhook. Find it at webhooks.

## Request body

Required.

Content type: `application/json`.

### Fields

- `type` — `string`, values: `USER.TYPING`. Type of user event.
- `startedAt` — `string`. Timestamp when the user event started in ISO 8601 format.
- `conversation` — `object`. Conversation metadata containing the conversation ID, sender, and recipient information.
- `conversation.id` — `string`. Unique identifier for the conversation. This identifier is a string that always begins with the prefix `conv_`, for example: `conv_1234567890`.

To get more conversation details, use the POST /conversations/get endpoint.
- `conversation.from` — `string`. Phone number of the user who triggered the event.
- `conversation.to` — `string`. Agent ID that the user is interacting with.

### Example

```json
{
  "type": "USER.TYPING",
  "startedAt": "2024-01-15T09:30:00Z",
  "conversation": {
    "id": 12345,
    "from": "+14155551234",
    "to": "+14155555678"
  }
}
```

## Responses

### 200

Return a 200 status to indicate that the data was received successfully

## Machine-readable schema

[OpenAPI 3.1 JSON](https://docs.pinnacle.sh/openapi.json)
