atproto / atproto
Bluesky API Client for AT Protocol
Fund package maintenance!
0.1.x-dev
2026-05-23 19:15 UTC
Requires
- php: ~8.4.0 || ~8.5.0
- ext-curl: *
- ext-mbstring: *
- ghostwriter/case-converter: ^2.2.2
- ghostwriter/collection: ^2.1.0
- ghostwriter/config: ^2.1.3
- ghostwriter/container: ^7.0.1
- ghostwriter/event-dispatcher: ^6.1.1
- ghostwriter/http: ^0.2.0
- ghostwriter/json: ^3.0.2
- ghostwriter/option: ^2.0.0
- ghostwriter/result: ^2.0.0
- ghostwriter/uuid: ^1.0.3
Requires (Dev)
- ext-xdebug: *
- boundwize/structarmed: ^0.7.6
- ghostwriter/coding-standard: dev-main
- ghostwriter/filesystem: ^0.2.0
- ghostwriter/testify: ^0.1.1
- mockery/mockery: ^1.6.12
- nikic/php-parser: ^5.7.0
- phpunit/phpunit: ^13.1.11
- symfony/var-dumper: ^8.0.8
Replaces
- 1.0.x-dev
- 0.2.x-dev
- 0.1.x-dev
- dev-composer-ghostwriter-http-0.2.0
- dev-composer-install-ghostwriter-testify
- dev-submodules-resources-bluesky-social-atproto-9378a82
- dev-submodules-resources-bluesky-social-atproto-64f5148
- dev-composer-update
- dev-composer-boundwize-structarmed-0.7.6
- dev-submodules-resources-bluesky-social-atproto-eaf1a51
- dev-submodules-resources-bluesky-social-atproto-86bb63e
- dev-composer-boundwize-structarmed-0.7.5
- dev-submodules-resources-bluesky-social-atproto-0c057be
- dev-composer-boundwize-structarmed-0.7.4
- dev-submodules-resources-bluesky-social-atproto-37bff2b
- dev-submodules-resources-bluesky-social-atproto-ef69a53
- dev-phpunit-configuration
- dev-submodules-resources-bluesky-social-atproto-5bdb4ad
- dev-composer-phpunit-phpunit-13.1.11
- dev-submodules-resources-bluesky-social-atproto-1259646
- dev-composer-boundwize-structarmed-0.6.17
- dev-submodules-resources-bluesky-social-atproto-5625907
- dev-composer-boundwize-structarmed-0.6.16
- dev-submodules-resources-bluesky-social-atproto-5b43753
- dev-submodules-resources-bluesky-social-atproto-37c6fe6
- dev-composer-boundwize-structarmed-0.6.15
- dev-infection-configuration
- dev-composer-boundwize-structarmed-0.6.14
- dev-submodules-resources-bluesky-social-atproto-7f7bb09
- dev-submodules-resources-bluesky-social-atproto-efcc13d
- dev-submodules-resources-bluesky-social-atproto-25e0233
- dev-composer-boundwize-structarmed-0.6.13
- dev-submodules-resources-bluesky-social-atproto-20c5cc1
- dev-composer-boundwize-structarmed-0.6.10
- dev-submodules-resources-bluesky-social-atproto-c633327
- dev-composer-boundwize-structarmed-0.6.9
- dev-submodules-resources-bluesky-social-atproto-908bece
- dev-submodules-resources-bluesky-social-atproto-e60137c
- dev-submodules-resources-bluesky-social-atproto-d8b2374
- dev-composer-boundwize-structarmed-0.6.8
- dev-submodules-resources-bluesky-social-atproto-ea4184b
- dev-composer-boundwize-structarmed-0.6.7
- dev-composer-boundwize-structarmed-0.6.6
- dev-submodules-resources-bluesky-social-atproto-38bc2fa
- dev-composer-boundwize-structarmed-0.6.5
- dev-composer-boundwize-structarmed-0.6.4
- dev-composer-boundwize-structarmed-0.6.3
- dev-composer-boundwize-structarmed-0.6.2
- dev-submodules-resources-bluesky-social-atproto-04d727c
- dev-composer-boundwize-structarmed-0.5.5
- dev-composer-phpunit-phpunit-13.1.10
- dev-composer-boundwize-structarmed-0.5.4
- dev-composer-boundwize-structarmed-0.5.3
- dev-composer-boundwize-structarmed-0.5.2
- dev-submodules-resources-bluesky-social-atproto-dda6194
- dev-composer-boundwize-structarmed-0.5.1
- dev-submodules-resources-bluesky-social-atproto-7cfff18
- dev-composer-install-boundwize/structarmed
- dev-submodules/resources/bluesky-social/atproto-5d9f96c
- dev-submodules/resources/bluesky-social/atproto-7b8c5d6
- dev-composer/update
- dev-submodules/resources/bluesky-social/atproto-6ccfa49
- dev-submodules/resources/bluesky-social/atproto-907edfa
- dev-submodules/resources/bluesky-social/atproto-733d557
- dev-main
This package is auto-updated.
Last update: 2026-05-23 19:16:03 UTC
README
Warning
This project is not finished yet, work in progress.
Installation
You can install the package via composer:
composer require ghostwriter/atprotocol
Usage
Auth
Info
Use app passwords to securely login to Bluesky without giving full access to your account or password. https://bsky.app/settings/app-passwords
$bsky = new Bluesky(personalDataServer: 'https://bsky.social'); // create a new account on the server $sessionData = $bsky->createAccount( email: 'nathanael.esayeas@protonmail.com', handle: 'codepoet.bsky.social', password: '************' inviteCode: 'black-lives-matter', ); // if an existing session (accessed with 'bsky.session') was securely stored previously, then reuse that $bsky->resumeSession(session: $sessionData); // if no old session was available, create a new one by logging in with password (App Password) $sessionData = $bsky->login( identifier: 'codepoet.bsky.social', password: '************' ); $bsky->post(text: 'My first post using ghostwriter/atprotocol for PHP.'); // Feeds and content $bsky->getTimeline($params,$opts) $bsky->getAuthorFeed($params,$opts) $bsky->getPostThread($params,$opts) $bsky->getPost($params) $bsky->getPosts($params,$opts) $bsky->getLikes($params,$opts) $bsky->getRepostedBy($params,$opts) $bsky->post($record) $bsky->deletePost($postUri) $bsky->like($uri, cid) $bsky->deleteLike($likeUri) $bsky->repost($uri, cid) $bsky->deleteRepost($repostUri) $bsky->uploadBlob($data,$opts) // Social graph $bsky->getFollows($params,$opts) $bsky->getFollowers($params,$opts) $bsky->follow($did) $bsky->deleteFollow($followUri) // Actors $bsky->getProfile($params,$opts) $bsky->upsertProfile($updateFn) $bsky->getProfiles($params,$opts) $bsky->getSuggestions($params,$opts) $bsky->searchActors($params,$opts) $bsky->mute($did) $bsky->unmute($did) $bsky->muteModList($listUri) $bsky->unmuteModList($listUri) $bsky->blockModList($listUri) $bsky->unblockModList($listUri) // Notifications $bsky->listNotifications($params,$opts) $bsky->countUnreadNotifications($params,$opts) $bsky->updateSeenNotifications() // Identity $bsky->resolveHandle($params,$opts) $bsky->updateHandle($params,$opts) // Session management $bsky->createAccount($params) $bsky->login($params) $bsky->resumeSession($session) // Excepions // { "name": "InvalidHandle" }, // { "name": "InvalidPassword" }, // { "name": "InvalidInviteCode" }, // { "name": "HandleNotAvailable" }, // { "name": "UnsupportedDomain" }, // { "name": "UnresolvableDid" }, // { "name": "IncompatibleDidDoc" } // TODO: extract the headers from the lexicon objects
Changelog
Please see CHANGELOG.md for more information on what has changed recently.
Security
If you discover any security-related issues, please use Security Advisories instead of using the issue tracker.
Credits
License
The BSD-3-Clause. Please see License File for more information.