A check-in is an item in an envelope called check_in. It consists of a JSON payload that looks roughly like this:

  "check_in_id": "83a7c03ed0a04e1b97e2e3b18d38f244",
  "monitor_slug": "my-monitor",
  "status": "in_progress",
  "duration": 10.0,
  "release": "1.0.0",
  "environment": "production",
  "contexts": {
    "trace": {
      "trace_id": "8f431b7aa08441bbbd5a0100fd91f9fe"

The following fields exist:


String, required. Check-In ID (unique and client generated).

This may be provided as a empty UUID (128 bit zero value) to indicate to Sentry that the checkin should update the most recent "in_progress" check-in. If the most recent check-in is not in progress a new one will be created instead.


String, required. The distinct slug of the monitor.


String, required. The status of the check-in. Can be one of the following:

  • in_progress: The check-in has started.
  • ok: The check-in has completed successfully.
  • error: The check-in has failed.


Number, optional. The duration of the check-in in seconds. Will only take effect if the status is ok or error.


String, optional. The release.


String, optional. The environment.


Object, optional. A monitor configuration (defined below) that is stored with the check-in in order to verify the state of the monitor at the time of the check-in.


Object, optional. A dictionary of contextual information about the environment running the check-in. Right now we only support the trace context and use the trace_id in order to link check-ins to associated errors.

In addition to sending check-in details, the SDK may also provide monitor configuration, allowing monitors to be created or updated when sending check-ins.

  "check_in_id": "83a7c03ed0a04e1b97e2e3b18d38f244",
  "monitor_slug": "b7645b8e-b47d-4398-be9a-d16b0dac31cb",
  "status": "in_progress",
  "monitor_config": {
    "schedule": {
      "type": "crontab",
      "value": "0 * * * *"
    "checkin_margin": 5,
    "max_runtime": 30,
    "failure_issue_threshold": 2,
    "recovery_threshold": 2,
    "timezone": "America/Los_Angeles",
    "owner": ""

The following fields exist under the monitor_config key:


Object, required. See schedule configuration.


Number, optional. The allowed margin of minutes after the expected check-in time that the monitor will not be considered missed for.


Number, optional. The allowed duration in minutes that the monitor may be in_progress for before being considered failed due to timeout.


Number, optional. The number of consecutive failed check-ins it takes before an issue is created.


Number, optional. The number of consecutive OK check-ins it takes before an issue is resolved.


String, optional. A tz database string representing the timezone which the monitor's execution schedule is in.


String, optional. An actor identifier string. This looks like team:a-sentry-team. IDs can also be used but will result in a poor DX.

This configuration format differs slightly from what is accepted in the monitors frontend APIs.


String, required. One of crontab or interval.


String, required. The crontab schedule string, e.g. 0 * * * *.


Number, required. The interval value.


String, required. The interval unit. Should be one of year, month, week, day, hour, minute.

Help improve this content
Our documentation is open source and available on GitHub. Your contributions are welcome, whether fixing a typo (drat!) or suggesting an update ("yeah, this would be better").