> ## Knowledge Base Index
> Fetch the complete knowledge base index at: https://staging.chrisp.chat/sitemap.xml
> Use this file to discover available pages before exploring further.
> Pure-Markdown content can be obtained by appending a '.md' suffix to the content URLs listed in the sitemap (without the trailing slash).

# How to setup the Crisp Status Reporter library?

****If you're using Crisp Status to monitor nodes in**** **`**push**`** ****mode, you will need to setup a Crisp Status Reporter on each of your monitored application node.****

Crisp Status Reporter libraries are easy to install in your applications. Crisp supports a growing number of application platforms. You may contact us if you need a non-supported programming language or platform added.

# Libraries

Find a Crisp Status Reporter library for your language:

* ****Rust****: [rs-crisp-status-reporter](https://github.com/crisp-im/rs-crisp-status-reporter)
* ****Node****: [node-crisp-status-reporter](https://github.com/crisp-im/node-crisp-status-reporter)
* ****Golang****: [go-crisp-status-reporter](https://github.com/crisp-im/go-crisp-status-reporter)
* ****Python****: [python-crisp-status-reporter](https://github.com/crisp-im/python-crisp-status-reporter)

|| As each language is different and has its syntax specificities, instructions on how to install a reporter library are available on each library GitHub page.

# Get your reporter token & node identifier

When configuring your reporter library in your application, you'll need the following values: `` `token` ``, `` `service_id` ``, `` `node_id` ``.

You can retrieve them from your Crisp Status settings here:

1. Go to your [Crisp Dashboard](https://app.crisp.chat/)
2. Go to Settings, then click on Status Page

## Get your token

You can get your secret token in the "Configure your Status Reporter" section.

|| The token is a chain of alphanumerical characters, separated by dashes.

## Get node identifiers

You can get your node identifiers ( `` `node_id` `` + `` `service_id` ``) in the "Manage monitored services" section.

When you hover a node with your mouse, click on "Show details" to reveal the identifiers.

![Reveal the node identifiers by clicking on "Show details"](https://storage.crisp.chat/users/helpdesk/website/-/3/e/0/c/3e0c97c316301a00/bd880994-b844-445c-9d50-19489b_1n0bzjv.png)

# Manually report status

||| This section is only for advanced uses. In some very specific integrations, you may want to push your own status to the Crisp Status Reporter API endpoint, instead of using a library that we provide. Always use our libraries if in doubt of what you need.

Crisp Status exposes a Crisp Status Reporter API endpoint that you can use to do the periodic status push yourself. This section explains the format of a reporting request, and when to trigger such a request.

## Report request format

****API endpoint:**** `` `[https://report.crisp.watch/v1/report/[service_id]/[node_id]](https://report.crisp.watch/v1/report/[service_id]/[node_id])` ``

|| Replace `` `[service_id]` `` and `` `[node_id]` `` with your node identifiers. See "Get node identifiers" above for more on how you can get those identifiers.

****Request method:**** `` `HTTP POST` ``  
****Request authentication:**** `` `Basic Auth` ``, with username blank and password to token value (see "Get your token" above)  
****Request content type:**** `` `application/json; charset=utf-8` ``

****Request body:****

```
{  "replica_id" : "[replica_id]",  "interval" : "[interval_seconds]","load" : {    "cpu" : "[cpu_load_average]",    "ram" : "[ram_percent_used]"  }}
```

__Replace:__

* ****[replica_id]:**** a replica identifier, can be anything defining the host pushing its status, eg. its IP address like `` `192.168.1.2` ``
* ****[interval_seconds]:**** the interval at which you plan to send periodic reports, in seconds, eg. `` `60` `` for 1 minute
* ****[cpu_load_average]:**** a float number from `` `0.00` `` to `` `10.00` `` indicating current CPU load (can be `` `0.00` ``)
* ****[ram_percent_used]:**** a float number from `` `0.00` `` to `` `1.00` `` indicating the current percent of RAM used (can be `` `0.00` ``)

||| Reporting requests will only work for nodes in `` `push` `` mode.

## When to report status

The status reporting request is to be executed at a fixed interval, eg. every minute. Once you start reporting every minute, and you've set `` `interval` `` in your request body to eg. `` `60` `` seconds, you need to commit to reporting at this interval. If you don't report in time, Crisp Status will mark the node as `` `DEAD` ``.