Is there a Sume Python SDK? No: use requests and the OpenAPI schema
Sume documents a TypeScript SDK, @sume-com/sdk, and no Python package. From Python, call the REST API with requests, or generate a client from the OpenAPI JSON.

No. Sume's docs describe one SDK, the TypeScript package @sume-com/sdk, and no Python package. From Python you call the REST API at https://api.sume.com/v1 with any HTTP client, or you generate a typed client from the live OpenAPI schema at https://api.sume.com/reference/json.
What the docs say
The Developer API overview says the SDK works from Node, Bun, Deno or Workers, and that it is a convenience layer, not a second contract: the API reference stays the source of truth for fields.
| Option | Good for | Cost |
|---|---|---|
requests or httpx by hand | A few endpoints, full control | You write retry and polling |
| Client generated from the OpenAPI JSON | Typed models for many endpoints | Regenerate when the schema changes |
| Call a TypeScript service that uses the SDK | Reusing waitForJob and verifyWebhook | One more service to run |
A first call and a status read
Authenticate with Authorization: Bearer (the API also accepts x-api-key). This session reads /v1/me to prove the key works, then wraps the status endpoint. The status payload sits under data.
import os, requests
s = requests.Session()
s.headers["Authorization"] = f"Bearer {os.environ['SUME_API_KEY']}"
me = s.get("https://api.sume.com/v1/me", timeout=30)
me.raise_for_status()
print(me.json())
def status(job_id: str) -> dict:
r = s.get(f"https://api.sume.com/v1/jobs/{job_id}/status", timeout=30)
r.raise_for_status()
return r.json()["data"]Write what the SDK would have written
- Poll
GET /v1/jobs/:id/statusand stop whenterminalis true. - Send an
Idempotency-Keyon every paid submit you might retry. - Verify webhooks on the raw body with
x-sume-webhook-signature.
Sources
Related posts
More in Developers
- SSE or WebSocket for AI video progress on Sume? Poll or webhook
Sume has no SSE or WebSocket. mode subscribe is the same 30 s wait as sync. Use async with status polling, the events snapshot, or a webhook. Python example.
- Sume job.completed has no error key; job.failed has payload null
A Sume job.completed webhook omits the error key entirely, while job.failed and job.canceled send payload null plus an error. How to branch without a KeyError.
- jobs_wait says status unknown, poll_count 0: is the job lost?
No. A jobs_wait with status unknown and poll_count 0 means the server was too busy to read the job. Wait again on the same ids; never resubmit a paid create.
- Keep a series voice consistent: pin model, voice, speed and volume
A series sounds the same only if every episode sends the same TTS settings. Keep one profile in code, pin a model id, and send it with each Sume request.
Written by Sume