Rensei docs
API ReferenceFailure Signatures

List failure signatures visible to the caller (org + system tier).

Returns the caller's org-scoped signatures plus every system-tier (NULL organization_id) signature, ordered by signature key (an org row sorts before a system row of the same key, then by tier). Optional `tier`/`kind` query params narrow the result.

GET
/api/failure-signatures

Authorization

headerAuthorizationBearer <WorkOS user access token>

WorkOS user access token created by the Rensei CLI. The authenticated organization is resolved from membership and may be narrowed with X-Rensei-Org.

Query Parameters

tier?string
Value in"observed""assisted""auto"
kind?string
Value in"remedy""constraint""diagnostic""prevention"

Response Body

Failure signatures visible to the caller.

application/json
  1. response
signatures*array<>
Example Request
curl -X GET 'https://app.rensei.ai/api/failure-signatures'
Example Response
{  "signatures": [    {      "id": "string",      "organizationId": "string",      "signatureKey": "string",      "entryKind": "remedy",      "matcher": {        "ciConclusion": "success",        "mergeable": "MERGEABLE",        "runCount": {          "op": "eq",          "value": 0        },        "logTailPattern": "string",        "launchOutcomeReason": "launch_rejected",        "harness": "string",        "defectClass": "string",        "stage": "seat",        "terminalReasonPattern": "string"      },      "remedyVerb": "rebase_main",      "blastRadiusClass": "read_only",      "tier": "observed",      "attemptsCap": -9007199254740991,      "provenance": {        "sourceIssue": "string",        "decisionRef": "string",        "confirmedSessions": []      },      "createdAt": "string",      "updatedAt": "string"    }  ]}

Seat scorecard by project, dispatch kind, card revision, model, profile, harness and effort.

Seat scorecard for every dispatch in a date range, grouped by project × dispatch kind × card revision at dispatch time × model × profile × harness × effort. Per bucket: seat count, status mix, the completed seats that delivered over budget (a stored runner budget breach - apart from failures), the review seats' typed verdict mix (with seats missing a verdict), the GitHub review mix, dollars and tokens per seat (every cost row), p50/p90 duration, eval pass rate, first-pass merge and rework rounds. Review accuracy, profile, effort, time to merge and cache share are not reported until their sources land; `unavailableDimensions` names the issue for each, and for seats with no stored launch revision or typed verdict. The window is half-open: dispatchedAfter is inclusive (default 30 days before dispatchedBefore or now) and dispatchedBefore is exclusive. The scan reads the newest dispatches first and sets `truncated` when the limit cut it. A projectId the caller cannot access answers 404, exactly like a missing project. Missing links land in an "unattributed" bucket; open PRs count as pending. Each source reports its latest row and fresh/stale status; every metric derived from a stale source is null, with the reason in `unavailable`.

Create an org-scoped failure signature (always tier='observed'). Requires the org admin role.

Creates a signature owned by the caller's org. Requires org admin (a plain `member` or the read-only `auditor` role is refused 403). The route forces tier='observed' - any other tier in the body is refused 422 tier_not_allowed. A never-auto blast_radius_class under tier='auto' is refused 422 never_auto_class (defense in depth; unreachable via this route since tier is forced). A duplicate (organization_id, signature_key) is refused 409 duplicate_key.