> For the complete documentation index, see [llms.txt](https://docs.termina.technology/documentation/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.termina.technology/documentation/open-source-contributions/modules/data-anchor/indexing-data/getting-proofs/checkpoint_proof.md).

# checkpoint\_proof

## Generates a zero-knowledge proof that all data blobs up to a specified slot are valid.

> \- The slot should be the latest finalized slot you want included in the proof.\
> \- Returns a \*\*request\_id\*\* immediately while the proof is built in the background.\
> \- Submits the finished proof to the on-chain verifier program automatically, so no additional action is required.\
> \
> This endpoint generates and submits a ZK proof to Solana of all uploaded blobs from the last checkpoint (or genesis if no checkpoint exists) up to the specified slot.<br>

```json
{"openapi":"3.0.1","info":{"title":"Data Indexer — checkpoint_proof","version":"0.1.0"},"tags":[{"name":"Proofs","description":"Methods for initiating and tracking proof generation"}],"servers":[{"url":"https://devnet.data-anchor.termina.technology","description":"Devnet endpoint"}],"paths":{"/proof":{"post":{"tags":["Proofs"],"operationId":"checkpointProof","summary":"Generates a zero-knowledge proof that all data blobs up to a specified slot are valid.","description":"- The slot should be the latest finalized slot you want included in the proof.\n- Returns a **request_id** immediately while the proof is built in the background.\n- Submits the finished proof to the on-chain verifier program automatically, so no additional action is required.\n\nThis endpoint generates and submits a ZK proof to Solana of all uploaded blobs from the last checkpoint (or genesis if no checkpoint exists) up to the specified slot.\n","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckpointProofRequest"}}}},"responses":{"200":{"description":"JSON-RPC success (request_id) or error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RpcResponse_CheckpointProof"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"500":{"$ref":"#/components/responses/ServerError"}}}}},"components":{"schemas":{"CheckpointProofRequest":{"allOf":[{"$ref":"#/components/schemas/RpcRequestBase"},{"type":"object","required":["params"],"properties":{"params":{"$ref":"#/components/schemas/CheckpointProofParams"}}}]},"RpcRequestBase":{"type":"object","required":["id","jsonrpc","method"],"properties":{"id":{"type":"string","description":"Client-generated request ID"},"jsonrpc":{"type":"string","enum":["2.0"]},"method":{"type":"string","enum":["checkpoint_proof"]}}},"CheckpointProofParams":{"type":"object","required":["blober","slot","customer_elf"],"properties":{"blober":{"type":"string","description":"Blober pubkey (Base58 string)"},"slot":{"type":"integer","format":"int64","description":"Target slot for the proof"},"customer_elf":{"type":"string","description":"Base64-encoded ELF bytes or identifier for the customer proof program"}}},"RpcResponse_CheckpointProof":{"type":"object","required":["jsonrpc","id"],"properties":{"jsonrpc":{"type":"string","enum":["2.0"]},"id":{"type":"string"},"result":{"type":"string","description":"request_id to poll via `get_proof_request_status`"},"error":{"$ref":"#/components/schemas/RpcError"}}},"RpcError":{"type":"object","required":["code","message"],"properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{"type":"object","nullable":true}}}},"responses":{"BadRequest":{"description":"Invalid request payload","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RpcError"}}}},"ServerError":{"description":"Internal indexer error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RpcError"}}}}}}}
```

## The RpcRequestBase object

```json
{"openapi":"3.0.1","info":{"title":"Data Indexer — checkpoint_proof","version":"0.1.0"},"components":{"schemas":{"RpcRequestBase":{"type":"object","required":["id","jsonrpc","method"],"properties":{"id":{"type":"string","description":"Client-generated request ID"},"jsonrpc":{"type":"string","enum":["2.0"]},"method":{"type":"string","enum":["checkpoint_proof"]}}}}}}
```

## The CheckpointProofParams object

```json
{"openapi":"3.0.1","info":{"title":"Data Indexer — checkpoint_proof","version":"0.1.0"},"components":{"schemas":{"CheckpointProofParams":{"type":"object","required":["blober","slot","customer_elf"],"properties":{"blober":{"type":"string","description":"Blober pubkey (Base58 string)"},"slot":{"type":"integer","format":"int64","description":"Target slot for the proof"},"customer_elf":{"type":"string","description":"Base64-encoded ELF bytes or identifier for the customer proof program"}}}}}}
```

## The CheckpointProofRequest object

```json
{"openapi":"3.0.1","info":{"title":"Data Indexer — checkpoint_proof","version":"0.1.0"},"components":{"schemas":{"CheckpointProofRequest":{"allOf":[{"$ref":"#/components/schemas/RpcRequestBase"},{"type":"object","required":["params"],"properties":{"params":{"$ref":"#/components/schemas/CheckpointProofParams"}}}]},"RpcRequestBase":{"type":"object","required":["id","jsonrpc","method"],"properties":{"id":{"type":"string","description":"Client-generated request ID"},"jsonrpc":{"type":"string","enum":["2.0"]},"method":{"type":"string","enum":["checkpoint_proof"]}}},"CheckpointProofParams":{"type":"object","required":["blober","slot","customer_elf"],"properties":{"blober":{"type":"string","description":"Blober pubkey (Base58 string)"},"slot":{"type":"integer","format":"int64","description":"Target slot for the proof"},"customer_elf":{"type":"string","description":"Base64-encoded ELF bytes or identifier for the customer proof program"}}}}}}
```

## The RpcResponse\_CheckpointProof object

```json
{"openapi":"3.0.1","info":{"title":"Data Indexer — checkpoint_proof","version":"0.1.0"},"components":{"schemas":{"RpcResponse_CheckpointProof":{"type":"object","required":["jsonrpc","id"],"properties":{"jsonrpc":{"type":"string","enum":["2.0"]},"id":{"type":"string"},"result":{"type":"string","description":"request_id to poll via `get_proof_request_status`"},"error":{"$ref":"#/components/schemas/RpcError"}}},"RpcError":{"type":"object","required":["code","message"],"properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{"type":"object","nullable":true}}}}}}
```

## The RpcError object

```json
{"openapi":"3.0.1","info":{"title":"Data Indexer — checkpoint_proof","version":"0.1.0"},"components":{"schemas":{"RpcError":{"type":"object","required":["code","message"],"properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{"type":"object","nullable":true}}}}}}
```
