---
title: "Create a monitor (mints an ingest signing secret)"
method: POST
path: "/api/monitor"
tags: ["Monitoring"]
---

# Create a monitor (mints an ingest signing secret)

`POST /api/monitor`

## Request

- Base URL: `https://api.wordis-bond.com`
- URL: `https://api.wordis-bond.com/api/monitor`
- Auth: HTTP bearer

Define what "good" looks like via `scenarioGoal` (+ optional `assertions` / `rubric`) — the same judge inputs a test suite uses. Then stream completed calls to POST /api/monitor/{id}/events.

## Request body

- MonitorInput: A production monitor. `scenarioGoal` (+ optional `assertions` / `rubric`) is what the judge scores each call against — the same inputs a test suite uses. `sampleRate` and the plan monthly cap bound cost.
  - `name` string, required
  - `scenarioGoal` string, required
  - `assertions` string[]: Optional natural-language checks the agent must satisfy.
  - `rubric` string, nullable: Optional free-text rubric appended to the judge instructions.
  - `language` string
  - `enabled` boolean
  - `sampleRate` number: Fraction of ingested calls to score.
  - `baselineWindow` integer: Rolling-window size for the health baseline.
  - `minBaseline` integer: Scored events required before drift can fire.
  - `alertEmail` boolean
  - `alertWebhookUrl` string, uri, nullable: Optional signed outbound alert webhook. Public https, SSRF-validated at set time.

## Response `201`

Created

- object
  - `data` Monitor, required: A monitor as returned — never includes the ingest secret (read it from /secret).
    - `name` string, required
    - `scenarioGoal` string, required
    - `assertions` string[]: Optional natural-language checks the agent must satisfy.
    - `rubric` string, nullable: Optional free-text rubric appended to the judge instructions.
    - `language` string
    - `enabled` boolean
    - `sampleRate` number: Fraction of ingested calls to score.
    - `baselineWindow` integer: Rolling-window size for the health baseline.
    - `minBaseline` integer: Scored events required before drift can fire.
    - `alertEmail` boolean
    - `alertWebhookUrl` string, uri, nullable: Optional signed outbound alert webhook. Public https, SSRF-validated at set time.
    - `id` string, uuid, required
    - `health` 'unknown' | 'healthy' | 'degraded' | 'critical', required
    - `createdAt` string, date-time
  - `error` union, required
    - object
    - string

## Other responses

- `401`: Missing, invalid, or revoked credentials.
- `402`: The plan does not permit this action, or the monthly quota is spent with no overage (e.g. a starter plan attempting a PSTN run). Body carries an upgrade hint; see GET /api/billing/plans.
- `422`: The request body failed validation.

---

[API](https://skmtc.dev/wordis-bond/apis/word-is-bond-voice-agent-testing-api.md) · [All operations](https://skmtc.dev/wordis-bond/apis/word-is-bond-voice-agent-testing-api/llms.txt) · [OpenAPI document](https://skmtc.dev/wordis-bond/apis/word-is-bond-voice-agent-testing-api/revisions/66c2d5480d84?raw)
