Python SDK
Official async + sync Python client for the Supervisor moderation API.
Install
pip install supervisor-sdk
Requires Python 3.10+. Grab an API key from your dashboard under API Keys.
Moderate text
import asyncio
from supervisor import SupervisorClient
async def main():
async with SupervisorClient(api_key="sk_prod_...") as client:
result = await client.moderate("text to check")
print(result.flagged, result.labels)
asyncio.run(main())Prefer synchronous code? Use SyncSupervisorClient with the same methods, minus the await.
from supervisor import SyncSupervisorClient
with SyncSupervisorClient(api_key="sk_prod_...") as client:
result = client.moderate("text to check")Methods
Available on both SupervisorClient (async) and SyncSupervisorClient:
# Single text or image (base64). model: "auto" | "observer" | "sentinel" | "arbiter"
await client.moderate(text, image=None, model=None, enabled_labels=None, include_context=False)
# Many at once -> list[ModerationResponse]
await client.moderate_batch(texts, images=None, model=None, enabled_labels=None)
# Username policy check -> UsernameCheckResponse(flagged, score)
await client.check_username("user123")
# All labels -> {key: description}
await client.get_labels()A ModerationResponse has: flagged (bool), labels (list[str]), implicit_labels, model_version, and optional context fields.
Platform API
If you have a registered platform, use PlatformClient to moderate on behalf of your own users with your client_id / client_secret (created in the dashboard under Platform API).
from supervisor import PlatformClient
async with PlatformClient(client_id="...", client_secret="sk_platform_...") as p:
user = await p.provision_user("user@example.com")
result = await p.moderate("user@example.com", text="text to check")Other methods: list_users(), get_user(id), create_checkout(...), get_connect_status(). See the Platform API guide for the full flow.