# Outputs

Brist pipes alerts and filtered & enriched event data to designated destinations. Currently, we support Discord, Telegram, and custom webhooks.&#x20;

### Discord

Brist uses Discord webhooks to send messages to Discord channels. You can learn more about how to set up webhooks in the "Setting up Discord Output" guide.&#x20;

{% content-ref url="/pages/MVrSoTV9kSSM5chRKY0w" %}
[Setting up Discord Output](/guides/setting-up-discord-output.md)
{% endcontent-ref %}

Note that anyone can POST to your Discord channel's webhook to create a message. If you'd like to guard against bad actors by requiring a signature, please reach out to <jagathvythee@gmail.com>

### Telegram

Brist operates a Telegram bot that can send messages to chats. To output Brist alerts to Telegram, you'll need to add the bot as an admin to a chat and find the chat URL. You can learn more about setting this up in the "Setting up Telegram Output" guide.&#x20;

{% content-ref url="/pages/zwQyYRErYzWchZCZ5R3v" %}
[Setting up Telegram Output](/guides/setting-up-telegram-output.md)
{% endcontent-ref %}

### Custom Webhooks

Brist also lets you enable your own custom actions through sending POST requests to user-defined webhook URL's for each filter-matched transfer event.

#### Webhook Payload Properties

| Key               | Type              | Description                                                                                                        |
| ----------------- | ----------------- | ------------------------------------------------------------------------------------------------------------------ |
| `transactionHash` | `string`          | Hash of the transaction in which the event took place                                                              |
| `transferEvents`  | `[]TransferEvent` | The transfer events that took place in the transaction. At least one of these matched the criteria from the filter |
| `textMessage`     | `string`          | The alert message formulated by Brist                                                                              |

#### TransferEvent Properties

| Key               | Type            | Description                                                                                 |
| ----------------- | --------------- | ------------------------------------------------------------------------------------------- |
| `sender`          | `string`        | The address of the sender                                                                   |
| `receiver`        | `string`        | The address of the recipient                                                                |
| `amount`          | `int`           | The (unadjusted) number of tokens transferred. Only applies to ETH or ERC20 transfers       |
| `nftMetadata`     | `NFTMetadata`   | Enriched information about the NFT. Only applies if the transferred asset was ERC721        |
| `tokenMetadata`   | `TokenMetadata` | Enriched information about the ERC20 token. Only applies if the transferred asset was ERC20 |
| `contractAddress` | `string`        | Address of the contract underlying the transfer                                             |
| `contractType`    | `string`        | One of `ETH Transfer`, `ERC20 Transfer`, or `ERC721 Transfer`                               |

#### NFTMetadata Properties

Note that the NFT Metadata object is only present if the transferred asset in this event was an NFT.

| Key                | Type     | Description                                                  |
| ------------------ | -------- | ------------------------------------------------------------ |
| `tokenID`          | `uint`   | The ID of the token in the NFT collection                    |
| `collectionName`   | `string` | The name of the NFT collection (e.g. `Bored Ape Yacht Club`) |
| `collectionSymbol` | `string` | The symbol of the NFT collection (e.g. `BAYC`)               |

For information on how to set up the Webhook output, see the relevant Guide below.

{% content-ref url="/pages/X3m4SK8Bee8zdd466Zey" %}
[Broken mention](broken://pages/X3m4SK8Bee8zdd466Zey)
{% endcontent-ref %}

{% hint style="warning" %}
Brist's POST requests are not authenticated, though this feature will be released soon. If you need authentication to ensure that the requests come from Brist, please reach out to <jagath@usebrist.com>, and we'll add keys to your alerts. One workaround is to add a secret string to your webhook path.
{% endhint %}


---

# 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.usebrist.com/fundamentals/outputs.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.
