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

# Get attestation

> Request-local attestation evidence for a Confidential model.

```text theme={"theme":{"light":"github-light","dark":"github-dark"}}
GET /api/v1/attestation
```

The gateway fetches the evidence from the model's sealed backend, binds a challenge, checks the envelope, and returns it raw. Nito does not verify the hardware signatures: `verified` is always `false`. The same fetch runs, with a gateway-generated challenge, before every Confidential chat call. This endpoint is how you hold evidence bound to a challenge you chose, and where an Encrypted client gets the model public key. See [How Attestation Works](/privacy/tee-attestation/how-attestation-works) and [Verify yourself](/api/api-reference/attestation/verify-yourself).

## Query Parameters

| Key | Required | Notes |
| - | - | - |
| `model` | yes | A logical model ID with the `:confidential` suffix, such as `z-ai/glm-5.2:confidential`. The model must appear in `GET /v1/models` with a `:confidential` ID. |
| `trust_tier` | no | `confidential` (the default) or `encrypted`. With `encrypted`, the model must be an `:encrypted` entry and the evidence must carry a model public key of the right shape for the declared algorithm, and the response reports `privacy_tier: "encrypted"`. |
| `nonce` | no | Your challenge: exactly 32 random bytes as 64 hexadecimal characters. When omitted the gateway generates one. It is request-local and never stored. |
| `signing_address` | no | Provider-specific signing address to forward to the adapter. Request-local. |
| `signing_algo` | no | Provider-specific signing algorithm to forward. Request-local. |

Unknown parameters return `400`. Unknown, non-attested, or below-Confidential models are rejected before any provider call.

## Response

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "object": "attestation",
  "model": "z-ai/glm-5.2:confidential",
  "provider_model_id": "...",
  "privacy_tier": "confidential",
  "attestation_available": true,
  "attestation_subject": "...",
  "verified": false,
  "verifier_provenance": "",
  "nonce": "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef",
  "proof_format": "...",
  "signing_algo": "ed25519",
  "signing_address": "...",
  "signing_key": "...",
  "model_public_key": "...",
  "evidence": { "quote": "provider-specific request-local evidence" }
}
```

| Field | Notes |
| - | - |
| `object` | Always `attestation`. |
| `model` | The model you requested. |
| `provider_model_id` | The backend's native model binding used for attestation. |
| `privacy_tier` | `confidential`. |
| `attestation_available` | Whether evidence could be gathered. |
| `attestation_subject` | The attested subject the backend reported. |
| `verified` | Always `false`. The gateway does not verify evidence. |
| `verifier_provenance` | Always empty. Kept for wire compatibility. |
| `nonce` | The challenge, always populated: yours if you sent one, otherwise the generated value. Expect it inside the evidence's report data. |
| `proof_format` | The backend's proof format identifier: the evidence layout and how the challenge and keys are bound. |
| `signing_algo`, `signing_address`, `signing_key`, `model_public_key` | As observed from the backend. |
| `evidence` | The raw evidence, provider-specific, for independent verification: the Intel TDX quote and, where the backend runs a GPU, the NVIDIA GPU evidence. |

Served with `Cache-Control: no-store`, never persisted. Fetch fresh evidence with a fresh challenge each time.

## What the Gateway Enforces

It rejects unsupported parameters, unknown or non-attested models, and empty evidence, and returns `503 unavailable` when the backend echoes a challenge that contradicts the one it was given.

## Example

```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
NONCE=$(openssl rand -hex 32)
curl "https://app.trynito.ai/api/v1/attestation?model=z-ai/glm-5.2:confidential&nonce=$NONCE" \
  -H "Authorization: Bearer z_sk_your_key_here"
```

## Related

* [Verify yourself](/api/api-reference/attestation/verify-yourself)
* [How Attestation Works](/privacy/tee-attestation/how-attestation-works)
* [The Confidential level](/privacy/levels/confidential)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.