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"

testId
string<uuid>
required

The test'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
verdict
enum<string>
required

stable: the bot passed every run. bot_defect: the bot failed the same way on every run, so it has a real defect to fix. bot_flaky: the bot's results were unstable, some runs passed and some failed. test_issue: the test itself needs a fix (a tool with no mock, the simulated caller off its script, a variable the test did not hand in, a run cut off, or a pass that never reached what it checks); it needs that shown on a recorded run, and it blocks accepting until a new revision gets a new verdict.

Available options:
stable,
bot_defect,
bot_flaky,
test_issue
why
string
required

What the transcript shows, in two sentences.

Required string length: 1 - 400
attemptIds
string<uuid>[]

The attempts it rests on. Default: the runs the stability reading read.

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}$
goalId
string<uuid>

The goal it was recorded under.

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"

evidence
object[]

test_issue only: the items on the test's side it rests on, each naming a run and what was wrong (the tool, variable, behaviour or check). Each must match what SignalMD finds on that run, or the verdict is refused. Default: everything SignalMD finds on the runs read.

Maximum array length: 20

Response

The verdict as stored.

object
enum<string>
required
Available options:
test_verdict
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"

testId
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"

revision
integer
required
current
boolean
required

Recorded on the test's current revision.

verdict
enum<string>
required

stable: the bot passed every run. bot_defect: the bot failed the same way on every run, so it has a real defect to fix. bot_flaky: the bot's results were unstable, some runs passed and some failed. test_issue: the test itself needs a fix (a tool with no mock, the simulated caller off its script, a variable the test did not hand in, a run cut off, or a pass that never reached what it checks); it needs that shown on a recorded run, and it blocks accepting until a new revision gets a new verdict.

Available options:
stable,
bot_defect,
bot_flaky,
test_issue
why
string
required

Two sentences at most, in the transcript's words.

evidenceAttemptIds
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}$
stability
object
required

The stability reading when it was recorded.

principalKind
enum<string>
required

Who recorded it: a person, an API key, or the in-app copilot.

Available options:
person,
key,
copilot
recordedBy
string | null
required

A user id, or key:.

goalId
string<uuid> | null
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"

createdAt
string<date-time>
required
Example:

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