Skip to main content
POST
curl

Authorizations

Authorization
string
header
required

An API key (sig_...), or a session token from the web app.

Path Parameters

agentId
string<uuid>
required

The agent's id.

Pattern: ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$
Example:

"3f1c2d4e-5a6b-4c7d-8e9f-0a1b2c3d4e5f"

Body

application/json
spec
object

A TestSpec (see the TestSpec component and GET .../tests/schema). Checked as a whole: a refused spec names the first problem's path in param.

callId
string<uuid>

A stored call of this agent to replay as a production test.

Pattern: ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$
Example:

"3f1c2d4e-5a6b-4c7d-8e9f-0a1b2c3d4e5f"

issueKey
string

With callId: the issue the test reproduces (it then expects the defect).

Minimum string length: 1

Response

The test as stored.

object
enum<string>
required
Available options:
test
id
string<uuid>
required
Pattern: ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$
Example:

"3f1c2d4e-5a6b-4c7d-8e9f-0a1b2c3d4e5f"

title
string | null
required

What the test list calls it. Null on tests made before titles.

source
enum<string>
required

production: a stored call replayed. custom: written as a spec. probe: written for a brief line no call exercises; never gates.

Available options:
production,
custom,
probe
lane
enum<string> | null
required

The lane a defect lives in: hearing, understanding, flow, speaking or integrations.

Available options:
hearing,
understanding,
flow,
speaking,
integrations,
null
intentSlug
string | null
required

The caller's intent the test covers.

tier
enum<string>
required

text runs a simulated chat; phone is not built yet.

Available options:
text,
phone
sourceCallId
string<uuid> | null
required

The production call it was made from, or based on.

Pattern: ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$
Example:

"3f1c2d4e-5a6b-4c7d-8e9f-0a1b2c3d4e5f"

sourceIssueKey
string | null
required

The issue it reproduces, for a test made from an issue.

persona
object
required

The caller the test plays when a run does not name personas.

revision
integer
required

Bumped by every accepted edit. GET .../revisions has each one.

state
enum<string>
required

draft: made by a key or the copilot and not accepted yet; it runs and reports and never gates or counts. accepted: counts. POST .../tests/accept accepts drafts.

Available options:
draft,
accepted
acceptedAt
string<date-time> | null
required

When it was accepted. Null on a draft.

Example:

"2026-10-02T14:03:07.120Z"

criteriaApprovedAt
string<date-time> | null
required

When a person approved its criteria. From then on a change to them needs a person's approval; anyone else's is filed as a criteria proposal.

Example:

"2026-10-02T14:03:07.120Z"

expect
enum<string>
required

What the test claims: an issue test expects the defect (fail) until its fix ships.

Available options:
pass,
fail
guard
boolean
required

Marked a guard test: it runs several times every release and must pass every time.

gates
boolean
required

Whether its results count toward a release. Only a calibrated test in the current scoring epoch gates.

gateReason
string
required

Why it gates or does not, in a few words.

written
boolean
required

SignalMD generated the caller (a generated test). Such a test reports and never gates.

calibration
object | null
required
inRelease
boolean
required

In the release set, which runs on every new version and from CI.

testSets
object[]
required

The test sets it belongs to.

tags
string[]
required
criteriaCount
integer
required

Criteria lines after resolving against the current brief.

fixtureCounts
object
required

Where each tool's mocked answer comes from.

lastAttempt
object | null
required

The latest attempt with the test's own caller. Null when it never ran.

autoImprove
object
required
archivedAt
string<date-time> | null
required

Set when retired. An archived test is not run.

Example:

"2026-10-02T14:03:07.120Z"

createdAt
string<date-time>
required
Example:

"2026-10-02T14:03:07.120Z"

updatedAt
string<date-time>
required
Example:

"2026-10-02T14:03:07.120Z"

spec
object
required

A test as a JSON document: who calls, what each tool answers, and what must hold. GET .../tests/schema has its JSON Schema; POST .../tests/validate checks one.

resolvedCriteria
object[]
required

The criteria as they will be checked against the current brief.

warnings
object[]
required

Problems that did not stop the spec being stored.

unfixturedTools
string[]
required

Tools left without a mocked answer, for a test made from a call. They answer with a fixed 'not available' error.