Metadata-Version: 2.4
Name: verifid
Version: 1.0.0
Summary: Official VerifID identity verification SDK for Python
Author-email: Advantra Studio <david@advantrastudio.com>
License: MIT
Project-URL: Homepage, https://verifid.dev
Project-URL: Documentation, https://verifid.dev/developers
Keywords: verifid,kyc,identity-verification,biometric,face-match
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Security
Requires-Python: >=3.9
Description-Content-Type: text/markdown
Requires-Dist: httpx>=0.25.0
Provides-Extra: dev
Requires-Dist: pytest>=7.4.0; extra == "dev"
Requires-Dist: pytest-cov>=4.1.0; extra == "dev"
Requires-Dist: pytest-httpx>=0.30.0; extra == "dev"
Requires-Dist: mypy>=1.8.0; extra == "dev"

# verifid

Official VerifID identity verification SDK for Python.

## Install

```bash
pip install verifid
```

## Quick Start

```python
from verifid import VerifID
from verifid.types import UserData

client = VerifID(
    api_key="sk_live_...",
    base_url="https://api.verifid.dev",  # optional
)

# Create a verification session
session = client.create_session(
    document_type="national_id",
    user_data=UserData(full_name="Ana Garcia"),
)
print(session.session_id, session.qr_url)

# Upload images
client.upload_document_front(session.session_id, base64_image)
client.upload_document_back(session.session_id, base64_image)
client.upload_selfie(session.session_id, [base64_frame1, base64_frame2])

# Trigger verification and wait for result
client.trigger_verification(session.session_id)
result = client.wait_for_result(session.session_id)

print(result.status)            # "VERIFIED" | "REJECTED"
print(result.confidence_score)  # 0.0 - 1.0
print(result.reasons)           # ["face_match_passed", ...]
```

## Single-Device Verify

```python
created = client.verify(
    selfie_image=selfie_b64,
    document_image=document_b64,
)

result = client.get_verification(created.session_id)
```

## Context Manager

```python
with VerifID(api_key="sk_live_...") as client:
    session = client.create_session()
    # ...
```

## GDPR

```python
# Export session data
data = client.export_session_data(session_id)

# Delete session data (right to erasure)
client.delete_session_data(session_id)
```

## Error Handling

```python
from verifid import VerifIDError, RateLimitError

try:
    client.create_session()
except RateLimitError as e:
    print(f"Rate limited. Retry after {e.retry_after}s")
except VerifIDError as e:
    print(f"API error: {e.status} — {e}")
```

## Configuration

| Param | Default | Description |
|-------|---------|-------------|
| `api_key` | (required) | Your API key (`sk_live_*` or `sk_test_*`) |
| `base_url` | `https://api.verifid.dev` | API base URL |
| `timeout` | `30.0` | Request timeout in seconds |

## Sandbox

Use a `sk_test_*` key to get mock results without real ML processing.
