Autogenerated from lexicons, well type hinted, documented, sync and async SDK for Python
Documentation
•
Guides
•
Examples
•
Discord Bluesky API
The AT Protocol SDK
⚠️ Under construction. Until the 1.0.0 release compatibility between versions is not guaranteed.
from atproto import Client, client_utils
def main():
client = Client()
profile = client.login('my-handle', 'my-password')
print('Welcome,', profile.display_name)
text = client_utils.TextBuilder().text('Hello World from ').link('Python SDK', 'https://atproto.blue')
post = client.send_post(text)
client.like(post.uri, post.cid)
if __name__ == '__main__':
main()
Code snippet of async version
import asyncio
from atproto import AsyncClient, client_utils
async def main():
client = AsyncClient()
profile = await client.login('my-handle', 'my-password')
print('Welcome,', profile.display_name)
text = client_utils.TextBuilder().text('Hello World from ').link('Python SDK', 'https://atproto.blue')
post = await client.send_post(text)
await client.like(post.uri, post.cid)
if __name__ == '__main__':
asyncio.run(main())
Installing
pip install atproto
Python 3.9 or higher.
What you get
This SDK attempts to implement everything that ATProto provides. There is support for Lexicon schemas, XRPC clients, Firehose, Jetstream, Identity, DID keys, signatures, and more. All models, queries, and procedures are generated automatically. The main focus is on the lexicons of atproto.com and bsky.app, but there is no vendor lock on it. Point the code generator at your own lexicon schemas and it produces the same typed models and clients for them. The SDK also provides utilities to work with CID, NSID, AT URI schemes, DAG-CBOR, CAR files, DID documents and more.
- Sync and async clients with identical method sets.
- Type hints everywhere, so your IDE can navigate the whole protocol.
- A high-level client for common tasks, with the complete XRPC surface underneath it.
- Real-time streaming over the Firehose or Jetstream, including archive backfill.
- Your own lexicons, compiled into an importable package by
atp gen custom.
Documentation
The documentation is live at atproto.blue.
| 🚀 Quickstart | Install, log in, post, read a timeline |
| 📚 Guides | Posting, reading, streaming, identity, errors |
| 💡 Examples | Every runnable example, inlined |
| 🧩 Custom lexicons | Generate models and clients from your own lexicons |
🛠 The atp CLI |
The code generator's command line |
| 💬 Direct messages | Chats, messages, and reactions |
| 🔥 Firehose & Jetstream | Data streaming from the whole network |
| 🌐 Identity | DID and handle resolvers |
| 📖 Model reference | Every lexicon on the network, as a Pydantic model |
| 🍿 Feed generator | Build a custom feed, end to end |
This is the SDK's documentation, not the protocol's. For the protocol itself, see atproto.com and bsky.network/docs.
SDK structure
The SDK is built upon the following components:
| Package | Description |
|---|---|
atproto |
Import shortcuts to other packages. |
atproto_cli |
CLI tool to generate code. |
atproto_client |
XRPC Client, data models, and utils like rich text helper. |
atproto_codegen |
Code generator of models, clients, and namespaces. |
atproto_core |
Tools to work with NSID, AT URI Schemes, CID, CAR files, and DID Documents. |
atproto_crypto |
Crypto utils like multibase, signature verification, work with DID keys. |
atproto_firehose |
Firehose (data streaming) client and models. |
atproto_identity |
Identity resolvers for DID, Handle, AT Protocol data, signing keys. |
atproto_jetstream |
Jetstream v2 (data streaming) client and models. |
atproto_lexicon |
Lexicon parser. |
atproto_server |
Server-side utils like JWT. |
atproto_subscription |
Websocket subscription runtime behind the streaming clients. |
I highly recommend that you use the atproto package to import everything that you need. It contains shortcuts to all other packages.
Getting help
You can get help in several ways:
- Report bugs, request new features by creating an issue.
- Ask questions by starting a discussion.
- Ask questions in Discord server.
Change log
The full change log is available in CHANGES.md.
Contributing
Contributions of all sizes are welcome. The contribution guidelines will be presented later.
License
MIT
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file atproto-0.0.72.tar.gz.
File metadata
- Download URL: atproto-0.0.72.tar.gz
- Upload date:
- Size: 299.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
eec904188b0beba165a7cc14ccc6a190b3ce061fecac4db3b9166e2500b02a41
|
|
| MD5 |
cdc38649d53ad3bda95e429c65b946b7
|
|
| BLAKE2b-256 |
c6549b365b712ae0e98af668af743a5411a7be44232ab0bec3f88e88f560304d
|
Provenance
The following attestation bundles were made for atproto-0.0.72.tar.gz:
Publisher:
publish_release.yml on MarshalX/atproto
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
atproto-0.0.72.tar.gz -
Subject digest:
eec904188b0beba165a7cc14ccc6a190b3ce061fecac4db3b9166e2500b02a41 - Sigstore transparency entry: 2787136759
- Sigstore integration time:
-
Permalink:
MarshalX/atproto@1b29f763b57a0b191f0187ec066293f325ed0889 -
Branch / Tag:
refs/tags/v0.0.72 - Owner: https://github.com/MarshalX
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish_release.yml@1b29f763b57a0b191f0187ec066293f325ed0889 -
Trigger Event:
release
-
Statement type:
File details
Details for the file atproto-0.0.72-py3-none-any.whl.
File metadata
- Download URL: atproto-0.0.72-py3-none-any.whl
- Upload date:
- Size: 623.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
239ca1c54cb4c878f625581b44abd1f0018b7b55419f7ca886468641ecb7fb09
|
|
| MD5 |
4b2c1959509f665e26ca97119d90f43a
|
|
| BLAKE2b-256 |
280135eb989f870b2e152d5fe7384224a28d82b2d010bf9bb45b07e06966bddd
|
Provenance
The following attestation bundles were made for atproto-0.0.72-py3-none-any.whl:
Publisher:
publish_release.yml on MarshalX/atproto
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
atproto-0.0.72-py3-none-any.whl -
Subject digest:
239ca1c54cb4c878f625581b44abd1f0018b7b55419f7ca886468641ecb7fb09 - Sigstore transparency entry: 2787136946
- Sigstore integration time:
-
Permalink:
MarshalX/atproto@1b29f763b57a0b191f0187ec066293f325ed0889 -
Branch / Tag:
refs/tags/v0.0.72 - Owner: https://github.com/MarshalX
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish_release.yml@1b29f763b57a0b191f0187ec066293f325ed0889 -
Trigger Event:
release
-
Statement type: