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.
fromcourierimportCourierclient=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:
importasynciofromcourierimportAsyncCourierclient=AsyncCourier()
asyncdefmain():
response=awaitclient.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 statusmessage=client.messages.retrieve("message-id")
print(message.status)
# Create or update a user profileclient.profiles.create("user_123", profile={
"email": "jane@example.com",
"name": "Jane Doe",
})
# Issue a JWT for client-side SDK authresult=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