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

# Timestamps

> RFC 3161 timestamp management

## POST /v1/timestamp

Request an RFC 3161 timestamp for the current Merkle root.

### Example

```bash theme={null}
curl -X POST http://localhost:7600/v1/timestamp
```

### Response

```json theme={null}
{
  "merkle_root": "a1b2c3d4e5f6...",
  "timestamp": "2026-02-17T12:00:00Z",
  "tsa": "freetsa.org",
  "token": "base64-encoded-timestamp-token"
}
```

***

## GET /v1/timestamps

List stored timestamps.

### Example

```bash theme={null}
curl http://localhost:7600/v1/timestamps
```

### Response

```json theme={null}
[
  {
    "merkle_root": "a1b2c3d4e5f6...",
    "timestamp": "2026-02-17T12:00:00Z",
    "tsa": "freetsa.org",
    "tree_size": 1500
  }
]
```

***

## GET /v1/timestamps/verify

Verify the latest timestamp against the current Merkle root.

### Example

```bash theme={null}
curl http://localhost:7600/v1/timestamps/verify
```

### Response

```json theme={null}
{
  "valid": true,
  "merkle_root": "a1b2c3d4e5f6...",
  "tsa_time": "2026-02-17T12:00:00Z",
  "tree_size": 1500,
  "error": "",
  "current_root_matches": true
}
```

| Field                  | Type    | Description                                                  |
| ---------------------- | ------- | ------------------------------------------------------------ |
| `valid`                | boolean | Whether the timestamp signature is valid                     |
| `merkle_root`          | string  | The Merkle root that was timestamped                         |
| `tsa_time`             | string  | Time reported by the TSA                                     |
| `tree_size`            | integer | Number of events in the tree at timestamp time               |
| `error`                | string  | Error message if verification failed                         |
| `current_root_matches` | boolean | Whether the current Merkle root matches the timestamped root |
