---
title: "Report deterministic preconditions before spending a check"
method: POST
path: "/v0/snapshot-lint"
---

# Report deterministic preconditions before spending a check

`POST /v0/snapshot-lint`

## Request

- Base URL: `https://exactlane.dev` (the document declares no server; this is the origin it was published from)
- URL: `https://exactlane.dev/v0/snapshot-lint`
- Auth: none required

Unauthenticated, no Idempotency-Key, no quota, and no stored state. This route names preconditions a caller can fix before a check: unsupported JSON Schema keywords for the selected profile, snapshot/requirements version pairing, protocol revision and transport outside the profile, required tools the snapshot does not declare, estimated_input_bytes without a declared max_input_bytes, and snapshot staleness. It runs no evaluator, issues no credential, writes nothing, and reads no stored resource. A lint is not a compatibility check and is not evidence: it reports what the evaluator would be unable to decide, never whether a capability fits. Only a finished report carries a verdict, and the caller still owns CONTINUE, UPDATE_INTEGRATION, and HOLD. Live probing remains off.

## Request body

- SnapshotLintRequest
  - `requirements` object, required
  - `snapshot` object, required

## Response `200`

Deterministic preconditions; not compatibility evidence

- SnapshotLintResponse
  - `counts` object, required
  - `findings` object[], required
    - `detail` string, required
    - `expect` string, required: What the evaluator would do with this precondition. Not a verdict.
    - `kind` string, required
    - `location` string, required
  - `is_compatibility_evidence` unknown, required
  - `live_endpoint_observed` unknown, required
  - `note` string, required
  - `profile` object, required
  - `schema_version` 'exactlane.snapshot-lint/0.1', required

## Other responses

- `400`: Malformed request or idempotency key
- `401`: Missing or invalid credential
- `403`: Insufficient scope or disabled live mode
- `404`: Resource absent or not owned
- `409`: Idempotency or unique-event conflict
- `411`: Content-Length is required
- `413`: Request exceeds a hard bound
- `415`: Media type or content encoding is unsupported
- `422`: Request shape or fixed profile is unsupported
- `429`: Principal quota exceeded
- `500`: Bounded internal failure

---

[API](https://skmtc.dev/exactlane/apis/exactlane-preflight-phase-0a.md) · [All operations](https://skmtc.dev/exactlane/apis/exactlane-preflight-phase-0a/llms.txt) · [OpenAPI document](https://skmtc.dev/exactlane/apis/exactlane-preflight-phase-0a/revisions/544a503598aa?raw)
