Skip to main content
POST
Run a draft probe once and return the value it measures, without creating a metric

Authorizations

Authorization
string
header
required

An organization API key (obs_pub_…) sent as Authorization: Bearer <key>. Each key carries scopes; an endpoint lists the scope it needs. read:change_events is reserved: keys can carry it, but no endpoint needs it yet.

Body

application/json
source_type
enum<string>
required

The probe type. custom, otlp (push), manual, heartbeat and alert cannot be tested.

Available options:
prometheus,
http,
tcp,
dns,
icmp,
tls_cert,
grpc,
websocket,
mtls_http,
database,
cloudwatch,
loki,
elasticsearch,
host
source_config
object
required

The same object a metric's source_config takes for this source_type (see the SourceConfig schemas used by applyConfig); validated the same way before anything runs.

agent_id
string<uuid> | null

The Observer Agent to run the test on (listAgents). It must be online and run agent 1.7.0 or later. Omit it to test a public HTTP check from Observer's cloud instead (header_refs secrets are not sent then); every other source type needs an agent.

thresholds
object

Optional. With all four set, status says what the metric's status would be. Strict comparisons: over is >, under is <, equal is =.

wait_seconds
integer
default:20

How long to wait for the agent's answer before returning 202 with a job to poll. Cloud tests always answer at once.

Required range: 0 <= x <= 20

Response

the probe ran

value
number | null
required

What the probe measured, in unit. null when it got no value (see reason).

unit
string | null
required

Unit of value (ms, %, days, s, B/s), or null for a bare number. Same rules as a metric's unit.

status
enum<string> | null
required

The status these thresholds give the value; no_data when the probe got no value. null when a value was measured but thresholds were not all given.

Available options:
healthy,
degraded,
unhealthy,
no_data,
null
duration_ms
integer
required

How long the probe took, in milliseconds.

mode
enum<string>
required

agent: ran on the agent's network with its secrets. cloud: a public HTTP check run from Observer's cloud.

Available options:
agent,
cloud
value_description
string | null

What the value is, in words.

reason
string | null

Why there is no value: the agent's reason code (e.g. ETIMEDOUT, unexpected_status:503). null on success.

reason_label
string | null

Short human description of reason.

reason_hint
string | null

What usually causes reason and how to fix it.

job_id
string<uuid> | null

The agent job (agent mode only).

agent_id
string<uuid> | null
thresholds_complete
boolean
skipped_secret_headers
string[]

Cloud mode only: header_refs names that were not sent, because their values live on an agent host.