Official Python SDK for the Reclaim Protocol — generate and verify zk-attested HTTPS proofs.
Project description
Reclaim Protocol Python SDK
Generate and verify Reclaim Protocol proofs from Python.
Migrating from
reclaim-python-sdk? This package is the successor toreclaim-python-sdk. The old package is no longer maintained — please use this one going forward. For legacy versions (≤ 1.0.3), see the old package on PyPI.
Install
pip install reclaimprotocol-python-sdk
Prerequisites
Get your credentials from the Reclaim Developer Portal:
APP_IDAPP_SECRETPROVIDER_ID
Quick Start
1. Generate a proof request
import asyncio
from reclaim_python_sdk import ReclaimProofRequest
async def main():
proof_request = await ReclaimProofRequest.init(
app_id="YOUR_APP_ID",
app_secret="YOUR_APP_SECRET",
provider_id="YOUR_PROVIDER_ID",
)
# Set the URL where proofs will be sent
proof_request.set_app_callback_url("https://your-backend.com/receive-proofs")
# URL to show as QR code / deep link to the user
request_url = await proof_request.get_request_url()
print(request_url)
asyncio.run(main())
Optional configuration
# Add contextual data bound to the proof
proof_request.add_context("0x0", "login for example.com")
# Pre-fill known parameters
proof_request.set_params({"email": "user@example.com"})
# Redirect the user after verification
proof_request.set_redirect_url("https://your-app.com/success")
# Export/import the request (e.g., send to another service)
config = proof_request.to_json_string()
restored = await ReclaimProofRequest.from_json_string(config)
2. Receive and verify proofs
Any web framework works. Here's Flask:
from flask import Flask, request, jsonify
from reclaim_python_sdk import verify_proof, Proof
app = Flask(__name__)
@app.post("/receive-proofs")
async def receive_proofs():
proof = Proof.from_json(request.json)
result = await verify_proof(proof, {"providerId": "YOUR_PROVIDER_ID"})
if not result.is_verified:
return jsonify({"error": str(result.error)}), 400
return jsonify({
"extracted_parameters": result.data[0].extracted_parameters,
})
verify_proofaccepts a single proof OR a list of proofs:await verify_proof(proof, config) # single await verify_proof([p1, p2, p3], config) # multiple
verify_proof Config Options
1. By provider ID + version (recommended)
Pins verification to a specific provider version. Only providerId is required — providerVersion and allowedTags are optional (pass [] for empty tags):
await verify_proof(proof, {
"providerId": "YOUR_PROVIDER_ID",
"providerVersion": "1.0.0", # optional but recommended
"allowedTags": ["ai"], # optional, can be []
})
2. By provider ID only
Fetches the latest expected hashes from the Reclaim backend:
await verify_proof(proof, {"providerId": "YOUR_PROVIDER_ID"})
3. By known hashes (no network calls)
Supply the expected hashes directly — no call to the Reclaim backend:
await verify_proof(proof, {"hashes": ["0x1abc2def3456..."]})
4. Skip content validation
Only checks attestor signatures — does NOT validate the proof content:
await verify_proof(proof, {"dangerouslyDisableContentValidation": True})
Result shape
verify_proof always returns a result with:
| Field | Description |
|---|---|
is_verified |
True / False |
error |
Exception if failed, None if passed |
data |
List of TrustedData (context + extracted parameters) |
public_data |
Deduplicated public data from proofs |
Testing
pip install pytest pytest-asyncio
pytest tests/
Links
Security
Never commit your APP_SECRET or expose it in client-side code.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file reclaimprotocol_python_sdk-2.0.1.tar.gz.
File metadata
- Download URL: reclaimprotocol_python_sdk-2.0.1.tar.gz
- Upload date:
- Size: 31.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
979de6d0cf9dceabd83540ca4622c1370fb8387f2cf5f8ce68769c7665c21820
|
|
| MD5 |
6b8a45d9fe22153954ec2a91050d543a
|
|
| BLAKE2b-256 |
abe548dce51be67703fc8d108506ac19e62e35bac95f3e1191c24fa8aec366fc
|
File details
Details for the file reclaimprotocol_python_sdk-2.0.1-py3-none-any.whl.
File metadata
- Download URL: reclaimprotocol_python_sdk-2.0.1-py3-none-any.whl
- Upload date:
- Size: 30.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
34b99822eece788b00a3f35d5830b2cac6d8ae013fa70565117410bc4c6cd2ba
|
|
| MD5 |
6045a660fdae4ad20ff834a5ac8df02f
|
|
| BLAKE2b-256 |
3cbc5702480dc311b6b5d975787ded6cc11c0c5a7c12a9e4bd92b7a6659d196f
|