REST API
Acts as the signed-in person. Base path /open/v1.
Acts as the signed-in user: send the access token as Authorization: Bearer …. The SDK wraps every call (unet.api.feed(), unet.api.createPost(), …). Base path /open/v1.
| Request | Permission |
|---|---|
GET /feed?limit&cursor | content:read |
GET /posts/:id · /posts/:id/comments · /posts/:id/long-form | content:read |
GET /places/:id/posts?lat&lon (posts tagged with a place) | content:read |
GET /posts/:id/likes · /posts/:id/reposts · /comments/:id/likes · /comments/:id/reposts (only for the author) · POST /posts/:id/translate {targetLang?} | content:read |
GET /comments/:id/replies | content:read |
GET /users/:name?limit&offset · /users/:name/followers · /users/:name/following | content:read |
GET /search?q&limit | search:read |
GET /me/saved · /me/likes | library:read |
GET /notifications · POST /notifications/read | notifications:read |
POST /posts (JSON or multipart: media, long-form, GIF, hashtags, place, schedule) | posts:write |
GET /gifs/search?q · /gifs/trending · /places/search?q · /me/scheduled | posts:write |
PUT|DELETE /posts/:id/like · /posts/:id/repost · /comments/:id/like | posts:interact |
POST /posts/:id/comments | posts:interact |
PUT|DELETE /posts/:id/save | library:write |
PUT|DELETE /users/:name/follow · POST /me/follow-requests/:id/accept|reject · GET /me/follow-requests | follows:write |
PATCH /me/profile {displayName, bio, links} | profile:write |
POST /me/avatar · POST /me/banner (multipart, ≤ 10 MB) · DELETE /me/banner | profile:write |
GET /me/settings → {privacy, notifications, content, feed} | settings:read |
PATCH /me/settings {privacy?, notifications?, content?, feed?} (send only what changes) | settings:write |
POST /me/muted-keywords {keyword} · DELETE /me/muted-keywords/:keyword | settings:write |
PUT · DELETE /users/:username/subscription (new-post notifications; followed accounts only) | follows:write |
GET /users/:username/mutual (people you follow who follow them) | content:read |
PUT · DELETE /posts/:id/pin (pin your post to your profile) | posts:manage |
POST /posts/:id/not-interested | posts:interact |
GET /media/link?url=<post.video.url> (a short-lived link a <video src> streams from, with byte ranges) | content:read |
GET /fediverse · PUT /fediverse {enabled, acceptedPlaintextDisclosure} | settings:read · settings:write |
GET /fediverse/feed (posts of the Fediverse accounts you follow) | content:read |
GET /fediverse/search?q= (accounts, posts, hashtags on other servers) | search:read |
GET /fediverse/actors/:id · /fediverse/actors/lookup?handle= · /fediverse/actors/:id/posts?replies · /fediverse/actors/:id/followers · /following · /fediverse/post?uri= · /fediverse/thread?uri= · /fediverse/hashtags/:tag | content:read |
POST /fediverse/follows {handle} · DELETE /fediverse/actors/:id/follow | follows:write |
PUT · DELETE /fediverse/like?uri= · /fediverse/boost?uri= · POST /fediverse/replies · POST /fediverse/polls/vote | posts:interact |
PATCH · DELETE /fediverse/replies (your replies) | posts:manage |
GET /fediverse/blocked · PUT · DELETE /fediverse/actors/:id/block | safety:manage |
GET /me/not-interested · DELETE /me/not-interested/:id | settings:read · settings:write |
PATCH|DELETE /posts/:id · POST /posts/:id/reschedule · DELETE /comments/:id | posts:manage |
GET /me/blocks · /me/muted · PUT|DELETE /users/:name/block|mute · POST /reports | safety:manage |
Errors: 401 invalid_token; 403 insufficient_scope (missing permission) or 403 not_allowed (a rule, e.g. blocked); 429 slow down (Retry-After). Writes take an Idempotency-Key.