---
title: "Push a probe result"
method: POST
path: "/api/v1/probes"
tags: ["ingestion"]
---

# Push a probe result

`POST /api/v1/probes`

## Request

- Base URL: `https://monit.rs`
- URL: `https://monit.rs/api/v1/probes`
- Auth: HTTP bearer

Push a self-reported probe. Minimal body (endpoint_id + is_success) = pass/fail check. Full body (status_code + response_body + ...) enables schema-diff regression detection.

## Headers

- `X-Backfill` 'true'
- `Idempotency-Key` string

## Request body

- ProbeIngestRequest
  - `endpoint_id` string, uuid, required
  - `is_success` boolean, required
  - `status_code` integer, nullable
  - `response_time_ms` number, nullable
  - `response_body` unknown
  - `response_headers` object, nullable
  - `error_message` string, nullable
  - `checked_at` string, date-time, nullable

## Response `202`

Accepted. Poll GET /probes/{id} for derived fields.

## Other responses

- `401`: Missing or invalid API key.
- `403`: Missing `ingest:probes` scope.
- `404`: Endpoint not owned by caller.
- `422`: Validation error (e.g. checked_at out of range).
- `429`: Rate limit exceeded.

---

[API](https://skmtc.dev/monit/apis/monit-rs-public-api.md) · [All operations](https://skmtc.dev/monit/apis/monit-rs-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/monit/apis/monit-rs-public-api/revisions/7e1923981112?raw)
