Posts
Feeds
feed-service
The home feed and a profile's posts, custom feeds that a person makes and names (feeds.md), and reposts.
Make a custom feed
/feeds/Who: Somebody signed in, with media:write
Body application/json
accessstringWho may see it:myself,followers,registeredorpublic. One ofmyself,followers,registered,public.bodystringWhat it is for, in its owner's words. At most 500 characters.definitionanythingWhat it shows, as anahita-libs/feeds reads it.iconstringIts picture, by name: one of feeds.Icons. The default when left out. At most 20 characters.namestringrequiredWhat it is called. At most 100 characters.
Answers
- 201Createdfeed.CustomFeedResponse application/json
- 400the request is not well formed, or a value in it is not one it may be
- 401no token, or one that has expired
- 403the viewer may not make one
- 409
too_many_feedsRefusal application/json - 422why the definition was refused:
malformed,unknown_field,too_broad,too_many_actors,too_many_hashtags,too_many_keywords,too_many_locations,keyword_length,invalid_hashtag,unknown_media_type,unknown_actor_type,invalid_actor,invalid_location,invalid_language,invalid_near(an area's point or radius, 1 to 500 km),unknown_originorunknown_order; and, reading a feed of what is near its reader with nonear_latitudeandnear_longitude,location_needed;invalidfor a fieldRefusal application/json
Request
curl -X POST "https://api.example.org/feeds/" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"access": "myself",
"body": "string",
"definition": null,
"icon": "string",
"name": "string"
}'
const response = await fetch('https://api.example.org/feeds/', {
method: 'POST',
headers: { Authorization: `Bearer ${token}`, 'Content-Type': 'application/json' },
body: JSON.stringify({
"access": "myself",
"body": "string",
"definition": null,
"icon": "string",
"name": "string"
}),
});
const answer = await response.json();
import requests
response = requests.post(
"https://api.example.org/feeds/",
headers={"Authorization": f"Bearer {token}"},
json={
"access": "myself",
"body": "string",
"definition": None,
"icon": "string",
"name": "string"
},
)
answer = response.json()
Answer · 201
{
"access": "string",
"authorized": {
"copy": false,
"delete": false,
"edit": false,
"pin": false
},
"body": "string",
"created_at": "2026-10-27T09:30:00Z",
"definition": null,
"icon": "string",
"id": 42,
"is_pinned": false,
"name": "string",
"owner": {
"access": "string",
"alias": "string",
"author": {
"alias": null,
"avatar_urls": null,
"id": null,
"name": null,
"type": null
},
"authorized": {
"add_follower": null,
"administration": null,
"audiences": null,
"block_from_owner": null,
"comment": null,
"composers": null,
"delete": null,
"download": null,
"edit": null,
"hide": null,
"invite": null,
"like": null,
"pin": null,
"quote": null
},
"avatar_urls": {
"key": null
},
"body": "string",
"comment_count": 1,
"content": "string",
"cover_urls": {
"key": null
},
"created_at": "2026-10-27T09:30:00Z",
"editor": {
"alias": null,
"avatar_urls": null,
"id": null,
"name": null,
"type": null
},
"event": {
"address": null,
"cancelled_at": null,
"capacity": null,
"ends_at": null,
"going_count": null,
"has_address": null,
"has_online_url": null,
"host": null,
"is_full": null,
"maybe_count": null,
"online_url": null,
"open_to_host_followers": null,
"starts_at": null,
"state": null,
"timezone_name": null,
"viewer_rsvp": null
},
"feed": {
"definition": null,
"icon": null
},
"files": [
null
],
"follower_count": 1,
"id": 42,
"is_admined_by_viewer": false,
"is_blocked_by_viewer": false,
"is_following_viewer": false,
"is_leading_viewer": false,
"is_liked_by_viewer": false,
"is_reposted_by_viewer": false,
"is_saved_by_viewer": false,
"is_subscribed_by_viewer": false,
"language": "en",
"likes_count": 1,
"link_preview": {
"description": null,
"image": null,
"site_name": null,
"title": null,
"url": null
},
"media_removed": {
"alts": null,
"count": null,
"gone": null
},
"mimetype": "string",
"name": "string",
"origin_domain": "string",
"owner": {
"alias": null,
"avatar_urls": null,
"body": null,
"id": null,
"is_following_viewer": null,
"is_leading_viewer": null,
"name": null,
"type": null
},
"parent": {
"access": null,
"alias": null,
"author": null,
"authorized": null,
"body": null,
"content": null,
"cover_urls": null,
"created_at": null,
"files": null,
"id": null,
"is_liked_by_viewer": null,
"is_reposted_by_viewer": null,
"is_saved_by_viewer": null,
"link_preview": null,
"name": null,
"owner": null,
"portrait_urls": null,
"title": null,
"type": null,
"video": null
},
"pinned": false,
"portrait_urls": {
"key": null
},
"quote": {
"post": null,
"state": null
},
"quote_count": 1,
"quote_id": 42,
"repost_count": 1,
"root": {
"access": null,
"alias": null,
"author": null,
"authorized": null,
"body": null,
"content": null,
"cover_urls": null,
"created_at": null,
"files": null,
"id": null,
"is_liked_by_viewer": null,
"is_reposted_by_viewer": null,
"is_saved_by_viewer": null,
"link_preview": null,
"name": null,
"owner": null,
"portrait_urls": null,
"title": null,
"type": null,
"video": null
},
"root_id": 42,
"title": "string",
"type": "string",
"uri": "https://example.org/",
"verified": false,
"video": {
"duration": null,
"files": null,
"height": null,
"loop": null,
"poster": null,
"width": null
}
},
"references": [
{
"access": "string",
"alias": "string",
"author": null,
"authorized": null,
"avatar_urls": {
"key": null
},
"body": "string",
"comment_count": 1,
"content": "string",
"cover_urls": {
"key": null
},
"created_at": "2026-10-27T09:30:00Z",
"editor": null,
"event": null,
"feed": null,
"files": [
null
],
"follower_count": 1,
"id": 42,
"is_admined_by_viewer": false,
"is_blocked_by_viewer": false,
"is_following_viewer": false,
"is_leading_viewer": false,
"is_liked_by_viewer": false,
"is_reposted_by_viewer": false,
"is_saved_by_viewer": false,
"is_subscribed_by_viewer": false,
"language": "en",
"likes_count": 1,
"link_preview": null,
"media_removed": null,
"mimetype": "string",
"name": "string",
"origin_domain": "string",
"owner": null,
"parent": null,
"pinned": false,
"portrait_urls": {
"key": null
},
"quote": null,
"quote_count": 1,
"quote_id": 42,
"repost_count": 1,
"root": null,
"root_id": 42,
"title": "string",
"type": "string",
"uri": "https://example.org/",
"verified": false,
"video": null
}
],
"type": "string",
"updated_at": "2026-10-27T09:30:00Z"
}
One custom feed
/feeds/{id}With the profiles and places its definition names, the ones the viewer may see, in references.
Who: Anyone, signed in or not
Parameters
idintegerrequiredin pathThe feed's id.
Answers
- 200OKfeed.CustomFeedResponse application/json
- 400the request is not well formed, or a value in it is not one it may be
- 404there is no such feed that the viewer may see
Request
curl "https://api.example.org/feeds/<id>"
const response = await fetch('https://api.example.org/feeds/<id>', {
method: 'GET',
});
const answer = await response.json();
import requests
response = requests.get(
"https://api.example.org/feeds/<id>",
)
answer = response.json()
Answer · 200
{
"access": "string",
"authorized": {
"copy": false,
"delete": false,
"edit": false,
"pin": false
},
"body": "string",
"created_at": "2026-10-27T09:30:00Z",
"definition": null,
"icon": "string",
"id": 42,
"is_pinned": false,
"name": "string",
"owner": {
"access": "string",
"alias": "string",
"author": {
"alias": null,
"avatar_urls": null,
"id": null,
"name": null,
"type": null
},
"authorized": {
"add_follower": null,
"administration": null,
"audiences": null,
"block_from_owner": null,
"comment": null,
"composers": null,
"delete": null,
"download": null,
"edit": null,
"hide": null,
"invite": null,
"like": null,
"pin": null,
"quote": null
},
"avatar_urls": {
"key": null
},
"body": "string",
"comment_count": 1,
"content": "string",
"cover_urls": {
"key": null
},
"created_at": "2026-10-27T09:30:00Z",
"editor": {
"alias": null,
"avatar_urls": null,
"id": null,
"name": null,
"type": null
},
"event": {
"address": null,
"cancelled_at": null,
"capacity": null,
"ends_at": null,
"going_count": null,
"has_address": null,
"has_online_url": null,
"host": null,
"is_full": null,
"maybe_count": null,
"online_url": null,
"open_to_host_followers": null,
"starts_at": null,
"state": null,
"timezone_name": null,
"viewer_rsvp": null
},
"feed": {
"definition": null,
"icon": null
},
"files": [
null
],
"follower_count": 1,
"id": 42,
"is_admined_by_viewer": false,
"is_blocked_by_viewer": false,
"is_following_viewer": false,
"is_leading_viewer": false,
"is_liked_by_viewer": false,
"is_reposted_by_viewer": false,
"is_saved_by_viewer": false,
"is_subscribed_by_viewer": false,
"language": "en",
"likes_count": 1,
"link_preview": {
"description": null,
"image": null,
"site_name": null,
"title": null,
"url": null
},
"media_removed": {
"alts": null,
"count": null,
"gone": null
},
"mimetype": "string",
"name": "string",
"origin_domain": "string",
"owner": {
"alias": null,
"avatar_urls": null,
"body": null,
"id": null,
"is_following_viewer": null,
"is_leading_viewer": null,
"name": null,
"type": null
},
"parent": {
"access": null,
"alias": null,
"author": null,
"authorized": null,
"body": null,
"content": null,
"cover_urls": null,
"created_at": null,
"files": null,
"id": null,
"is_liked_by_viewer": null,
"is_reposted_by_viewer": null,
"is_saved_by_viewer": null,
"link_preview": null,
"name": null,
"owner": null,
"portrait_urls": null,
"title": null,
"type": null,
"video": null
},
"pinned": false,
"portrait_urls": {
"key": null
},
"quote": {
"post": null,
"state": null
},
"quote_count": 1,
"quote_id": 42,
"repost_count": 1,
"root": {
"access": null,
"alias": null,
"author": null,
"authorized": null,
"body": null,
"content": null,
"cover_urls": null,
"created_at": null,
"files": null,
"id": null,
"is_liked_by_viewer": null,
"is_reposted_by_viewer": null,
"is_saved_by_viewer": null,
"link_preview": null,
"name": null,
"owner": null,
"portrait_urls": null,
"title": null,
"type": null,
"video": null
},
"root_id": 42,
"title": "string",
"type": "string",
"uri": "https://example.org/",
"verified": false,
"video": {
"duration": null,
"files": null,
"height": null,
"loop": null,
"poster": null,
"width": null
}
},
"references": [
{
"access": "string",
"alias": "string",
"author": null,
"authorized": null,
"avatar_urls": {
"key": null
},
"body": "string",
"comment_count": 1,
"content": "string",
"cover_urls": {
"key": null
},
"created_at": "2026-10-27T09:30:00Z",
"editor": null,
"event": null,
"feed": null,
"files": [
null
],
"follower_count": 1,
"id": 42,
"is_admined_by_viewer": false,
"is_blocked_by_viewer": false,
"is_following_viewer": false,
"is_leading_viewer": false,
"is_liked_by_viewer": false,
"is_reposted_by_viewer": false,
"is_saved_by_viewer": false,
"is_subscribed_by_viewer": false,
"language": "en",
"likes_count": 1,
"link_preview": null,
"media_removed": null,
"mimetype": "string",
"name": "string",
"origin_domain": "string",
"owner": null,
"parent": null,
"pinned": false,
"portrait_urls": {
"key": null
},
"quote": null,
"quote_count": 1,
"quote_id": 42,
"repost_count": 1,
"root": null,
"root_id": 42,
"title": "string",
"type": "string",
"uri": "https://example.org/",
"verified": false,
"video": null
}
],
"type": "string",
"updated_at": "2026-10-27T09:30:00Z"
}
Change a custom feed
/feeds/{id}Who: Somebody signed in, with media:write
Parameters
idintegerrequiredin pathThe feed's id.
Body application/json
accessstringWho may see it:myself,followers,registeredorpublic. One ofmyself,followers,registered,public.bodystringWhat it is for, in its owner's words. At most 500 characters.definitionanythingWhat it shows, as anahita-libs/feeds reads it.iconstringIts picture, by name: one of feeds.Icons. The default when left out. At most 20 characters.namestringrequiredWhat it is called. At most 100 characters.
Answers
- 200OKfeed.CustomFeedResponse application/json
- 400the request is not well formed, or a value in it is not one it may be
- 401no token, or one that has expired
- 403it is not the viewer's
- 404there is no such feed
- 422why the definition was refused:
malformed,unknown_field,too_broad,too_many_actors,too_many_hashtags,too_many_keywords,too_many_locations,keyword_length,invalid_hashtag,unknown_media_type,unknown_actor_type,invalid_actor,invalid_location,invalid_language,invalid_near(an area's point or radius, 1 to 500 km),unknown_originorunknown_order; and, reading a feed of what is near its reader with nonear_latitudeandnear_longitude,location_needed;invalidfor a fieldRefusal application/json
Request
curl -X PATCH "https://api.example.org/feeds/<id>" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"access": "myself",
"body": "string",
"definition": null,
"icon": "string",
"name": "string"
}'
const response = await fetch('https://api.example.org/feeds/<id>', {
method: 'PATCH',
headers: { Authorization: `Bearer ${token}`, 'Content-Type': 'application/json' },
body: JSON.stringify({
"access": "myself",
"body": "string",
"definition": null,
"icon": "string",
"name": "string"
}),
});
const answer = await response.json();
import requests
response = requests.patch(
"https://api.example.org/feeds/<id>",
headers={"Authorization": f"Bearer {token}"},
json={
"access": "myself",
"body": "string",
"definition": None,
"icon": "string",
"name": "string"
},
)
answer = response.json()
Answer · 200
{
"access": "string",
"authorized": {
"copy": false,
"delete": false,
"edit": false,
"pin": false
},
"body": "string",
"created_at": "2026-10-27T09:30:00Z",
"definition": null,
"icon": "string",
"id": 42,
"is_pinned": false,
"name": "string",
"owner": {
"access": "string",
"alias": "string",
"author": {
"alias": null,
"avatar_urls": null,
"id": null,
"name": null,
"type": null
},
"authorized": {
"add_follower": null,
"administration": null,
"audiences": null,
"block_from_owner": null,
"comment": null,
"composers": null,
"delete": null,
"download": null,
"edit": null,
"hide": null,
"invite": null,
"like": null,
"pin": null,
"quote": null
},
"avatar_urls": {
"key": null
},
"body": "string",
"comment_count": 1,
"content": "string",
"cover_urls": {
"key": null
},
"created_at": "2026-10-27T09:30:00Z",
"editor": {
"alias": null,
"avatar_urls": null,
"id": null,
"name": null,
"type": null
},
"event": {
"address": null,
"cancelled_at": null,
"capacity": null,
"ends_at": null,
"going_count": null,
"has_address": null,
"has_online_url": null,
"host": null,
"is_full": null,
"maybe_count": null,
"online_url": null,
"open_to_host_followers": null,
"starts_at": null,
"state": null,
"timezone_name": null,
"viewer_rsvp": null
},
"feed": {
"definition": null,
"icon": null
},
"files": [
null
],
"follower_count": 1,
"id": 42,
"is_admined_by_viewer": false,
"is_blocked_by_viewer": false,
"is_following_viewer": false,
"is_leading_viewer": false,
"is_liked_by_viewer": false,
"is_reposted_by_viewer": false,
"is_saved_by_viewer": false,
"is_subscribed_by_viewer": false,
"language": "en",
"likes_count": 1,
"link_preview": {
"description": null,
"image": null,
"site_name": null,
"title": null,
"url": null
},
"media_removed": {
"alts": null,
"count": null,
"gone": null
},
"mimetype": "string",
"name": "string",
"origin_domain": "string",
"owner": {
"alias": null,
"avatar_urls": null,
"body": null,
"id": null,
"is_following_viewer": null,
"is_leading_viewer": null,
"name": null,
"type": null
},
"parent": {
"access": null,
"alias": null,
"author": null,
"authorized": null,
"body": null,
"content": null,
"cover_urls": null,
"created_at": null,
"files": null,
"id": null,
"is_liked_by_viewer": null,
"is_reposted_by_viewer": null,
"is_saved_by_viewer": null,
"link_preview": null,
"name": null,
"owner": null,
"portrait_urls": null,
"title": null,
"type": null,
"video": null
},
"pinned": false,
"portrait_urls": {
"key": null
},
"quote": {
"post": null,
"state": null
},
"quote_count": 1,
"quote_id": 42,
"repost_count": 1,
"root": {
"access": null,
"alias": null,
"author": null,
"authorized": null,
"body": null,
"content": null,
"cover_urls": null,
"created_at": null,
"files": null,
"id": null,
"is_liked_by_viewer": null,
"is_reposted_by_viewer": null,
"is_saved_by_viewer": null,
"link_preview": null,
"name": null,
"owner": null,
"portrait_urls": null,
"title": null,
"type": null,
"video": null
},
"root_id": 42,
"title": "string",
"type": "string",
"uri": "https://example.org/",
"verified": false,
"video": {
"duration": null,
"files": null,
"height": null,
"loop": null,
"poster": null,
"width": null
}
},
"references": [
{
"access": "string",
"alias": "string",
"author": null,
"authorized": null,
"avatar_urls": {
"key": null
},
"body": "string",
"comment_count": 1,
"content": "string",
"cover_urls": {
"key": null
},
"created_at": "2026-10-27T09:30:00Z",
"editor": null,
"event": null,
"feed": null,
"files": [
null
],
"follower_count": 1,
"id": 42,
"is_admined_by_viewer": false,
"is_blocked_by_viewer": false,
"is_following_viewer": false,
"is_leading_viewer": false,
"is_liked_by_viewer": false,
"is_reposted_by_viewer": false,
"is_saved_by_viewer": false,
"is_subscribed_by_viewer": false,
"language": "en",
"likes_count": 1,
"link_preview": null,
"media_removed": null,
"mimetype": "string",
"name": "string",
"origin_domain": "string",
"owner": null,
"parent": null,
"pinned": false,
"portrait_urls": {
"key": null
},
"quote": null,
"quote_count": 1,
"quote_id": 42,
"repost_count": 1,
"root": null,
"root_id": 42,
"title": "string",
"type": "string",
"uri": "https://example.org/",
"verified": false,
"video": null
}
],
"type": "string",
"updated_at": "2026-10-27T09:30:00Z"
}
Delete a custom feed
/feeds/{id}Who: Somebody signed in, with media:write
Parameters
idintegerrequiredin pathThe feed's id.
Answers
- 204it is gone
- 400the request is not well formed, or a value in it is not one it may be
- 401no token, or one that has expired
- 403it is not the viewer's
- 404there is no such feed
Request
curl -X DELETE "https://api.example.org/feeds/<id>" \
-H "Authorization: Bearer $TOKEN"
const response = await fetch('https://api.example.org/feeds/<id>', {
method: 'DELETE',
headers: { Authorization: `Bearer ${token}` },
});
const answer = await response.json();
import requests
response = requests.delete(
"https://api.example.org/feeds/<id>",
headers={"Authorization": f"Bearer {token}"},
)
answer = response.json()
Copy a custom feed
/feeds/{id}/copyA feed of the viewer's own with the same definition, to change.
Who: Somebody signed in, with media:write
Parameters
idintegerrequiredin pathThe id of the feed copied.
Body application/json
namestringWhat to call the copy, in the copier's own language. "Copy of" and the feed's name when left out. At most 100 characters.
Answers
- 201Createdfeed.CustomFeedResponse application/json
- 400the request is not well formed, or a value in it is not one it may be
- 401no token, or one that has expired
- 403the viewer may not copy it
- 404there is no such feed that the viewer may see
- 409
too_many_feedsRefusal application/json - 422
malformedRefusal application/json
Request
curl -X POST "https://api.example.org/feeds/<id>/copy" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "string"
}'
const response = await fetch('https://api.example.org/feeds/<id>/copy', {
method: 'POST',
headers: { Authorization: `Bearer ${token}`, 'Content-Type': 'application/json' },
body: JSON.stringify({
"name": "string"
}),
});
const answer = await response.json();
import requests
response = requests.post(
"https://api.example.org/feeds/<id>/copy",
headers={"Authorization": f"Bearer {token}"},
json={
"name": "string"
},
)
answer = response.json()
Answer · 201
{
"access": "string",
"authorized": {
"copy": false,
"delete": false,
"edit": false,
"pin": false
},
"body": "string",
"created_at": "2026-10-27T09:30:00Z",
"definition": null,
"icon": "string",
"id": 42,
"is_pinned": false,
"name": "string",
"owner": {
"access": "string",
"alias": "string",
"author": {
"alias": null,
"avatar_urls": null,
"id": null,
"name": null,
"type": null
},
"authorized": {
"add_follower": null,
"administration": null,
"audiences": null,
"block_from_owner": null,
"comment": null,
"composers": null,
"delete": null,
"download": null,
"edit": null,
"hide": null,
"invite": null,
"like": null,
"pin": null,
"quote": null
},
"avatar_urls": {
"key": null
},
"body": "string",
"comment_count": 1,
"content": "string",
"cover_urls": {
"key": null
},
"created_at": "2026-10-27T09:30:00Z",
"editor": {
"alias": null,
"avatar_urls": null,
"id": null,
"name": null,
"type": null
},
"event": {
"address": null,
"cancelled_at": null,
"capacity": null,
"ends_at": null,
"going_count": null,
"has_address": null,
"has_online_url": null,
"host": null,
"is_full": null,
"maybe_count": null,
"online_url": null,
"open_to_host_followers": null,
"starts_at": null,
"state": null,
"timezone_name": null,
"viewer_rsvp": null
},
"feed": {
"definition": null,
"icon": null
},
"files": [
null
],
"follower_count": 1,
"id": 42,
"is_admined_by_viewer": false,
"is_blocked_by_viewer": false,
"is_following_viewer": false,
"is_leading_viewer": false,
"is_liked_by_viewer": false,
"is_reposted_by_viewer": false,
"is_saved_by_viewer": false,
"is_subscribed_by_viewer": false,
"language": "en",
"likes_count": 1,
"link_preview": {
"description": null,
"image": null,
"site_name": null,
"title": null,
"url": null
},
"media_removed": {
"alts": null,
"count": null,
"gone": null
},
"mimetype": "string",
"name": "string",
"origin_domain": "string",
"owner": {
"alias": null,
"avatar_urls": null,
"body": null,
"id": null,
"is_following_viewer": null,
"is_leading_viewer": null,
"name": null,
"type": null
},
"parent": {
"access": null,
"alias": null,
"author": null,
"authorized": null,
"body": null,
"content": null,
"cover_urls": null,
"created_at": null,
"files": null,
"id": null,
"is_liked_by_viewer": null,
"is_reposted_by_viewer": null,
"is_saved_by_viewer": null,
"link_preview": null,
"name": null,
"owner": null,
"portrait_urls": null,
"title": null,
"type": null,
"video": null
},
"pinned": false,
"portrait_urls": {
"key": null
},
"quote": {
"post": null,
"state": null
},
"quote_count": 1,
"quote_id": 42,
"repost_count": 1,
"root": {
"access": null,
"alias": null,
"author": null,
"authorized": null,
"body": null,
"content": null,
"cover_urls": null,
"created_at": null,
"files": null,
"id": null,
"is_liked_by_viewer": null,
"is_reposted_by_viewer": null,
"is_saved_by_viewer": null,
"link_preview": null,
"name": null,
"owner": null,
"portrait_urls": null,
"title": null,
"type": null,
"video": null
},
"root_id": 42,
"title": "string",
"type": "string",
"uri": "https://example.org/",
"verified": false,
"video": {
"duration": null,
"files": null,
"height": null,
"loop": null,
"poster": null,
"width": null
}
},
"references": [
{
"access": "string",
"alias": "string",
"author": null,
"authorized": null,
"avatar_urls": {
"key": null
},
"body": "string",
"comment_count": 1,
"content": "string",
"cover_urls": {
"key": null
},
"created_at": "2026-10-27T09:30:00Z",
"editor": null,
"event": null,
"feed": null,
"files": [
null
],
"follower_count": 1,
"id": 42,
"is_admined_by_viewer": false,
"is_blocked_by_viewer": false,
"is_following_viewer": false,
"is_leading_viewer": false,
"is_liked_by_viewer": false,
"is_reposted_by_viewer": false,
"is_saved_by_viewer": false,
"is_subscribed_by_viewer": false,
"language": "en",
"likes_count": 1,
"link_preview": null,
"media_removed": null,
"mimetype": "string",
"name": "string",
"origin_domain": "string",
"owner": null,
"parent": null,
"pinned": false,
"portrait_urls": {
"key": null
},
"quote": null,
"quote_count": 1,
"quote_id": 42,
"repost_count": 1,
"root": null,
"root_id": 42,
"title": "string",
"type": "string",
"uri": "https://example.org/",
"verified": false,
"video": null
}
],
"type": "string",
"updated_at": "2026-10-27T09:30:00Z"
}
A page of a custom feed
/feeds/{id}/itemsWhat it shows, as the viewer may see it, the latest first. Paged by what came before: the next page is asked for with the next_cursor of this one.
Who: Anyone, signed in or not
Parameters
idintegerrequiredin pathThe feed's id.cursorstringin queryWhere the page begins: thenext_cursorof the page before. The latest when left out. At most 100 characters.limitintegerin queryThe most to send: up to 40. At least 0. At most 40.near_latitudenumberin queryWhere the reader is, for a feed of what is near them: its area is around this point for this page, and the point is kept nowhere. Rounded to three decimals. Needed by such a feed, unread by any other.near_longitudenumberin query
Answers
- 200OKfeed.CustomFeedPage application/json
- 400the request is not well formed, or a value in it is not one it may be
- 404there is no such feed that the viewer may see
- 422
malformed: the cursor is not oneRefusal application/json
Request
curl "https://api.example.org/feeds/<id>/items"
const response = await fetch('https://api.example.org/feeds/<id>/items', {
method: 'GET',
});
const answer = await response.json();
import requests
response = requests.get(
"https://api.example.org/feeds/<id>/items",
)
answer = response.json()
Answer · 200
{
"data": [
{
"access": "string",
"alias": "string",
"author": null,
"authorized": null,
"avatar_urls": {
"key": null
},
"body": "string",
"comment_count": 1,
"content": "string",
"cover_urls": {
"key": null
},
"created_at": "2026-10-27T09:30:00Z",
"editor": null,
"event": null,
"feed": null,
"files": [
null
],
"follower_count": 1,
"id": 42,
"is_admined_by_viewer": false,
"is_blocked_by_viewer": false,
"is_following_viewer": false,
"is_leading_viewer": false,
"is_liked_by_viewer": false,
"is_reposted_by_viewer": false,
"is_saved_by_viewer": false,
"is_subscribed_by_viewer": false,
"language": "en",
"likes_count": 1,
"link_preview": null,
"media_removed": null,
"mimetype": "string",
"name": "string",
"origin_domain": "string",
"owner": null,
"parent": null,
"pinned": false,
"portrait_urls": {
"key": null
},
"quote": null,
"quote_count": 1,
"quote_id": 42,
"repost_count": 1,
"root": null,
"root_id": 42,
"title": "string",
"type": "string",
"uri": "https://example.org/",
"verified": false,
"video": null
}
],
"pagination": {
"has_more": false,
"limit": 1,
"next_cursor": "string"
}
}
Keep a feed on the viewer's home page
/feeds/{id}/pinWho: Somebody signed in
Parameters
idintegerrequiredin pathThe feed's id.
Answers
- 204done
- 400the request is not well formed, or a value in it is not one it may be
- 401no token, or one that has expired
- 404there is no such feed that the viewer may see
- 409
too_many_pinsRefusal application/json
Request
curl -X PUT "https://api.example.org/feeds/<id>/pin" \
-H "Authorization: Bearer $TOKEN"
const response = await fetch('https://api.example.org/feeds/<id>/pin', {
method: 'PUT',
headers: { Authorization: `Bearer ${token}` },
});
const answer = await response.json();
import requests
response = requests.put(
"https://api.example.org/feeds/<id>/pin",
headers={"Authorization": f"Bearer {token}"},
)
answer = response.json()
Take it off the viewer's home page
/feeds/{id}/pinWho: Somebody signed in
Parameters
idintegerrequiredin pathThe feed's id.
Answers
- 204done
- 400the request is not well formed, or a value in it is not one it may be
- 401no token, or one that has expired
- 404there is no such feed that the viewer may see
- 409
too_many_pinsRefusal application/json
Request
curl -X DELETE "https://api.example.org/feeds/<id>/pin" \
-H "Authorization: Bearer $TOKEN"
const response = await fetch('https://api.example.org/feeds/<id>/pin', {
method: 'DELETE',
headers: { Authorization: `Bearer ${token}` },
});
const answer = await response.json();
import requests
response = requests.delete(
"https://api.example.org/feeds/<id>/pin",
headers={"Authorization": f"Bearer {token}"},
)
answer = response.json()
A profile's posts, replies or reposts
/feeds/actor/{actor_id}/The ones the viewer may see, its pin first among its posts.
Who: Anyone, signed in or not
Parameters
actor_idintegerrequiredin pathThe profile's id.filterstringin queryWhich of the profile's lists: posts (the default), replies, reposts, or tagged, the photos and videos a person is in. One ofposts,replies,reposts,tagged.startintegerin queryHow many to pass over. At least 0.limitintegerin queryThe most to send. At least 0.20unless given.
Answers
- 200OKobject application/json
- 400the request is not well formed, or a value in it is not one it may be
- 401
members_only: replies are not part of a previewRefusal application/json - 403the viewer may not see the profile
- 404there is no such profile
Request
curl "https://api.example.org/feeds/actor/<actor_id>/"
const response = await fetch('https://api.example.org/feeds/actor/<actor_id>/', {
method: 'GET',
});
const answer = await response.json();
import requests
response = requests.get(
"https://api.example.org/feeds/actor/<actor_id>/",
)
answer = response.json()
Answer · 200
{
"data": [
{
"access": "string",
"alias": "string",
"author": {
"alias": null,
"avatar_urls": null,
"id": null,
"name": null,
"type": null
},
"authorized": {
"add_follower": null,
"administration": null,
"audiences": null,
"block_from_owner": null,
"comment": null,
"composers": null,
"delete": null,
"download": null,
"edit": null,
"hide": null,
"invite": null,
"like": null,
"pin": null,
"quote": null
},
"avatar_urls": {
"key": null
},
"body": "string",
"comment_count": 1,
"content": "string",
"cover_urls": {
"key": null
},
"created_at": "2026-10-27T09:30:00Z",
"editor": {
"alias": null,
"avatar_urls": null,
"id": null,
"name": null,
"type": null
},
"event": {
"address": null,
"cancelled_at": null,
"capacity": null,
"ends_at": null,
"going_count": null,
"has_address": null,
"has_online_url": null,
"host": null,
"is_full": null,
"maybe_count": null,
"online_url": null,
"open_to_host_followers": null,
"starts_at": null,
"state": null,
"timezone_name": null,
"viewer_rsvp": null
},
"feed": {
"definition": null,
"icon": null
},
"files": [
null
],
"follower_count": 1,
"id": 42,
"is_admined_by_viewer": false,
"is_blocked_by_viewer": false,
"is_following_viewer": false,
"is_leading_viewer": false,
"is_liked_by_viewer": false,
"is_reposted_by_viewer": false,
"is_saved_by_viewer": false,
"is_subscribed_by_viewer": false,
"language": "en",
"likes_count": 1,
"link_preview": {
"description": null,
"image": null,
"site_name": null,
"title": null,
"url": null
},
"media_removed": {
"alts": null,
"count": null,
"gone": null
},
"mimetype": "string",
"name": "string",
"origin_domain": "string",
"owner": {
"alias": null,
"avatar_urls": null,
"body": null,
"id": null,
"is_following_viewer": null,
"is_leading_viewer": null,
"name": null,
"type": null
},
"parent": {
"access": null,
"alias": null,
"author": null,
"authorized": null,
"body": null,
"content": null,
"cover_urls": null,
"created_at": null,
"files": null,
"id": null,
"is_liked_by_viewer": null,
"is_reposted_by_viewer": null,
"is_saved_by_viewer": null,
"link_preview": null,
"name": null,
"owner": null,
"portrait_urls": null,
"title": null,
"type": null,
"video": null
},
"pinned": false,
"portrait_urls": {
"key": null
},
"quote": {
"post": null,
"state": null
},
"quote_count": 1,
"quote_id": 42,
"repost_count": 1,
"root": {
"access": null,
"alias": null,
"author": null,
"authorized": null,
"body": null,
"content": null,
"cover_urls": null,
"created_at": null,
"files": null,
"id": null,
"is_liked_by_viewer": null,
"is_reposted_by_viewer": null,
"is_saved_by_viewer": null,
"link_preview": null,
"name": null,
"owner": null,
"portrait_urls": null,
"title": null,
"type": null,
"video": null
},
"root_id": 42,
"title": "string",
"type": "string",
"uri": "https://example.org/",
"verified": false,
"video": {
"duration": null,
"files": null,
"height": null,
"loop": null,
"poster": null,
"width": null
}
}
],
"pagination": {
"limit": 1,
"offset": 1,
"total": 1
}
}
Feeds people have shared
/feeds/discoverThe ones the viewer may see, the newest first. Paged by how many came before, with no total.
Who: Anyone, signed in or not
Parameters
qstringin queryPart of a name, to find a feed by. At most 100 characters.startintegerin queryHow many to pass over. At least 0.limitintegerin queryThe most to send: up to 40. At least 0. At most 40.
Answers
- 200OKfeed.DiscoverPage application/json
- 400the request is not well formed, or a value in it is not one it may be
Request
curl "https://api.example.org/feeds/discover"
const response = await fetch('https://api.example.org/feeds/discover', {
method: 'GET',
});
const answer = await response.json();
import requests
response = requests.get(
"https://api.example.org/feeds/discover",
)
answer = response.json()
Answer · 200
{
"data": [
{
"access": "string",
"authorized": null,
"body": "string",
"created_at": "2026-10-27T09:30:00Z",
"definition": null,
"icon": "string",
"id": 42,
"is_pinned": false,
"name": "string",
"owner": null,
"references": [
null
],
"type": "string",
"updated_at": "2026-10-27T09:30:00Z"
}
],
"pagination": {
"has_more": false,
"limit": 1,
"next_start": 1,
"start": 1
}
}
The home feed
/feeds/leaders/Posts from the profiles the viewer follows, the latest first. In order of time, not ranked: a ranked feed is a custom feed the viewer makes.
Who: Anyone, signed in or not
Parameters
include_repostsbooleanin queryReposts by the profiles the viewer follows as well.include_likedbooleanin queryWhat they liked as well.startintegerin queryHow many to pass over. At least 0.limitintegerin queryThe most to send. At least 0.20unless given.
Answers
- 200OKobject application/json
- 400the request is not well formed, or a value in it is not one it may be
Request
curl "https://api.example.org/feeds/leaders/"
const response = await fetch('https://api.example.org/feeds/leaders/', {
method: 'GET',
});
const answer = await response.json();
import requests
response = requests.get(
"https://api.example.org/feeds/leaders/",
)
answer = response.json()
Answer · 200
{
"data": [
{
"access": "string",
"alias": "string",
"author": {
"alias": null,
"avatar_urls": null,
"id": null,
"name": null,
"type": null
},
"authorized": {
"add_follower": null,
"administration": null,
"audiences": null,
"block_from_owner": null,
"comment": null,
"composers": null,
"delete": null,
"download": null,
"edit": null,
"hide": null,
"invite": null,
"like": null,
"pin": null,
"quote": null
},
"avatar_urls": {
"key": null
},
"body": "string",
"comment_count": 1,
"content": "string",
"cover_urls": {
"key": null
},
"created_at": "2026-10-27T09:30:00Z",
"editor": {
"alias": null,
"avatar_urls": null,
"id": null,
"name": null,
"type": null
},
"event": {
"address": null,
"cancelled_at": null,
"capacity": null,
"ends_at": null,
"going_count": null,
"has_address": null,
"has_online_url": null,
"host": null,
"is_full": null,
"maybe_count": null,
"online_url": null,
"open_to_host_followers": null,
"starts_at": null,
"state": null,
"timezone_name": null,
"viewer_rsvp": null
},
"feed": {
"definition": null,
"icon": null
},
"files": [
null
],
"follower_count": 1,
"id": 42,
"is_admined_by_viewer": false,
"is_blocked_by_viewer": false,
"is_following_viewer": false,
"is_leading_viewer": false,
"is_liked_by_viewer": false,
"is_reposted_by_viewer": false,
"is_saved_by_viewer": false,
"is_subscribed_by_viewer": false,
"language": "en",
"likes_count": 1,
"link_preview": {
"description": null,
"image": null,
"site_name": null,
"title": null,
"url": null
},
"media_removed": {
"alts": null,
"count": null,
"gone": null
},
"mimetype": "string",
"name": "string",
"origin_domain": "string",
"owner": {
"alias": null,
"avatar_urls": null,
"body": null,
"id": null,
"is_following_viewer": null,
"is_leading_viewer": null,
"name": null,
"type": null
},
"parent": {
"access": null,
"alias": null,
"author": null,
"authorized": null,
"body": null,
"content": null,
"cover_urls": null,
"created_at": null,
"files": null,
"id": null,
"is_liked_by_viewer": null,
"is_reposted_by_viewer": null,
"is_saved_by_viewer": null,
"link_preview": null,
"name": null,
"owner": null,
"portrait_urls": null,
"title": null,
"type": null,
"video": null
},
"pinned": false,
"portrait_urls": {
"key": null
},
"quote": {
"post": null,
"state": null
},
"quote_count": 1,
"quote_id": 42,
"repost_count": 1,
"root": {
"access": null,
"alias": null,
"author": null,
"authorized": null,
"body": null,
"content": null,
"cover_urls": null,
"created_at": null,
"files": null,
"id": null,
"is_liked_by_viewer": null,
"is_reposted_by_viewer": null,
"is_saved_by_viewer": null,
"link_preview": null,
"name": null,
"owner": null,
"portrait_urls": null,
"title": null,
"type": null,
"video": null
},
"root_id": 42,
"title": "string",
"type": "string",
"uri": "https://example.org/",
"verified": false,
"video": {
"duration": null,
"files": null,
"height": null,
"loop": null,
"poster": null,
"width": null
}
}
],
"pagination": {
"limit": 1,
"offset": 1,
"total": 1
}
}
The viewer's custom feeds
/feeds/mineWho: Somebody signed in
Answers
- 200OKobject application/json
- 401no token, or one that has expired
Request
curl "https://api.example.org/feeds/mine" \
-H "Authorization: Bearer $TOKEN"
const response = await fetch('https://api.example.org/feeds/mine', {
method: 'GET',
headers: { Authorization: `Bearer ${token}` },
});
const answer = await response.json();
import requests
response = requests.get(
"https://api.example.org/feeds/mine",
headers={"Authorization": f"Bearer {token}"},
)
answer = response.json()
Answer · 200
{
"data": [
{
"access": "string",
"authorized": {
"copy": null,
"delete": null,
"edit": null,
"pin": null
},
"body": "string",
"created_at": "2026-10-27T09:30:00Z",
"definition": null,
"icon": "string",
"id": 42,
"is_pinned": false,
"name": "string",
"owner": {
"access": null,
"alias": null,
"author": null,
"authorized": null,
"avatar_urls": null,
"body": null,
"comment_count": null,
"content": null,
"cover_urls": null,
"created_at": null,
"editor": null,
"event": null,
"feed": null,
"files": null,
"follower_count": null,
"id": null,
"is_admined_by_viewer": null,
"is_blocked_by_viewer": null,
"is_following_viewer": null,
"is_leading_viewer": null,
"is_liked_by_viewer": null,
"is_reposted_by_viewer": null,
"is_saved_by_viewer": null,
"is_subscribed_by_viewer": null,
"language": null,
"likes_count": null,
"link_preview": null,
"media_removed": null,
"mimetype": null,
"name": null,
"origin_domain": null,
"owner": null,
"parent": null,
"pinned": null,
"portrait_urls": null,
"quote": null,
"quote_count": null,
"quote_id": null,
"repost_count": null,
"root": null,
"root_id": null,
"title": null,
"type": null,
"uri": null,
"verified": null,
"video": null
},
"references": [
null
],
"type": "string",
"updated_at": "2026-10-27T09:30:00Z"
}
]
}
The feeds on the viewer's home page
/feeds/pinnedTheirs and other people's they keep there, in order.
Who: Somebody signed in
Answers
- 200OKobject application/json
- 401no token, or one that has expired
Request
curl "https://api.example.org/feeds/pinned" \
-H "Authorization: Bearer $TOKEN"
const response = await fetch('https://api.example.org/feeds/pinned', {
method: 'GET',
headers: { Authorization: `Bearer ${token}` },
});
const answer = await response.json();
import requests
response = requests.get(
"https://api.example.org/feeds/pinned",
headers={"Authorization": f"Bearer {token}"},
)
answer = response.json()
Answer · 200
{
"data": [
{
"access": "string",
"authorized": {
"copy": null,
"delete": null,
"edit": null,
"pin": null
},
"body": "string",
"created_at": "2026-10-27T09:30:00Z",
"definition": null,
"icon": "string",
"id": 42,
"is_pinned": false,
"name": "string",
"owner": {
"access": null,
"alias": null,
"author": null,
"authorized": null,
"avatar_urls": null,
"body": null,
"comment_count": null,
"content": null,
"cover_urls": null,
"created_at": null,
"editor": null,
"event": null,
"feed": null,
"files": null,
"follower_count": null,
"id": null,
"is_admined_by_viewer": null,
"is_blocked_by_viewer": null,
"is_following_viewer": null,
"is_leading_viewer": null,
"is_liked_by_viewer": null,
"is_reposted_by_viewer": null,
"is_saved_by_viewer": null,
"is_subscribed_by_viewer": null,
"language": null,
"likes_count": null,
"link_preview": null,
"media_removed": null,
"mimetype": null,
"name": null,
"origin_domain": null,
"owner": null,
"parent": null,
"pinned": null,
"portrait_urls": null,
"quote": null,
"quote_count": null,
"quote_id": null,
"repost_count": null,
"root": null,
"root_id": null,
"title": null,
"type": null,
"uri": null,
"verified": null,
"video": null
},
"references": [
null
],
"type": "string",
"updated_at": "2026-10-27T09:30:00Z"
}
]
}
Set the feeds on the viewer's home page
/feeds/pinsThe whole list, in order. Answers with it.
Who: Somebody signed in
Body application/json
idslist of integerThe feeds kept on the viewer's home page, in order: up to 10. At most 10 of them.
Answers
- 200OKobject application/json
- 400the request is not well formed, or a value in it is not one it may be
- 401no token, or one that has expired
- 422
too_many_pins; orfeed_not_found, one the viewer may not seeRefusal application/json
Request
curl -X PUT "https://api.example.org/feeds/pins" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"ids": [
1
]
}'
const response = await fetch('https://api.example.org/feeds/pins', {
method: 'PUT',
headers: { Authorization: `Bearer ${token}`, 'Content-Type': 'application/json' },
body: JSON.stringify({
"ids": [
1
]
}),
});
const answer = await response.json();
import requests
response = requests.put(
"https://api.example.org/feeds/pins",
headers={"Authorization": f"Bearer {token}"},
json={
"ids": [
1
]
},
)
answer = response.json()
Answer · 200
{
"data": [
{
"access": "string",
"authorized": {
"copy": null,
"delete": null,
"edit": null,
"pin": null
},
"body": "string",
"created_at": "2026-10-27T09:30:00Z",
"definition": null,
"icon": "string",
"id": 42,
"is_pinned": false,
"name": "string",
"owner": {
"access": null,
"alias": null,
"author": null,
"authorized": null,
"avatar_urls": null,
"body": null,
"comment_count": null,
"content": null,
"cover_urls": null,
"created_at": null,
"editor": null,
"event": null,
"feed": null,
"files": null,
"follower_count": null,
"id": null,
"is_admined_by_viewer": null,
"is_blocked_by_viewer": null,
"is_following_viewer": null,
"is_leading_viewer": null,
"is_liked_by_viewer": null,
"is_reposted_by_viewer": null,
"is_saved_by_viewer": null,
"is_subscribed_by_viewer": null,
"language": null,
"likes_count": null,
"link_preview": null,
"media_removed": null,
"mimetype": null,
"name": null,
"origin_domain": null,
"owner": null,
"parent": null,
"pinned": null,
"portrait_urls": null,
"quote": null,
"quote_count": null,
"quote_id": null,
"repost_count": null,
"root": null,
"root_id": null,
"title": null,
"type": null,
"uri": null,
"verified": null,
"video": null
},
"references": [
null
],
"type": "string",
"updated_at": "2026-10-27T09:30:00Z"
}
]
}
Try a definition
/feeds/previewThe first page of what a feed of this definition would show, before it is made.
Who: Somebody signed in, with media:write
Body application/json
definitionanythingWhat it would show, as feeds.md describes it.
Answers
- 200OKfeed.CustomFeedPage application/json
- 400the request is not well formed, or a value in it is not one it may be
- 401no token, or one that has expired
- 403the viewer may not do this
- 422why the definition was refused:
malformed,unknown_field,too_broad,too_many_actors,too_many_hashtags,too_many_keywords,too_many_locations,keyword_length,invalid_hashtag,unknown_media_type,unknown_actor_type,invalid_actor,invalid_location,invalid_language,invalid_near(an area's point or radius, 1 to 500 km),unknown_originorunknown_order; and, reading a feed of what is near its reader with nonear_latitudeandnear_longitude,location_needed;invalidfor a fieldRefusal application/json
Request
curl -X POST "https://api.example.org/feeds/preview" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"definition": null
}'
const response = await fetch('https://api.example.org/feeds/preview', {
method: 'POST',
headers: { Authorization: `Bearer ${token}`, 'Content-Type': 'application/json' },
body: JSON.stringify({
"definition": null
}),
});
const answer = await response.json();
import requests
response = requests.post(
"https://api.example.org/feeds/preview",
headers={"Authorization": f"Bearer {token}"},
json={
"definition": None
},
)
answer = response.json()
Answer · 200
{
"data": [
{
"access": "string",
"alias": "string",
"author": null,
"authorized": null,
"avatar_urls": {
"key": null
},
"body": "string",
"comment_count": 1,
"content": "string",
"cover_urls": {
"key": null
},
"created_at": "2026-10-27T09:30:00Z",
"editor": null,
"event": null,
"feed": null,
"files": [
null
],
"follower_count": 1,
"id": 42,
"is_admined_by_viewer": false,
"is_blocked_by_viewer": false,
"is_following_viewer": false,
"is_leading_viewer": false,
"is_liked_by_viewer": false,
"is_reposted_by_viewer": false,
"is_saved_by_viewer": false,
"is_subscribed_by_viewer": false,
"language": "en",
"likes_count": 1,
"link_preview": null,
"media_removed": null,
"mimetype": "string",
"name": "string",
"origin_domain": "string",
"owner": null,
"parent": null,
"pinned": false,
"portrait_urls": {
"key": null
},
"quote": null,
"quote_count": 1,
"quote_id": 42,
"repost_count": 1,
"root": null,
"root_id": 42,
"title": "string",
"type": "string",
"uri": "https://example.org/",
"verified": false,
"video": null
}
],
"pagination": {
"has_more": false,
"limit": 1,
"next_cursor": "string"
}
}
Who reposted a post
/reposts/{parent_id}/Who: Somebody signed in
Parameters
startintegerin queryHow many to pass over. At least 0.limitintegerin queryThe most to send. At least 0.20unless given.orderingstringin queryWhat they are ordered by. At most 15 characters. One ofupdated_at,created_at,enabled.created_atunless given.dirstringin queryWhich way the order runs. At most 4 characters. One ofasc,desc.descunless given.parent_idintegerrequiredin pathThe id of the post reposted.
Answers
- 200OKobject application/json
- 400the request is not well formed, or a value in it is not one it may be
- 401no token, or one that has expired
- 403the viewer may not see it
Request
curl "https://api.example.org/reposts/<parent_id>/" \
-H "Authorization: Bearer $TOKEN"
const response = await fetch('https://api.example.org/reposts/<parent_id>/', {
method: 'GET',
headers: { Authorization: `Bearer ${token}` },
});
const answer = await response.json();
import requests
response = requests.get(
"https://api.example.org/reposts/<parent_id>/",
headers={"Authorization": f"Bearer {token}"},
)
answer = response.json()
Answer · 200
{
"data": [
{
"access": "string",
"alias": "string",
"allow_download": false,
"allow_follow_request": false,
"archived_at": "2026-10-27T09:30:00Z",
"author": {
"alias": null,
"avatar_urls": null,
"id": null,
"name": null,
"type": null
},
"avatar_urls": {
"key": null
},
"body": "string",
"cover_urls": {
"key": null
},
"created_at": "2026-10-27T09:30:00Z",
"deleted_at": "2026-10-27T09:30:00Z",
"enabled": false,
"event": {
"address": null,
"cancelled_at": null,
"capacity": null,
"ends_at": null,
"going_count": null,
"has_address": null,
"has_online_url": null,
"host": null,
"is_full": null,
"maybe_count": null,
"online_url": null,
"open_to_host_followers": null,
"starts_at": null,
"state": null,
"timezone_name": null,
"viewer_rsvp": null
},
"featured_at": "2026-10-27T09:30:00Z",
"follower_count": 1,
"id": 42,
"is_admined_by_viewer": false,
"is_blocked_by_viewer": false,
"is_following_viewer": false,
"is_invited": false,
"is_leading_viewer": false,
"leader_count": 1,
"name": "string",
"origin_domain": "string",
"quote_policy": "string",
"show_reposts_on_profile": false,
"type": "string",
"uri": "https://example.org/",
"verified": false,
"website_url": "https://example.org/"
}
],
"pagination": {
"limit": 1,
"offset": 1,
"total": 1
}
}
Repost a post
/reposts/{parent_id}/Answers with the repost.
Who: Somebody signed in
Parameters
parent_idintegerrequiredin pathThe id of the post to repost.
Answers
- 201CreatedNodeItem application/json
- 400the request is not well formed, or a value in it is not one it may be
- 401no token, or one that has expired
- 403the viewer may not repost it
Request
curl -X POST "https://api.example.org/reposts/<parent_id>/" \
-H "Authorization: Bearer $TOKEN"
const response = await fetch('https://api.example.org/reposts/<parent_id>/', {
method: 'POST',
headers: { Authorization: `Bearer ${token}` },
});
const answer = await response.json();
import requests
response = requests.post(
"https://api.example.org/reposts/<parent_id>/",
headers={"Authorization": f"Bearer {token}"},
)
answer = response.json()
Answer · 201
{
"access": "string",
"alias": "string",
"author": {
"alias": "string",
"avatar_urls": {
"key": null
},
"id": 42,
"name": "string",
"type": "string"
},
"authorized": {
"add_follower": false,
"administration": false,
"audiences": [
"string"
],
"block_from_owner": false,
"comment": false,
"composers": [
"string"
],
"delete": false,
"download": false,
"edit": false,
"hide": false,
"invite": false,
"like": false,
"pin": false,
"quote": false
},
"avatar_urls": {
"key": {
"size": null,
"url": "https://example.org/"
}
},
"body": "string",
"comment_count": 1,
"content": "string",
"cover_urls": {
"key": {
"size": null,
"url": "https://example.org/"
}
},
"created_at": "2026-10-27T09:30:00Z",
"editor": {
"alias": "string",
"avatar_urls": {
"key": null
},
"id": 42,
"name": "string",
"type": "string"
},
"event": {
"address": {
"city": null,
"country": null,
"latitude": null,
"longitude": null,
"postal_code": null,
"state_province": null,
"street": null
},
"cancelled_at": "2026-10-27T09:30:00Z",
"capacity": 1,
"ends_at": "2026-10-27T09:30:00Z",
"going_count": 1,
"has_address": false,
"has_online_url": false,
"host": {
"alias": null,
"avatar_urls": null,
"id": null,
"name": null,
"type": null,
"verified": null
},
"is_full": false,
"maybe_count": 1,
"online_url": "https://example.org/",
"open_to_host_followers": false,
"starts_at": "2026-10-27T09:30:00Z",
"state": "string",
"timezone_name": "string",
"viewer_rsvp": "string"
},
"feed": {
"definition": null,
"icon": "string"
},
"files": [
{
"alt_text": "string",
"height": 1,
"id": "string",
"position": 1,
"urls": {
"key": null
},
"width": 1
}
],
"follower_count": 1,
"id": 42,
"is_admined_by_viewer": false,
"is_blocked_by_viewer": false,
"is_following_viewer": false,
"is_leading_viewer": false,
"is_liked_by_viewer": false,
"is_reposted_by_viewer": false,
"is_saved_by_viewer": false,
"is_subscribed_by_viewer": false,
"language": "en",
"likes_count": 1,
"link_preview": {
"description": "string",
"image": "string",
"site_name": "string",
"title": "string",
"url": "https://example.org/"
},
"media_removed": {
"alts": [
"string"
],
"count": 1,
"gone": false
},
"mimetype": "string",
"name": "string",
"origin_domain": "string",
"owner": {
"alias": "string",
"avatar_urls": {
"key": null
},
"body": "string",
"id": 42,
"is_following_viewer": false,
"is_leading_viewer": false,
"name": "string",
"type": "string"
},
"parent": {
"access": "string",
"alias": "string",
"author": {
"alias": null,
"avatar_urls": null,
"id": null,
"name": null,
"type": null
},
"authorized": {
"add_follower": null,
"administration": null,
"audiences": null,
"block_from_owner": null,
"comment": null,
"composers": null,
"delete": null,
"download": null,
"edit": null,
"hide": null,
"invite": null,
"like": null,
"pin": null,
"quote": null
},
"body": "string",
"content": "string",
"cover_urls": {
"key": null
},
"created_at": "2026-10-27T09:30:00Z",
"files": [
null
],
"id": 42,
"is_liked_by_viewer": false,
"is_reposted_by_viewer": false,
"is_saved_by_viewer": false,
"link_preview": {
"description": null,
"image": null,
"site_name": null,
"title": null,
"url": null
},
"name": "string",
"owner": {
"alias": null,
"avatar_urls": null,
"body": null,
"id": null,
"is_following_viewer": null,
"is_leading_viewer": null,
"name": null,
"type": null
},
"portrait_urls": {
"key": null
},
"title": "string",
"type": "string",
"video": {
"duration": null,
"files": null,
"height": null,
"loop": null,
"poster": null,
"width": null
}
},
"pinned": false,
"portrait_urls": {
"key": {
"size": null,
"url": "https://example.org/"
}
},
"quote": {
"post": {
"access": null,
"alias": null,
"author": null,
"authorized": null,
"body": null,
"content": null,
"cover_urls": null,
"created_at": null,
"files": null,
"id": null,
"is_liked_by_viewer": null,
"is_reposted_by_viewer": null,
"is_saved_by_viewer": null,
"link_preview": null,
"name": null,
"owner": null,
"portrait_urls": null,
"title": null,
"type": null,
"video": null
},
"state": "string"
},
"quote_count": 1,
"quote_id": 42,
"repost_count": 1,
"root": {
"access": "string",
"alias": "string",
"author": {
"alias": null,
"avatar_urls": null,
"id": null,
"name": null,
"type": null
},
"authorized": {
"add_follower": null,
"administration": null,
"audiences": null,
"block_from_owner": null,
"comment": null,
"composers": null,
"delete": null,
"download": null,
"edit": null,
"hide": null,
"invite": null,
"like": null,
"pin": null,
"quote": null
},
"body": "string",
"content": "string",
"cover_urls": {
"key": null
},
"created_at": "2026-10-27T09:30:00Z",
"files": [
null
],
"id": 42,
"is_liked_by_viewer": false,
"is_reposted_by_viewer": false,
"is_saved_by_viewer": false,
"link_preview": {
"description": null,
"image": null,
"site_name": null,
"title": null,
"url": null
},
"name": "string",
"owner": {
"alias": null,
"avatar_urls": null,
"body": null,
"id": null,
"is_following_viewer": null,
"is_leading_viewer": null,
"name": null,
"type": null
},
"portrait_urls": {
"key": null
},
"title": "string",
"type": "string",
"video": {
"duration": null,
"files": null,
"height": null,
"loop": null,
"poster": null,
"width": null
}
},
"root_id": 42,
"title": "string",
"type": "string",
"uri": "https://example.org/",
"verified": false,
"video": {
"duration": 1.5,
"files": [
null
],
"height": 1,
"loop": false,
"poster": "string",
"width": 1
}
}
Undo a repost
/reposts/{parent_id}/Who: Somebody signed in
Parameters
parent_idintegerrequiredin pathThe id of the post reposted.
Answers
- 200undone
- 400the request is not well formed, or a value in it is not one it may be
- 401no token, or one that has expired
- 403the viewer may not undo this repost
Request
curl -X DELETE "https://api.example.org/reposts/<parent_id>/" \
-H "Authorization: Bearer $TOKEN"
const response = await fetch('https://api.example.org/reposts/<parent_id>/', {
method: 'DELETE',
headers: { Authorization: `Bearer ${token}` },
});
const answer = await response.json();
import requests
response = requests.delete(
"https://api.example.org/reposts/<parent_id>/",
headers={"Authorization": f"Bearer {token}"},
)
answer = response.json()
Written by Claude, reviewed by Rastin Mehr · About this