Python SDK Installation Guide
Get started with the FaceSign Python SDK for server-side identity verification integration.
Installation
Install the FaceSign Python SDK using pip:
pip install facesign-api
Or using poetry:
poetry add facesign-api
Requirements
- Python 3.8 or higher
- HTTP library: httpx (automatically installed)
- Validation: pydantic (automatically installed)
Quick Start
1. Initialize the Client
import os
from facesign import FaceSignClient
# Initialize with your API key from environment variable
client = FaceSignClient(
api_key=os.getenv("FACESIGN_API_KEY"),
server_url="https://api.facesign.ai" # Production
# server_url="https://api.dev.facesign.ai" # Development
)
2. Create a Verification Session
# Create a session with modules (legacy approach)
session_response = client.sessions.create(
client_reference_id="user-12345",
metadata={
"user_id": "12345",
"source": "python-app"
},
modules=[
{"type": "identityVerification"},
{"type": "documentAuthentication"}
],
initial_phrase="Welcome! I'll help you verify your identity.",
default_lang="en"
)
print(f"Session ID: {session_response.session.id}")
print(f"Client Secret: {session_response.client_secret.secret}")
print(f"Verification URL: {session_response.client_secret.url}")
3. Create with Flow-Based Configuration
# Create a session with flow (recommended approach)
flow_session = client.sessions.create(
client_reference_id="user-67890",
metadata={"source": "python-flow-app"},
flow={
"nodes": [
{
"id": "start",
"type": "start"
},
{
"id": "greeting",
"type": "conversation",
"prompt": "Hello! Let's verify your identity.",
"transitions": [{"id": "t1", "condition": "true"}]
},
{
"id": "face-scan",
"type": "face_scan",
"mode": "capture",
"outcomes": {
"captured": "end",
"error": "end"
}
},
{
"id": "end",
"type": "end"
}
],
"edges": [
{"id": "e1", "source": "start", "target": "greeting"},
{"id": "e2", "source": "greeting", "target": "face-scan"},
{"id": "e3", "source": "face-scan", "target": "end"}
]
}
)
4. Retrieve Session Status
# Get session details
session = client.sessions.retrieve("vs_session_id_here")
print(f"Status: {session.session.status}")
if session.session.report:
print(f"Verified: {session.session.report.is_verified}")
5. List Sessions
# List recent sessions
sessions = client.sessions.list(
limit=10,
status="complete",
sort_by="createdAt",
sort_order="desc"
)
for session in sessions.sessions:
print(f"{session.id}: {session.status}")
Async Usage
The SDK supports async/await patterns:
import asyncio
from facesign import AsyncFaceSignClient
async def main():
async with AsyncFaceSignClient(api_key="your_api_key") as client:
# Create session asynchronously
session = await client.sessions.acreate(
client_reference_id="async-user-123",
modules=[{"type": "identityVerification"}]
)
# List sessions asynchronously
sessions = await client.sessions.alist(limit=5)
# Get languages asynchronously
languages = await client.languages.aget()
# Run async code
asyncio.run(main())
Get Available Resources
Languages
# Get supported languages
languages = client.languages.get()
for lang in languages.langs:
print(f"{lang.id}: {lang.title}")
Avatars
# Get available avatars
avatars = client.avatars.get()
for avatar in avatars.avatars:
print(f"{avatar.id}: {avatar.name} ({avatar.gender})")
Error Handling
from facesign import (
FaceSignAPIError,
AuthenticationError,
ValidationError,
NotFoundError
)
try:
session = client.sessions.create(
client_reference_id="test-user",
modules=[{"type": "identityVerification"}]
)
except AuthenticationError:
print("Invalid API key")
except ValidationError as e:
print(f"Invalid request data: {e}")
except NotFoundError:
print("Resource not found")
except FaceSignAPIError as e:
print(f"API error: {e}")
Framework Integration
Django
# settings.py
FACESIGN_API_KEY = "your_api_key_here"
# views.py
from django.conf import settings
from facesign import FaceSignClient
def create_verification_view(request):
client = FaceSignClient(settings.FACESIGN_API_KEY)
session = client.sessions.create(
client_reference_id=f"user-{request.user.id}",
metadata={"user_id": request.user.id},
modules=[{"type": "identityVerification"}]
)
return JsonResponse({
"session_id": session.session.id,
"verification_url": session.client_secret.url
})
Flask
from flask import Flask, jsonify
from facesign import FaceSignClient
import os
app = Flask(__name__)
client = FaceSignClient(os.getenv("FACESIGN_API_KEY"))
@app.route("/create-verification", methods=["POST"])
def create_verification():
session = client.sessions.create(
client_reference_id="user-123",
modules=[{"type": "identityVerification"}]
)
return jsonify({
"session_id": session.session.id,
"verification_url": session.client_secret.url
})
FastAPI
from fastapi import FastAPI
from facesign import AsyncFaceSignClient
import os
app = FastAPI()
client = AsyncFaceSignClient(os.getenv("FACESIGN_API_KEY"))
@app.post("/create-verification")
async def create_verification():
async with client:
session = await client.sessions.acreate(
client_reference_id="user-123",
modules=[{"type": "identityVerification"}]
)
return {
"session_id": session.session.id,
"verification_url": session.client_secret.url
}
Environment Variables
Setting API Keys Securely
Never hardcode API keys in your source code. Use environment variables instead:
For local development:
# Create .env file (never commit this file)
echo "FACESIGN_API_KEY=your_api_key_here" > .env
# Or export directly
export FACESIGN_API_KEY="your_api_key_here"
For production deployment: Set environment variables in your hosting platform (Vercel, Heroku, AWS, etc.)
Using in your code:
import os
from facesign import FaceSignClient
# This safely loads from environment variables
client = FaceSignClient(
api_key=os.getenv("FACESIGN_API_KEY"),
server_url=os.getenv("FACESIGN_SERVER_URL", "https://api.facesign.ai")
)
Development vs Production
# Development environment
dev_client = FaceSignClient(
api_key="dev_api_key",
server_url="https://api.dev.facesign.ai"
)
# Production environment
prod_client = FaceSignClient(
api_key="prod_api_key",
server_url="https://api.facesign.ai"
)
Next Steps
- Read the API Reference for detailed endpoint documentation
- Explore Session Management to understand verification flows
- Check out Error Handling for comprehensive error management
- Learn about Webhooks for real-time status updates