application/json
Schema: object
Rendered from the frozen contract descriptor at /api/openapi.json.
It is the machine-readable contract this reference is drawn from; you can read or download it directly.
Append a bilateral survival lifecycle event.
Authenticated engine ingress for a marketplace bilateral verdict lifecycle fact. The caller is tenant-bound by its bearer key; replaying the same source, verdict_ref, and state is idempotent.
Schema: object
| Status | Description | Content type | Schema | Examples |
|---|---|---|---|---|
| 201 | Bilateral survival event appended or replayed idempotently. | |||
| 400 | Invalid bilateral event payload. | application/problem+json | Problem | |
| 401 | Missing or invalid bearer API key. | application/problem+json | Problem | |
| 413 | Request body is too large. | application/problem+json | Problem | |
| 500 | Internal server error. | application/problem+json | Problem |
Submit a verification (async/202 default; bounded-sync opt-in).
Submit a rubric_id + a submission. The submission is {inline} | {uri} | the Contract 05 typed roles object. For faithfulness/grounding, send the work as `output` and its source as `context[]` — the judge is told which blob is authoritative and treats un-grounded or contradicted claims as violations.
| Name | In | Required | Schema type |
|---|---|---|---|
| Idempotency-Key | header | false | string |
Schema: VerifyRequest
{
"rubric_id": "7f8e9d6c-1a2b-4c3d-8e9f-0a1b2c3d4e5f",
"submission": {
"output": "Q2 revenue rose 12% to $4.2M and monthly churn fell to 1.8%.",
"context": [
{
"label": "source",
"value": "Q2 results: revenue grew 12% quarter-over-quarter to $4.2M. Monthly churn improved from 2.4% to 1.8%."
}
]
},
"options": {
"wait_ms": 45000
}
}{
"rubric_id": "7f8e9d6c-1a2b-4c3d-8e9f-0a1b2c3d4e5f",
"submission": {
"input": "What is the refund window, and do disputes affect it?",
"output": "Refunds are accepted within 30 days of delivery; an open dispute pauses that clock until resolution."
}
}{
"rubric_id": "7f8e9d6c-1a2b-4c3d-8e9f-0a1b2c3d4e5f",
"submission": {
"output": "The capital of France is Paris.",
"reference": "Paris"
}
}{
"rubric_id": "7f8e9d6c-1a2b-4c3d-8e9f-0a1b2c3d4e5f",
"submission": {
"output": "The customer was refunded in full on 2026-05-14.",
"evidence": [
{
"label": "support-ticket",
"value": "Ticket #8821: refund of $42.00 issued 2026-05-14."
}
]
}
}{
"rubric_id": "7f8e9d6c-1a2b-4c3d-8e9f-0a1b2c3d4e5f",
"submission": {
"output": "{\"invoice_number\":\"INV-48213\",\"total\":1250.5,\"currency\":\"USD\"}",
"values": {
"total": 1250.5,
"currency": "USD"
}
}
}{
"rubric_id": "7f8e9d6c-1a2b-4c3d-8e9f-0a1b2c3d4e5f",
"submission": {
"inline": "INV-4821 total $1,250.50"
}
}{
"rubric_id": "7f8e9d6c-1a2b-4c3d-8e9f-0a1b2c3d4e5f",
"submission": {
"content": "The answer text, submitted via the legacy content field."
}
}{
"rubric_id": "7f8e9d6c-1a2b-4c3d-8e9f-0a1b2c3d4e5f",
"submission": {
"uri": "https://example.com/artifacts/answer.txt"
}
}| Status | Description | Content type | Schema | Examples |
|---|---|---|---|---|
| 200 | Completed verdict (bounded-sync). | application/json | VerificationObject | |
| 202 | Accepted (async). | application/json | VerifyAccepted | |
| 400 | Invalid request. | application/problem+json | Problem | |
| 401 | Missing, invalid or expired bearer API key. | application/problem+json | Problem | |
| 403 | API key lacks the required scope. | application/problem+json | Problem | |
| 409 | Request conflicts with an existing idempotency key. | application/problem+json | Problem | |
| 413 | Request body is too large. | application/problem+json | Problem | |
| 500 | Internal server error. | application/problem+json | Problem |
Publicly verify a signed proof artifact.
Unauthenticated, read-only proof verification. The request carries a signed proof-envelope document already issued by Acretix; the API re-verifies the Ed25519 signature against the published key and returns only summary credential fields. It never re-signs or returns raw claim/evidence content.
Schema: object
| Status | Description | Content type | Schema | Examples |
|---|---|---|---|---|
| 200 | Proof validity. Valid proofs include a summary credential and SVG badge. | application/json | ||
| 400 | Invalid proof payload. | application/problem+json | Problem | |
| 403 | Request source is not trusted. | application/problem+json | Problem | |
| 413 | Request body is too large. | application/problem+json | Problem | |
| 429 | Rate limited. | application/problem+json | Problem | |
| 500 | Internal server error. | application/problem+json | Problem |
Ingest source-attested evidence (staging).
Accepts a payload signed by a registered source key distinct from the claimant. Verified Ed25519 signatures ingest as source_attested (T1); bad or unverifiable signatures ingest as claimant (T3).
Schema: SourceAttestedEvidenceRequest
| Status | Description | Content type | Schema | Examples |
|---|---|---|---|---|
| 201 | Evidence packet recorded with an explicit trust tier. | application/json | SourceAttestedEvidenceResponse | |
| 400 | Invalid request. | application/problem+json | Problem | |
| 401 | Missing, invalid or expired bearer API key. | application/problem+json | Problem | |
| 404 | Source not registered for tenant. | application/problem+json | Problem | |
| 413 | Request body is too large. | application/problem+json | Problem | |
| 500 | Internal server error. | application/problem+json | Problem |
List tenant-scoped verifications for the explorer.
Read-only verification explorer. Tenant is resolved from the API key or the request-threaded identity-contract tenant header; the response echoes tenant_id for a load-bearing caller check.
| Name | In | Required | Schema type |
|---|---|---|---|
| status | query | false | VerificationStatus |
| determination | query | false | string |
| flagged | query | false | boolean |
| from | query | false | string |
| to | query | false | string |
| limit | query | false | integer |
| offset | query | false | integer |
| Status | Description | Content type | Schema | Examples |
|---|---|---|---|---|
| 200 | Tenant-scoped verification list. | application/json | VerificationList | |
| 400 | Invalid filter. | application/problem+json | Problem | |
| 401 | Missing, invalid or expired bearer API key. | application/problem+json | Problem | |
| 403 | API key lacks the required scope. | application/problem+json | Problem | |
| 500 | Internal server error. | application/problem+json | Problem |
Get a verification status + verdict.
| Status | Description | Content type | Schema | Examples |
|---|---|---|---|---|
| 200 | Verification object. | application/json | VerificationObject | |
| 401 | Missing, invalid or expired bearer API key. | application/problem+json | Problem | |
| 403 | API key lacks the required scope. | application/problem+json | Problem | |
| 404 | Verification not found. | application/problem+json | Problem | |
| 500 | Internal server error. | application/problem+json | Problem |
Get the signed proof object.
| Status | Description | Content type | Schema | Examples |
|---|---|---|---|---|
| 200 | Proof object. | |||
| 401 | Missing, invalid or expired bearer API key. | application/problem+json | Problem | |
| 403 | Access is forbidden. | application/problem+json | Problem | |
| 404 | Proof not found. | application/problem+json | Problem | |
| 500 | Internal server error. | application/problem+json | Problem |
Get the latest customer review determination (cockpit→adapter round-trip).
The latest single-party customer review decision for a verification (tenant-scoped). A product adapter polls this to finalize a held check; verify reports the decision + consequence marker only (decide-not-execute).
| Status | Description | Content type | Schema | Examples |
|---|---|---|---|---|
| 200 | The latest review determination. | |||
| 400 | Invalid request. | application/problem+json | Problem | |
| 401 | Missing, invalid or expired bearer API key. | application/problem+json | Problem | |
| 403 | Access is forbidden. | application/problem+json | Problem | |
| 404 | No determination recorded for this verification. | application/problem+json | Problem | |
| 500 | Internal server error. | application/problem+json | Problem |
Download the signed attestation envelope(s) for third-party verification.
Streams the exact canonical bytes that were hashed and signed, plus the signature, so a holder can re-verify offline against the published JWKS (/.well-known/acretix-verify/keys.json). See /docs/verify-a-proof for the recipe.
| Status | Description | Content type | Schema | Examples |
|---|---|---|---|---|
| 200 | Signed proof-envelope document. | |||
| 401 | Missing, invalid or expired bearer API key. | application/problem+json | Problem | |
| 403 | Access is forbidden. | application/problem+json | Problem | |
| 404 | No proof recorded. | application/problem+json | Problem | |
| 500 | Internal server error. | application/problem+json | Problem |
Re-verify (new evidence / higher tier / focused criterion).
| Status | Description | Content type | Schema | Examples |
|---|---|---|---|---|
| 200 | Re-verify report. | |||
| 400 | Invalid request. | application/problem+json | Problem | |
| 401 | Missing, invalid or expired bearer API key. | application/problem+json | Problem | |
| 403 | API key lacks the required scope. | application/problem+json | Problem | |
| 404 | Verification not found. | application/problem+json | Problem | |
| 500 | Internal server error. | application/problem+json | Problem |
Record tenant ground-truth (outcome feedback) on a completed verification.
Append-only outcome label for a terminal verification (succeeded|failed). Feeds calibration; it does not change the signed verdict. The verification must belong to the caller and be terminal.
Schema: FeedbackRequest
| Status | Description | Content type | Schema | Examples |
|---|---|---|---|---|
| 201 | Feedback recorded. | application/json | FeedbackAccepted | |
| 400 | Invalid outcome/note, or the verification is not terminal yet. | application/problem+json | Problem | |
| 401 | Missing, invalid or expired bearer API key. | application/problem+json | Problem | |
| 404 | Verification not found. | application/problem+json | Problem | |
| 500 | Internal server error. | application/problem+json | Problem |
Record a customer cockpit determination.
Contract 11 §E / Contract 14 C.1. Requires identity-contract bearer, request-threaded tenant, x-acretix-auth-subject=account_tenant_mapping, and a tenant-scoped customer_reviewer subject. Records the decision and a product-adapter consequence marker; it is not a training path.
Schema: CockpitDeterminationRequest
| Status | Description | Content type | Schema | Examples |
|---|---|---|---|---|
| 201 | Customer determination recorded. | application/json | CockpitDeterminationResponse | |
| 400 | Invalid decision body. | application/problem+json | Problem | |
| 401 | Missing, invalid or expired bearer API key. | application/problem+json | Problem | |
| 403 | Subject is not a proven tenant customer_reviewer. | application/problem+json | Problem | |
| 404 | Verification not found for the request-threaded tenant. | application/problem+json | Problem | |
| 409 | Determination already recorded. | application/problem+json | Problem | |
| 413 | Request body is too large. | application/problem+json | Problem | |
| 500 | Internal server error. | application/problem+json | Problem |
Read whether the viewer holds the tenant's customer_reviewer role.
Contract 11 §E5.1. Requires identity-contract bearer, request-threaded tenant, and x-acretix-auth-subject=account_tenant_mapping. Returns the proven viewer role and owner status.
| Status | Description | Content type | Schema | Examples |
|---|---|---|---|---|
| 200 | Viewer reviewer-role status for the request-threaded tenant. | application/json | CockpitReviewerStatus | |
| 400 | Invalid request. | application/problem+json | Problem | |
| 401 | Missing, invalid or expired bearer API key. | application/problem+json | Problem | |
| 403 | Caller is not a proven identity-contract cockpit principal. | application/problem+json | Problem | |
| 404 | Reviewer not found. | application/problem+json | Problem | |
| 500 | Internal server error. | application/problem+json | Problem |
Grant or revoke customer_reviewer for one named person (tenant owner only).
Contract 11 §E5.1. Requires the C11 account mapped to the request-threaded tenant; another tenant cannot be named or modified. This is an explicit human capability grant, never an automatic grant.
Schema: CockpitReviewerGrantRequest
| Status | Description | Content type | Schema | Examples |
|---|---|---|---|---|
| 200 | Reviewer grant updated. | application/json | CockpitReviewerGrant | |
| 400 | Invalid reviewer grant body. | application/problem+json | Problem | |
| 401 | Missing, invalid or expired bearer API key. | application/problem+json | Problem | |
| 403 | Caller is not the tenant owner, or attempted to name another tenant. | application/problem+json | Problem | |
| 404 | Reviewer grant was not found for revocation. | application/problem+json | Problem | |
| 413 | Request body is too large. | application/problem+json | Problem | |
| 500 | Internal server error. | application/problem+json | Problem |
List the tenant's rubrics (latest version per name).
Returns a compact summary per rubric name (the latest version), newest first. Tenant-scoped (server-resolved from the API key). Paging: ?limit (1..100, default 50) & ?offset.
| Name | In | Required | Schema type |
|---|---|---|---|
| limit | query | false | integer |
| offset | query | false | integer |
| Status | Description | Content type | Schema | Examples |
|---|---|---|---|---|
| 200 | The tenant's rubrics. | application/json | RubricList | |
| 401 | Missing, invalid or expired bearer API key. | application/problem+json | Problem | |
| 403 | Access is forbidden. | application/problem+json | Problem | |
| 500 | Internal server error. | application/problem+json | Problem |
Compile + version a rubric.
Each criterion runs a CriterionPrimitive (see components.schemas.CriterionPrimitive).
| Status | Description | Content type | Schema | Examples |
|---|---|---|---|---|
| 201 | rubric_id + version + hash. | |||
| 400 | Invalid request. | application/problem+json | Problem | |
| 401 | Missing, invalid or expired bearer API key. | application/problem+json | Problem | |
| 403 | API key lacks the required scope. | application/problem+json | Problem | |
| 413 | Request body is too large. | application/problem+json | Problem | |
| 500 | Internal server error. | application/problem+json | Problem |
Draft a rubric from a natural-language description.
This route is off unless VERIFY_NL_RUBRIC_FROM_DESCRIPTION is exactly true. The caller's key needs the rubric:write scope. It returns an unregistered draft to review and publish with POST /v1/rubrics. The description is treated as data and never as instructions. The tenant is server-resolved from the bearer.
Schema: RubricFromDescriptionRequest
| Status | Description | Content type | Schema | Examples |
|---|---|---|---|---|
| 200 | Unregistered description-induced rubric draft and induction report. | application/json | RubricFromDescriptionResult | |
| 400 | Description is too vague or request input is invalid. | application/problem+json | Problem | |
| 401 | Missing, invalid or expired bearer API key. | application/problem+json | Problem | |
| 403 | Access is forbidden. | application/problem+json | Problem | |
| 413 | Request body or description is too large. | application/problem+json | Problem | |
| 422 | Description induction is disabled or could not produce a compilable rubric spec. | application/problem+json | Problem | |
| 500 | Internal server error. | application/problem+json | Problem |
Draft + compile a rubric from labeled outcome examples (induction).
Induce an AUTHORED rubric spec from >= 3 labeled outcome examples (the canonical Determination labels). The response is a compiled-but-UNREGISTERED draft (rubric_spec + compile hashes + an induction report); register it with POST /v1/rubrics. Examples are treated as data, never as instructions. Tenant is server-resolved from the API key.
Schema: RubricFromOutcomesRequest
| Status | Description | Content type | Schema | Examples |
|---|---|---|---|---|
| 200 | Drafted + compiled rubric spec and induction report. | application/json | RubricInductionResult | |
| 400 | Invalid examples/labels (too few, conflicting, or malformed). | application/problem+json | Problem | |
| 401 | Missing, invalid or expired bearer API key. | application/problem+json | Problem | |
| 413 | Too many examples or body too large. | application/problem+json | Problem | |
| 422 | Could not produce a compilable rubric spec. | application/problem+json | Problem | |
| 500 | Internal server error. | application/problem+json | Problem |
Compile-preview a rubric without registration.
Runs the same rubric compiler as POST /v1/rubrics but does not create or version a registry artifact. The response intentionally excludes rubric_id, version, status, and created.
| Status | Description | Content type | Schema | Examples |
|---|---|---|---|---|
| 200 | Preview hash/source_hash or compiler issues. | application/json | RubricCompilePreview | |
| 400 | Invalid request. | application/problem+json | Problem | |
| 401 | Missing, invalid or expired bearer API key. | application/problem+json | Problem | |
| 403 | API key lacks the required scope. | application/problem+json | Problem | |
| 413 | Request body is too large. | application/problem+json | Problem | |
| 500 | Internal server error. | application/problem+json | Problem |
List ungated starter rubric templates.
Lists the read-only ungated starter rubric templates. A gated pack is never listed. The answer names the caller tenant; the catalogue is the same for every tenant.
| Status | Description | Content type | Schema | Examples |
|---|---|---|---|---|
| 200 | Ungated starter rubric templates. | application/json | RubricTemplateList | |
| 400 | Invalid request. | application/problem+json | Problem | |
| 401 | Missing, invalid or expired bearer API key. | application/problem+json | Problem | |
| 403 | Access is forbidden. | application/problem+json | Problem | |
| 500 | Internal server error. | application/problem+json | Problem |
Run marked examples against a draft rubric.
Off unless enabled. Stores the compiled rubric version marked draft, which every normal verify call refuses. Runs at most 5 marked examples for author feedback.
Schema: RubricExamplesRequest
| Status | Description | Content type | Schema | Examples |
|---|---|---|---|---|
| 200 | Draft rubric and the marked example verification outcomes. | application/json | RubricExamplesResult | |
| 400 | Invalid request or rubric specification. | application/problem+json | Problem | |
| 401 | Missing, invalid or expired bearer API key. | application/problem+json | Problem | |
| 403 | API key lacks the required scope. | application/problem+json | Problem | |
| 404 | This route is not enabled. | application/problem+json | Problem | |
| 413 | Request body or example count is too large. | application/problem+json | Problem | |
| 500 | Internal server error. | application/problem+json | Problem |
Fetch a compiled rubric.
| Status | Description | Content type | Schema | Examples |
|---|---|---|---|---|
| 200 | Rubric object. | |||
| 401 | Missing, invalid or expired bearer API key. | application/problem+json | Problem | |
| 403 | Access is forbidden. | application/problem+json | Problem | |
| 404 | Rubric not found. | application/problem+json | Problem | |
| 500 | Internal server error. | application/problem+json | Problem |
Tenant usage summary.
| Name | In | Required | Schema type |
|---|---|---|---|
| from | query | false | string |
| to | query | false | string |
| Status | Description | Content type | Schema | Examples |
|---|---|---|---|---|
| 200 | Usage summary. | |||
| 400 | Invalid request. | application/problem+json | Problem | |
| 401 | Missing, invalid or expired bearer API key. | application/problem+json | Problem | |
| 403 | Access is forbidden. | application/problem+json | Problem | |
| 500 | Internal server error. | application/problem+json | Problem |
List tenant-scoped criteria agreement judgments and their derived agreement.
| Name | In | Required | Schema type |
|---|---|---|---|
| subject_ref | path | true | string |
| Status | Description | Content type | Schema | Examples |
|---|---|---|---|---|
| 200 | Recorded judgments and the currently derived agreement. | application/json | CriteriaJudgmentsResponse | |
| 400 | Invalid subject reference. | application/problem+json | Problem | |
| 401 | Missing, invalid or expired bearer API key. | application/problem+json | Problem | |
| 403 | Access is forbidden. | application/problem+json | Problem | |
| 404 | No criteria judgments exist for this tenant subject. | application/problem+json | Problem | |
| 500 | Internal server error. | application/problem+json | Problem | |
| 503 | Criteria judgment store is unavailable. | application/problem+json | Problem |
Append a tenant-scoped criteria proposal or acceptance.
| Name | In | Required | Schema type |
|---|---|---|---|
| subject_ref | path | true | string |
Schema: CriteriaJudgmentRequest
| Status | Description | Content type | Schema | Examples |
|---|---|---|---|---|
| 201 | Judgment appended and agreement derived. | application/json | CriteriaJudgmentCreatedResponse | |
| 400 | Invalid judgment input. | application/problem+json | Problem | |
| 401 | Missing, invalid or expired bearer API key. | application/problem+json | Problem | |
| 403 | API key lacks the required scope, or the caller may not act for that party. | application/problem+json | Problem | |
| 409 | Acceptance conflicts with the latest proposal. | application/problem+json | Problem | |
| 413 | Request body is too large. | application/problem+json | Problem | |
| 500 | Internal server error. | application/problem+json | Problem | |
| 503 | Criteria judgment store is unavailable. | application/problem+json | Problem |
Reviewer tier record: the current version and every earlier one (read-only).
| Status | Description | Content type | Schema | Examples |
|---|---|---|---|---|
| 200 | Reviewer tier versions, ascending, with current_version. | |||
| 400 | Invalid request. | application/problem+json | Problem | |
| 401 | Missing or invalid bearer API key. | application/problem+json | Problem | |
| 403 | Access is forbidden. | application/problem+json | Problem | |
| 500 | Reviewer tier record missing or unreadable. | application/problem+json | Problem |
Developer reporting: the caller's own usage + verdict roll-up (tenant-scoped, read-only).
| Status | Description | Content type | Schema | Examples |
|---|---|---|---|---|
| 200 | Usage + verdict summary. | |||
| 400 | Invalid request. | application/problem+json | Problem | |
| 401 | Missing, invalid or expired bearer API key. | application/problem+json | Problem | |
| 403 | Access is forbidden. | application/problem+json | Problem | |
| 500 | Internal server error. | application/problem+json | Problem |
Developer reporting: the caller's own feedback-based AI record (tenant-scoped, read-only).
| Name | In | Required | Schema type |
|---|---|---|---|
| from | query | false | string |
| to | query | false | string |
| Status | Description | Content type | Schema | Examples |
|---|---|---|---|---|
| 200 | Feedback-based agreement, overturn, abstention, and dispute figures. | application/json | AiRecord | |
| 400 | Invalid date range. | application/problem+json | Problem | |
| 401 | Missing or invalid bearer API key. | application/problem+json | Problem | |
| 403 | API key lacks the verify:read scope. | application/problem+json | Problem | |
| 500 | Internal server error. | application/problem+json | Problem |
Developer reporting: own-tenant subscription health aggregate.
Default-off, aggregate-only daily pass/exception-rate read. The tenant is server-resolved from the API key or identity-contract tenant header; a subscription_id not visible to the resolved tenant returns 404.
| Name | In | Required | Schema type |
|---|---|---|---|
| from | query | false | string |
| to | query | false | string |
| subscription_id | query | false | string |
| Status | Description | Content type | Schema | Examples |
|---|---|---|---|---|
| 200 | Daily aggregate pass/exception health buckets; no raw verification rows. | |||
| 400 | Invalid date range or subscription_id. | application/problem+json | Problem | |
| 401 | Missing, invalid or expired bearer API key. | application/problem+json | Problem | |
| 403 | Access is forbidden. | application/problem+json | Problem | |
| 404 | Health view disabled, or subscription not found for the resolved tenant. | application/problem+json | Problem | |
| 500 | Internal server error. | application/problem+json | Problem |
Append guided developer quickstart time-to-first-verdict telemetry.
Tenant-scoped, append-only telemetry for the guided /developers quickstart. The server derives key_prefix from the bearer key; the request body contains only a de-identified handle and timestamps.
Schema: QuickstartTelemetryRequest
| Status | Description | Content type | Schema | Examples |
|---|---|---|---|---|
| 201 | Telemetry appended. | application/json | QuickstartTelemetryEnvelope | |
| 400 | Invalid handle/timing or key/PII-shaped fields supplied. | application/problem+json | Problem | |
| 401 | Missing, invalid or expired bearer API key. | application/problem+json | Problem | |
| 409 | Telemetry for this handle already exists. | application/problem+json | Problem | |
| 500 | Internal server error. | application/problem+json | Problem |
Read guided quickstart telemetry by de-identified handle.
Tenant-scoped read; missing or other-tenant handles return { telemetry: null }.
| Name | In | Required | Schema type |
|---|---|---|---|
| handle | path | true | string |
| Status | Description | Content type | Schema | Examples |
|---|---|---|---|---|
| 200 | Own-tenant telemetry or null. | application/json | QuickstartTelemetryEnvelope | |
| 400 | Invalid request. | application/problem+json | Problem | |
| 401 | Missing, invalid or expired bearer API key. | application/problem+json | Problem | |
| 403 | Access is forbidden. | application/problem+json | Problem | |
| 409 | Request conflicts with current telemetry. | application/problem+json | Problem | |
| 500 | Internal server error. | application/problem+json | Problem |