Official Python SDK for the SynapsAI Truth-as-a-Service API
Project description
synapsai
Official Python SDK for the SynapsAI Truth-as-a-Service (TaaS) API.
Install
pip install synapsai
Requires Python 3.9+. Runtime dependency: httpx only.
Quickstart
from synapsai import SynapsAI
client = SynapsAI(api_key="taas_your_key")
# or set SYNAPSAI_API_KEY env var and call SynapsAI() with no arguments
Get your API key at synapsai.org/api-access.
Verification
Image verification
Detects AI-generated images, deepfakes, and edits using Hive AI, ELA, EXIF, and Claude Vision. Result committed on-chain.
from pathlib import Path
from synapsai import SynapsAI
client = SynapsAI(api_key="taas_your_key")
result = client.verify.image(
image=Path("photo.jpg"),
claim="Product photo from supplier",
)
print(result.verdict) # 'AUTHENTIC'
print(result.authenticity_score) # 91 (0-100 integer)
print(result.raw_scores.hive_ai_generated) # 0.02
print(result.tx_hash) # on-chain proof
raw_scores exposes every signal so you can apply your own thresholds:
# Insurance (conservative)
if result.raw_scores.hive_ai_generated > 0.99:
flag_for_review()
# News (liberal)
if result.raw_scores.hive_ai_generated > 0.70:
flag_for_review()
Claim verification (text)
# Submit (returns immediately — verification is async)
claim = client.verify.claim("Company X reduced CO2 by 500 tons in 2025.")
print(claim.claim_id) # 94
print(claim.poll) # '/v1/verify/94'
# Poll until verified
import time
def wait_for_verification(claim_id, max_wait=60):
start = time.time()
while time.time() - start < max_wait:
status = client.verify.get(claim_id)
if status.status != "pending":
return status
time.sleep(3)
raise TimeoutError("Verification timed out")
status = wait_for_verification(claim.claim_id)
print(status.verified) # True
Document verification
result = client.verify.document(document=Path("claim.pdf"))
print(result.verdict)
print(result.checks) # [DocumentCheck(name=..., passed=..., detail=...)]
print(result.ai_detection.is_ai_generated) # False
Luxury goods authentication
result = client.verify.luxury(
images=[Path("front.jpg"), Path("serial.jpg")],
brand="Rolex",
model="Submariner",
)
print(result.verdict) # 'AUTHENTIC'
print(result.confidence) # 92
print(result.indicators) # VisualAuthIndicators(authentic=[...], suspicious=[])
Other visual authentication endpoints
All accept image: Path | bytes | BinaryIO or a list of those.
client.verify.rx(images=img, drug_name="Advil")
client.verify.credential(images=img, credential_type="degree")
client.verify.art(images=img, artist="Monet")
client.verify.sneakers(images=img, brand="Nike")
client.verify.cards(images=img, card_type="Pokemon")
client.verify.wine(images=img, producer="Château Pétrus")
client.verify.ticket(images=img, event="Super Bowl LX")
client.verify.jewelry(images=img, metal="gold")
client.verify.electronics(images=img, brand="Apple")
Trust Scores
trust = client.trust.get("0xWalletAddress")
print(trust.trust_score) # 590 (neutral=500, range 0-1000)
print(trust.interpretation) # 'trusted'
# Batch
scores = client.trust.batch(["0xAddr1", "0xAddr2"])
Webhooks
# Register
wh = client.webhooks.create(
url="https://your-server.com/hooks/synapsai",
events=["verification.completed"],
)
# Store wh.secret securely — shown once
print(wh.id) # 'wh_abc123'
print(wh.secret) # 'whsec_...'
# Verify incoming events (Flask example)
import os
from flask import Flask, request, abort
app = Flask(__name__)
@app.post("/hooks/synapsai")
def handle_webhook():
valid = client.webhooks.verify_signature(
payload=request.get_data(), # raw bytes — do NOT parse first
signature=request.headers["X-SynapsAI-Signature"],
secret=os.environ["SYNAPSAI_WEBHOOK_SECRET"],
)
if not valid:
abort(401)
event = request.get_json()
# handle event...
return "", 200
# List / manage
webhooks = client.webhooks.list()
client.webhooks.test("wh_abc123")
client.webhooks.delete("wh_abc123")
Account
info = client.account.key_info()
print(info.plan) # 'growth'
print(info.company) # 'Acme Insurance'
usage = client.account.usage()
print(usage.total_calls) # 42
from datetime import datetime, timezone
page = client.account.history(
type="image",
limit=50,
from_=datetime(2026, 5, 1, tzinfo=timezone.utc),
)
print(page.total)
print(page.verifications[0].verdict)
Async client
import asyncio
from synapsai import AsyncSynapsAI
async def main():
async with AsyncSynapsAI(api_key="taas_your_key") as client:
result = await client.verify.image(image=Path("photo.jpg"))
print(result.verdict)
asyncio.run(main())
Error handling
from synapsai import (
SynapsAIError,
AuthError,
RateLimitError,
ValidationError,
NotFoundError,
ServerError,
)
try:
result = client.verify.image(image=Path("photo.jpg"))
except AuthError:
print("Invalid API key")
except RateLimitError as e:
print(f"Rate limited. Retry after {e.retry_after_ms}ms")
except ValidationError as e:
print(f"Bad input: {e.message}")
except ServerError:
print("Server error — retries exhausted")
5xx errors are retried automatically up to max_retries times (default 3) with exponential backoff. Set max_retries=0 to disable.
Environment variable
export SYNAPSAI_API_KEY=taas_your_key
client = SynapsAI() # picks up SYNAPSAI_API_KEY automatically
Configuration
client = SynapsAI(
api_key="taas_...", # or SYNAPSAI_API_KEY env var
base_url="https://api.synapsai.org", # optional override
max_retries=3, # default 3
timeout=30.0, # seconds, default 30
)
Project details
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 synapsai-0.4.1.tar.gz.
File metadata
- Download URL: synapsai-0.4.1.tar.gz
- Upload date:
- Size: 23.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
10b9f6d9f0f545a8300a6c1c7badf39e8de7bae8459a6a44ccbec88af3ee76ed
|
|
| MD5 |
336777a1b89e507a25406970050a1004
|
|
| BLAKE2b-256 |
27d0f7e04ced2ace412fe6e9e11a770121e231b90094c5b54d715ddd265bbabf
|
File details
Details for the file synapsai-0.4.1-py3-none-any.whl.
File metadata
- Download URL: synapsai-0.4.1-py3-none-any.whl
- Upload date:
- Size: 19.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e2b116da4f21d4ef14986ff010a822d837e13332daa2c33a1ba089e8ac60370a
|
|
| MD5 |
9c558f827a04f706466ca6a11225bb80
|
|
| BLAKE2b-256 |
52d476f9271e46da1c2d9bf551be780d2cb26eaac4e6583b41f8ff9a6acfe3c3
|