Gladia Python SDK
A Python SDK for the Gladia API.
Requirements
You need Python 3.10+ for this package.
Installation
pip install gladiaio-sdk
# or with uv
uv add gladiaio-sdk
Usage
Import GladiaClient and create an instance.
Provide an API key with api_key or the GLADIA_API_KEY environment variable. Get your API key in under a minute.
You can also set GLADIA_API_URL. For live sessions, GLADIA_REGION (eu-west / us-west) is passed only on session creation (POST /v2/live).
Sync client
from gladiaio_sdk import GladiaClient
gladia_client = GladiaClient(api_key="your-api-key")
Pre-recorded transcription
transcribe() accepts a path, Path, binary file object, or http(s) URL. It uploads when needed, then polls until the job completes.
from gladiaio_sdk import GladiaClient
gladia_client = GladiaClient(api_key="your-api-key")
transcription = gladia_client.prerecorded().transcribe(
"audio.mp3",
{
"language_config": {
"languages": ["en"],
},
},
)
print(transcription.result.transcription.full_transcript)
See all the supported languages here!
Pass the options as the second argument to enable all the features from Audio intelligence — diarization, translation, PII redaction, and more.
Async pre-recorded
Use prerecorded_async() and await the same methods. Options match the sync API.
import asyncio
from gladiaio_sdk import GladiaClient
async def main() -> None:
gladia_client = GladiaClient(api_key="your-api-key")
transcription = await gladia_client.prerecorded_async().transcribe(
"audio.mp3",
{
"language_config": {
"languages": ["en"],
},
},
)
print(transcription.result.transcription.full_transcript)
asyncio.run(main())
Live transcription
Get a live client from your GladiaClient:
live_client = gladia_client.live()
Async version:
live_client = gladia_client.live_async()
from gladiaio_sdk import (
LiveV2EndedMessage,
LiveV2InitRequest,
LiveV2InitResponse,
LiveV2LanguageConfig,
LiveV2MessagesConfig,
LiveV2WebSocketMessage,
)
live_session = live_client.start_session(
LiveV2InitRequest(
model="solaria-1",
encoding="wav/pcm",
sample_rate=16000,
bit_depth=16,
channels=1,
language_config=LiveV2LanguageConfig(
languages=["en"],
),
messages_config=LiveV2MessagesConfig(
receive_partial_transcripts=True,
),
)
)
@live_session.on("message")
def on_message(message: LiveV2WebSocketMessage):
if message.type == "transcript":
print(f"{'F' if message.data.is_final else 'P'} | {message.data.utterance.text.strip()}")
@live_session.once("started")
def on_started(response: LiveV2InitResponse):
print(f"Session {response.id} started")
@live_session.on("error")
def on_error(error: Exception):
print(f"An error occurred during live session: {error}")
@live_session.once("ended")
def on_ended(ended: LiveV2EndedMessage):
print(f"Session {live_session.session_id} ended")
live_session.send_audio(audio_bytes)
live_session.stop_recording()
Use LiveV2InitRequest fields for realtime/post-processing options — see Live STT features and the live init API.
To use options the SDK doesn't type yet, pass a plain dict to start_session. It is sent as-is, like in the JS SDK:
live_client.start_session({"encoding": "wav/pcm", "numerals": True})
Likewise, nothing the API sends is dropped:
- A message of a type the SDK doesn't know yet is emitted on
messageas aLiveV2UnknownWebSocketMessage(check for it withisinstance). - Fields the SDK doesn't know yet are readable as attributes, e.g.
utterance.text_raw. Type checkers don't know them (like TypeScript), so add a# type: ignorecomment where you read one.
Async live
Same session API; use live_async() and run under asyncio.run or your app loop:
import asyncio
from gladiaio_sdk import (
GladiaClient,
LiveV2EndedMessage,
LiveV2InitRequest,
LiveV2InitResponse,
LiveV2LanguageConfig,
LiveV2MessagesConfig,
LiveV2WebSocketMessage,
)
async def main() -> None:
gladia_client = GladiaClient(api_key="your-api-key")
live_client = gladia_client.live_async()
session_done = asyncio.Event()
live_session = live_client.start_session(
LiveV2InitRequest(
model="solaria-1",
encoding="wav/pcm",
sample_rate=16000,
bit_depth=16,
channels=1,
language_config=LiveV2LanguageConfig(languages=["en"]),
messages_config=LiveV2MessagesConfig(receive_partial_transcripts=True),
)
)
@live_session.on("message")
def on_message(message: LiveV2WebSocketMessage):
if message.type == "transcript":
print(f"{'F' if message.data.is_final else 'P'} | {message.data.utterance.text.strip()}")
@live_session.once("started")
def on_started(response: LiveV2InitResponse):
print(f"Session {response.id} started")
@live_session.on("error")
def on_error(error: Exception):
print(f"An error occurred during live session: {error}")
session_done.set()
@live_session.once("ended")
def on_ended(ended: LiveV2EndedMessage):
print(f"Session {live_session.session_id} ended")
session_done.set()
live_session.send_audio(audio_bytes)
live_session.stop_recording()
await session_done.wait()
asyncio.run(main())
When you need the session id from an async session: await live_session.get_session_id(). For a sync session, use live_session.session_id after started.
Documentation
License
MIT
Metadata
Release files for gladiaio-sdk 2.2.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| gladiaio_sdk-2.2.1.tar.gz | 59.4 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| gladiaio_sdk-2.2.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 114.5 kB
Release files / gladiaio_sdk-2.2.1.tar.gz
| Download URL | gladiaio_sdk-2.2.1.tar.gz |
|---|---|
| Size | 59.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
5b559acb8b02a7208eddcf276d12fa37a2ff973ad016f57a1e60b0a028e24e33
|
|
BLAKE2b-256 checksum How to use checksums |
87f856b1c6a00fb9907ec1f3a14fbd35d3ceaa1b3c67df3b797b789260f2bda3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.13.5 {"installer":{"name":"uv","version":"0.13.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / gladiaio_sdk-2.2.1-py3-none-any.whl
| Download URL | gladiaio_sdk-2.2.1-py3-none-any.whl |
|---|---|
| Size | 55.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
9057ddf06505c1b5a7daaec79c1a7c194dd9b9d49a90c66f2e88f2f3e802d7f9
|
|
BLAKE2b-256 checksum How to use checksums |
e9ededb00e26ff02b737424080115e25cacf5491110e39d2816e1f1bbb2555d8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.13.5 {"installer":{"name":"uv","version":"0.13.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Security for gladiaio-sdk 2.2.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.