# Message interactions

You can list message interactions on a specific message using the following endpoint. In order to get an Email message, you must have an active Email channel and perform a HTTP request with a [valid access key](/api/api-access/api-authorization.md)

## List message interactions

> List message interactions

```json
{"openapi":"3.0.3","info":{"title":"Channels","version":"v1"},"servers":[{"url":"https://api.bird.com","description":"Production API"}],"security":[{"accessKey":[]}],"components":{"securitySchemes":{"accessKey":{"description":"Uses the Authorization header: 'AccessKey ' followed by your access key token (e.g., 'Authorization: AccessKey AbCdEfGhIjKlMnOpQrStUvWxYzAbCdEfGhIj')","scheme":"AccessKey","type":"http"}},"schemas":{"MessageInteractionsList":{"type":"object","title":"ChannelMessageInteractionsList","description":"A list of channel messages interactions","properties":{"results":{"type":"array","items":{"$ref":"#/components/schemas/MessageInteraction"}}}},"MessageInteraction":{"type":"object","title":"ChannelMessageInteraction","additionalProperties":false,"properties":{"id":{"type":"string","format":"uuid"},"messageId":{"type":"string","format":"uuid"},"channelId":{"type":"string","format":"uuid"},"platformId":{"type":"string"},"messagePartId":{"nullable":true,"type":"string","format":"uuid","deprecated":true},"type":{"type":"string","enum":["clicked","delete-request","invalid","opened","read","reported-as-spam","unsubscribe-request","reaction","conversion","subscribe-request","subscribe-consent"]},"messageReference":{"type":"string"},"messagePartsCount":{"type":"number"},"messageTags":{"nullable":true,"type":"array","items":{"type":"string"}},"receiver":{"oneOf":[{"$ref":"#/components/schemas/Connector"},{"$ref":"#/components/schemas/Contacts"}]},"createdAt":{"type":"string","format":"date-time"},"details":{"type":"string"},"context":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string"},"tags":{"type":"array","items":{"type":"string"}}}},"metadata":{"description":"Metadata is a free-form object that can be used to store any additional information such as platform specific information\n","type":"object","additionalProperties":true,"properties":{"link":{"type":"object","properties":{"name":{"type":"string"},"url":{"type":"string"}}},"button":{"properties":{"payload":{"type":"string"}}},"reaction":{"type":"object","properties":{"emoji":{"type":"string"},"action":{"type":"string"}}},"conversion":{"type":"object","additionalProperties":false,"properties":{"type":{"type":"string"},"status":{"type":"string"},"method":{"type":"string"},"timestamp":{"type":"string","format":"date-time"}}},"prefetched":{"type":"boolean"}}}}},"Connector":{"type":"object","title":"ChannelConnector","additionalProperties":false,"properties":{"connector":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"identifierValue":{"type":"string"},"annotations":{"$ref":"#/components/schemas/MessageAnnotations"},"types":{"type":"array","items":{"type":"string"}}},"required":["id"]}},"required":["connector"]},"MessageAnnotations":{"type":"object","title":"MessageAnnotations","description":"Annotations are used to add additional information to a message.\nFor email messages, it can be used to specify a custom sender name.\n","additionalProperties":false,"properties":{"name":{"type":"string"}}},"Contacts":{"type":"object","title":"ChannelContacts","additionalProperties":false,"properties":{"contacts":{"type":"array","minLength":1,"items":{"type":"object","additionalProperties":false,"properties":{"id":{"type":"string"},"identifierKey":{"type":"string"},"identifierValue":{"type":"string"},"type":{"type":"string"},"countryCode":{"type":"string"},"identifiers":{"type":"array","items":{"type":"object","additionalProperties":false,"properties":{"identifierKey":{"type":"string"},"identifierValue":{"type":"string"}}}},"platformAddress":{"type":"string"},"platformAddressSelector":{"type":"string","nullable":true},"annotations":{"type":"object","additionalProperties":true,"properties":{"name":{"type":"string"}}}}}}},"required":["contacts"]},"RequestError":{"type":"object","properties":{"code":{"type":"string","description":"A unique code that identifies the error. This code can be used to programmatically identify the error.\n"},"message":{"type":"string","description":"A human-readable message that describes the error. An example is 'The requested resource does not exist: channel not found'.\n"}},"required":["code","message"]}},"responses":{"requestError":{"description":"The request did not pass validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RequestError"}}}}}},"paths":{"/workspaces/{workspaceId}/channels/{channelId}/messages/{messageId}/interactions":{"get":{"summary":"List message interactions","operationId":"listChannelMessageInteractions","description":"List message interactions","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageInteractionsList"}}}},"404":{"$ref":"#/components/responses/requestError"}}}}}}
```

Email supports the following [message interactions](/api/channels-api/message-status-and-interactions.md#message-interactions):

| Interaction         | Description                                       |
| ------------------- | ------------------------------------------------- |
| opened              | A user has opened a message                       |
| clicked             | A user has clicked a link                         |
| reported-as-spam    | A user has reported a message as spam             |
| unsubscribe-request | A user has requested to unsubscribe from messages |

Additional information about the interactions can be found in the `details` field and `metadata.link` object as follows:

<table><thead><tr><th width="213">Interaction</th><th width="159">Details</th><th width="153">metadata.link</th><th>Description</th></tr></thead><tbody><tr><td>opened</td><td>initial_open</td><td></td><td>Recipient opened a message in an email client, thus rendering a tracking pixel at the top of the message</td></tr><tr><td></td><td>open</td><td></td><td>Recipient opened a message in an email client, thus rendering a tracking pixel at the bottom of the message</td></tr><tr><td></td><td>amp_initial_open</td><td></td><td>Recipient opened an AMP message in an email client, thus rendering a tracking pixel at the top of the message</td></tr><tr><td></td><td>amp_open</td><td></td><td>Recipient opened an AMP message in an email client, thus rendering a tracking pixel at the bottom of the message</td></tr><tr><td>clicked</td><td>click</td><td><ul><li><strong>name</strong> - link title</li><li><strong>url</strong> - link url clicked</li></ul></td><td>Recipient clicked a tracked link in a message</td></tr><tr><td></td><td>amp_click</td><td><ul><li><strong>name</strong> - link title</li><li><strong>url</strong> - link url clicked</li></ul></td><td>Recipient clicked a tracked link in an AMP message</td></tr><tr><td>reported-as-spam</td><td>spam_complaint</td><td></td><td>Messages was classified as spam by the recipient</td></tr><tr><td>unsubscribe_request</td><td>link_unsubscribe</td><td></td><td>Recipient clicked the 'unsubscribe' button in an email client</td></tr><tr><td></td><td>list_unsubscribe</td><td></td><td>Recipient clicked an 'unsubscribe' link in an email message</td></tr></tbody></table>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.bird.com/api/channels-api/supported-channels/programmable-email/message-interactions.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
