# Check the signatures of a version on the server

> `GET /public/passports/{passportId}/verify` · public, no key · operationId `verifyPassport`

No authentication. A convenience: the same check works offline with the public JSON and
`/.well-known/batterypass/keys.json` (ADR-004, ADR-013). Without `version_no`, the current version.

## Path parameters

- **passportId** `string (uuid)` (required): The UUID of the passport identifier `urn:dpp:{uuid}`.

## Query parameters

- **version_no** `integer`

## Responses

### 200 (`application/json`)

The result.

- **checked_at** `string (date-time)` (required)
- **key_id** `string` (required)
- **public_document_valid** `boolean` (required)
- **signed_at** `string (date-time)` (required)
- **snapshot_valid** `boolean` (required)
- **valid** `boolean` (required): Both signatures verify and both hashes match the stored documents.
- **version_no** `integer` (required)

### 400 (`application/problem+json`)

The request is malformed or failed validation (`validation_error`), or a token is invalid or expired (`invalid_token`).

### 404 (`application/problem+json`)

The resource does not exist in the organisation of the API key, or the public passport is unknown (`not_found`).

### 429 (`application/problem+json`)

Too many attempts (`rate_limited`); retry after the number of seconds in the `Retry-After` header.

### default (`application/problem+json`)

Any other problem, e.g. `internal_error`.

## Example

```bash title="cURL"
curl -X GET "https://passport.kabin.sh/api/v1/public/passports/{passportId}/verify"
```
