> ## Knowledge Base Index
> Fetch the complete knowledge base index at: https://help.crisp.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

*Learn how to configure a Crisp Status Reporter library for `push` mode monitoring.*

Crisp Status Reporter lets application nodes push their health to Crisp Status Page. Use it when you want an application to report its own status, CPU load, and RAM usage instead of being checked only through public HTTP, TCP, or ICMP polling.

---

# ${color}[#0080dd](Choose a reporter library)

Crisp provides Status Reporter libraries for several application platforms. Install the library that matches your application stack, then follow the setup instructions from its GitHub repository.

__Available reporter libraries:__
* **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)

|| Installation instructions are maintained in each library repository because every language and runtime has its own setup requirements.

---

# ${color}[#0080dd](Get your reporter token and node identifiers)

When configuring a reporter library, you need three values: `token`, `service_id`, and `node_id`. You can retrieve them from your Crisp Status Page settings.

Open [Crisp](https://app.crisp.chat), then go to **Settings → Status Page**.

#### ${color}[#445055](Get your reporter token)

Your private reporter token is available in **Configure your Status Reporter**. Copy it and keep it private, because it allows your reporter to authenticate status updates.

|| The reporter token is an alphanumeric string separated by dashes.

#### ${color}[#445055](Get your node identifiers)

Your `service_id` and `node_id` values are available from **Manage monitored services**. Hover the node you want to configure, then click **Show details** to reveal its identifiers.

![Node identifiers in Crisp Status Page settings](https://storage.crisp.chat/users/helpdesk/website/87ae2703583ac800/cleanshot-2024-10-28-at-095057_bvyvhp.png =1000xauto)

---

# ${color}[#0080dd](Report status manually)

||| This section is for advanced integrations only. Use the official reporter libraries whenever possible, unless you have a specific reason to call the Status Reporter API yourself.

Crisp Status exposes a reporter endpoint you can call at a fixed interval. This is useful when you need a custom integration that is not covered by an existing library.

#### ${color}[#445055](Request format)

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

**Request method:** `HTTP POST`

**Request authentication:** `Basic Auth`, with a blank username and your reporter `token` as the password

**Request content type:** `application/json; charset=utf-8`

```js
{
  "replica_id" : "[replica_id]",
  "interval" : "[interval_seconds]",

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

__Replace these values before sending the request:__
* **`[service_id]`** → the service identifier from your Crisp Status settings
* **`[node_id]`** → the node identifier from your Crisp Status settings
* **`[replica_id]`** → a replica identifier, such as an application hostname or IP address
* **`[interval_seconds]`** → the reporting interval in seconds, such as `60`
* **`[cpu_load_average]`** → a CPU load value from `0.00` to `10.00`
* **`[ram_percent_used]`** → a RAM usage ratio from `0.00` to `1.00`

||| Manual reporting only works for nodes configured in `push` mode.

#### ${color}[#445055](Reporting interval)

Send reports at the same interval you declare in the request body. For example, if `interval` is set to `60`, your application should report every 60 seconds.

If Crisp Status does not receive the expected report in time, the node can be marked as `dead`.

---

# ${color}[#0080dd](Frequently Asked Questions)

*Still have questions which were not covered in this article? Here is a collection of the most frequently asked questions on this topic.*

###### ${color}[#F08820](Should I use a library or the manual API endpoint?)

**Use a reporter library whenever possible.** The libraries handle the standard reporting flow for you and reduce the risk of sending malformed or irregular status reports.

Use the manual API endpoint only for custom runtimes or advanced integrations where no official library fits your setup.

###### ${color}[#F08820](What happens if my application stops reporting?)

**The node can be marked as `dead`.** In `push` mode, Crisp Status expects reports at the interval you configured. If reports stop arriving on time, Crisp assumes the node may be down.