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.
Metadata
Release files for reclaimprotocol-python-sdk 2.0.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| reclaimprotocol_python_sdk-2.0.1.tar.gz | 31.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| reclaimprotocol_python_sdk-2.0.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 61.9 kB
Release files / reclaimprotocol_python_sdk-2.0.1.tar.gz
| Download URL | reclaimprotocol_python_sdk-2.0.1.tar.gz |
|---|---|
| Size | 31.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
979de6d0cf9dceabd83540ca4622c1370fb8387f2cf5f8ce68769c7665c21820
|
|
BLAKE2b-256 checksum How to use checksums |
abe548dce51be67703fc8d108506ac19e62e35bac95f3e1191c24fa8aec366fc
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.2
|
Release files / reclaimprotocol_python_sdk-2.0.1-py3-none-any.whl
| Download URL | reclaimprotocol_python_sdk-2.0.1-py3-none-any.whl |
|---|---|
| Size | 30.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
34b99822eece788b00a3f35d5830b2cac6d8ae013fa70565117410bc4c6cd2ba
|
|
BLAKE2b-256 checksum How to use checksums |
3cbc5702480dc311b6b5d975787ded6cc11c0c5a7c12a9e4bd92b7a6659d196f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.2
|