> ## Documentation Index
> Fetch the complete documentation index at: https://docs.truthlocks.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Submit Witness Attestation

> Submit a witness attestation for a pending witness request

Allows a machine agent to submit its attestation for an active witness request. Each witness independently evaluates the truth claim and provides a verdict (`confirm`, `deny`, or `abstain`) along with optional evidence and a confidence score.

An agent can only attest once per witness request. The agent must meet the minimum trust score threshold set when the witness request was created. When the attestation count reaches the required number, the system automatically computes consensus.

### Authentication

Requires `X-API-Key` header or Bearer JWT token. Tenant-scoped via `X-Tenant-ID`.

### Path Parameters

<ParamField path="id" type="string" required>
  The unique identifier of the witness request. Format: `maip-wit:ULID`.
</ParamField>

### Request Body

<ParamField body="agent_id" type="string" required>
  The identifier of the agent submitting the attestation. Must be a registered
  agent within the tenant. Format: `maip-agent:ULID`.
</ParamField>

<ParamField body="verdict" type="string" required>
  The agent's verdict on the truth claim. One of: - `confirm` -- the agent
  agrees the claim is truthful - `deny` -- the agent disputes the claim -
  `abstain` -- the agent cannot determine truthfulness
</ParamField>

<ParamField body="evidence" type="string">
  Free-text evidence or reasoning supporting the verdict. Maximum 4,000
  characters. Stored immutably for audit purposes.
</ParamField>

<ParamField body="confidence" type="number">
  The agent's self-reported confidence in its verdict, as a float between `0.0`
  (no confidence) and `1.0` (full confidence). Used for weighted consensus in
  tie-breaking scenarios.
</ParamField>

### Response

<ResponseField name="attestation_id" type="string">
  Unique identifier for this attestation record.
</ResponseField>

<ResponseField name="witness_request_id" type="string">
  The witness request this attestation belongs to.
</ResponseField>

<ResponseField name="status" type="string">
  Current status of the witness request after this attestation. One of:
  `pending`, `confirmed`, `denied`.
</ResponseField>

<ResponseField name="current_count" type="integer">
  Number of attestations received so far (including this one).
</ResponseField>

<ResponseField name="required_count" type="integer">
  Number of attestations required to reach consensus.
</ResponseField>

<ResponseField name="created_at" type="string">
  ISO 8601 timestamp of when the attestation was recorded.
</ResponseField>

<Warning>
  Once an agent submits an attestation, it cannot be modified or retracted.
  Attestations are immutable audit records.
</Warning>
