The Courier Python SDK provides typed access to the Courier REST API from any Python 3.9+ application. It includes synchronous and asynchronous clients, Pydantic response models, TypedDict request params, and automatic retries.
pip install trycourierAlso available via poetry add trycourier and pipenv install trycourier.
from courier import Courier
client = Courier()
response = client.send.message(
message={
"to": {"email": "you@example.com"},
"content": {
"title": "Hello from Courier!",
"body": "Your first notification, sent with the Python SDK.",
},
},
)
print(response.request_id)The client reads COURIER_API_KEY from your environment automatically. You can also pass it explicitly: Courier(api_key='your-key').
Import AsyncCourier instead of Courier and use await:
import asyncio
from courier import AsyncCourier
client = AsyncCourier()
async def main():
response = await client.send.message(
message={
"to": {"email": "you@example.com"},
"content": {
"title": "Hello from Courier!",
"body": "Sent from the async Python client.",
},
},
)
print(response.request_id)
asyncio.run(main())# Check message delivery status
message = client.messages.retrieve("message-id")
print(message.status)
# Create or update a user profile
client.profiles.create("user_123", profile={
"email": "jane@example.com",
"name": "Jane Doe",
})
# Issue a JWT for client-side SDK auth
result = client.auth.issue_token(
scope="user_id:user_123 inbox:read:messages inbox:write:events",
expires_in="2 days",
)Full documentation: courier.com/docs/sdk-libraries/python