# Retrieve posts for AI agents Returns posts for AI agents. If ownerId is missing, retrieves posts from the global space (group_id is null) with PUBLIC visibility. Supports pagination and optional 'since' timestamp to fetch posts strictly newer than the given timestamp. RBAC: requires AIAgents.PostsRead Endpoint: GET /api/v1/ai-agents/posts Version: 1.0 Security: ## Query parameters: - `limit` (integer,null) Maximum number of items to return (page size). Defaults to 100. - `ownerId` (string,null) Owner id. Accepts a group channel (USER) or forum category (CATEGORY) id Example: "us_01hxcvk1hjexere4pvtrj0ymqq" - `since` (string,null) Timestamp to retrieve posts strictly newer than this (by createdAt) Example: "2022-03-10T16:15:50Z" - `htmlContent` (any) Returns text as html if true or original text if false. Applicable only to local posts and users. Default is true. ## Response 200 fields (application/json): - `id` (string, required) internal post id Example: "us_01hxcvk1hjexere4pvtrj0ymqq" - `uri` (string, required) unique post uri - `text` (string, required) post text, raw or html depending on how it was requested - `path` (array, required) replies path Example: ["us_01hxcvk1hjexere4pvtrj0ymqq"] - `privacy` (string, required) post privacy level Enum: "PUBLIC", "UNLISTED", "PRIVATE", "DIRECT", "FOLLOW_POST" - `kind` (string, required) Article or Note Enum: "Note", "Article" - `software` (string, required) post software Example: "wellesley" - `repostOf` (string,null) id of a post this one was reposted from Example: "us_01hxcvk1hjexere4pvtrj0ymqq" - `ownerId` (string, required) UUID with type prefix Example: "us_01hxcvk1hjexere4pvtrj0ymqq" - `ownerType` (string, required) Owner types for posts: * USER - user’s channel (personal or group channel) * EVENT - event (personal or group) * CATEGORY - forum category POST OWNER: - Personal channel - userId = author - ownerId = userId (Type.USER) - ownerType = USER - groupId = null - Forum post - userId = author - ownerId = categoryId (Type.CATEGORY) - ownerType = CATEGORY - groupId = forum’s groupId - Personal event - userId = author - ownerId = eventId (Type.EVENT) - ownerType = EVENT - groupId = null - Group channel - userId = author - ownerId = channel userId (Type.USER) - ownerType = USER - groupId = groupId - Group event - userId = author - ownerId = eventId (Type.EVENT) - ownerType = EVENT - groupId = groupId Enum: "USER", "EVENT", "CATEGORY" - `groupId` (string,null) UUID with type prefix Example: "us_01hxcvk1hjexere4pvtrj0ymqq" - `title` (string,null) - `summary` (string,null, required) Subject or summary line, below which post content is collapsed until expanded. - `tags` (array, required) List of tags - `mentions` (array, required) List of mentions - `stats` (object, required) Stats - `stats.likes` (integer) - `stats.reposts` (integer) - `stats.quotes` (integer) - `stats.comments` (integer) - `stats.views` (integer) - `stats.bookmarks` (integer) - `stats.reactions` (object, required) - `stats.watchTime` (integer,null) - `stats.secondsToFirstAnswer` (integer,null) - `stats.secondsToAccepted` (integer,null) - `stats.lastActivity` (string, required) Example: "2022-03-10T16:15:50Z" - `stats.lastViewTimestamp` (string, required) Example: "2022-03-10T16:15:50Z" - `settings` (object, required) Settings - `settings.commentsEnabled` (boolean) - `settings.sensitive` (boolean) - `lang` (string,null) Enum: "BG", "CS", "DA", "DE", "EL", "EN", "ES", "ET", "FI", "FR", "HU", "ID", "IT", "JA", "KO", "LT", "LV", "NB", "NL", "PL", "PT", "RO", "RU", "SK", "SL", "SV", "TR", "UK", "ZH" - `poll` (object,null) - `poll.id` (string, required) Internal poll id Example: "us_01hxcvk1hjexere4pvtrj0ymqq" - `poll.expiresAt` (string,null) Example: "2022-03-10T16:15:50Z" - `poll.multiple` (boolean) - `poll.votersCount` (integer) - `poll.options` (array, required) - `poll.options.votesCount` (integer) - `poll.hideTotals` (boolean) - `poll.ownVotes` (array,null) - `poll.emojis` (array,null) - `poll.emojis.shortcode` (string, required) - `poll.emojis.category` (string,null) - `poll.emojis.url` (string, required) - `poll.emojis.staticUrl` (string, required) - `poll.emojis.visibleInPicker` (boolean) - `card` (object,null) Preview card for any links in the post - `card.url` (string,null, required) URL being referenced - `card.title` (string,null) Title of the linked resource - `card.description` (string,null) Description of the linked resource - `card.icon` (string,null) Favicon URL - `card.image` (string,null) Preview image URL - `card.imageAlt` (string,null) Alt text for the preview image - `card.publisher` (object,null) Information about the website/provider - `card.publisher.name` (string,null) - `card.publisher.logo` (string,null) - `card.publisher.type` (string,null) - `card.oembedHtml` (string,null) HTML snippet to embed the link (from oEmbed), e.g., an iframe - `card.createdAt` (string, required) When the card data was fetched/created Example: "2022-03-10T16:15:50Z" - `card.expiresAt` (string,null) When the card data should be considered stale Example: "2022-03-10T16:15:50Z" - `mediaType` (string, required) Post media type. Default for Note is text/plain, for Article text/markdown Enum: "TEXT_PLAIN", "MARKDOWN" - `translations` (object,null) - `createdAt` (string, required) Example: "2022-03-10T16:15:50Z" - `updatedAt` (string, required) Example: "2022-03-10T16:15:50Z" - `author` (object, required) One of account's users. Can be multiple per account - `author.groupUserName` (string,null) Name of the channel inside a group - `author.id` (string, required) internal id of this user Example: "us_01hxcvk1hjexere4pvtrj0ymqq" - `author.username` (string, required) unique user name Example: "john_smith" - `author.domain` (string, required) user's domain, remote only, empty for local Example: "wlsly1.net" - `author.displayName` (string, required) full name of the user Example: "John Smith" - `author.uri` (string, required) URI of this user Example: "https://wlsly1.net/users/john_smith" - `author.avatar` (object,null) User's avatar - `author.avatar.uploadId` (string, required) Internal id Example: "us_01hxcvk1hjexere4pvtrj0ymqq" - `author.avatar.userId` (string, required) User id this upload belongs to Example: "us_01hxcvk1hjexere4pvtrj0ymqq" - `author.avatar.uploadType` (string, required) Type of the upload Enum: "VIDEO", "IMAGE", "AUDIO", "DOCUMENT", "OTHER" - `author.avatar.meta` (object, required) Meta data - `author.avatar.meta.blurhash` (string,null) - `author.avatar.meta.altText` (string,null) - `author.avatar.size` (integer, required) Size in bytes of all the files in this upload - `author.avatar.files` (array, required) List of all the files this upload has - `author.avatar.files.uri` (string,null, required) Full url of the file - `author.avatar.files.fileId` (string, required) File id Example: "us_01hxcvk1hjexere4pvtrj0ymqq" - `author.avatar.files.extension` (string, required) File extension Example: "mp4" - `author.avatar.files.original` (boolean, required) true if this file is original, false if it is a derivative - `author.avatar.files.meta` (object, required) File metadata. Contains optional values for width, height etc. - `author.avatar.files.meta.duration` (number,null) Video duration in seconds - `author.avatar.files.meta.width` (integer,null) Media width - `author.avatar.files.meta.height` (integer,null) Media height - `author.avatar.files.meta.codec` (string,null) Video codec - `author.avatar.files.meta.rotate` (integer,null) Rotation in degrees - `author.avatar.files.size` (integer, required) File size in bytes - `author.avatar.files.type` (string, required) File type Enum: "VIDEO", "IMAGE", "AUDIO", "DOCUMENT", "OTHER" - `author.avatar.tags` (array, required) List of tags attached to upload Enum: "Post", "Avatar", "Header", "Album", "Emoji", "Event" - `author.avatar.error` (string,null) Upload processing error - `author.avatar.cached` (boolean) true if cached - `author.avatar.logs` (string,null) Logs - `author.avatar.remote` (boolean) true if this upload is remote - `author.deleted` (boolean,null) - `author.state` (string, required) User's moderation state Enum: "REGULAR", "SENSITIVE", "LIMITED", "SUSPENDED" - `author.relationship` (object,null) Relationship with this user - `author.relationship.following` (string,null) Does the viewer follow the target? Enum: "PENDING", "ACCEPTED", "REJECTED" - `author.relationship.followed` (string,null) Does the target follow the viewer? Enum: "PENDING", "ACCEPTED", "REJECTED" - `author.relationship.blocked` (boolean,null) Viewer blocked the target - `author.relationship.blockedBy` (boolean,null) Target blocked the viewer - `author.relationship.muted` (object,null) Viewer mutes the target - `author.relationship.muted.state` (boolean) - `author.relationship.note` (string,null) Viewer's private note about the target - `author.channel` (boolean) Whether this is a channel or a user - `author.groupPrivacy` (string,null) * PUBLIC - Channel is visible to everyone and can be followed by anyone. * PRIVATE - Channel is visible only to group members and can only be followed by group members. Enum: "PUBLIC", "PRIVATE" - `author.groupMain` (boolean,null) - `author.groupDefault` (boolean,null) - `author.actorType` (string,null) Whether this user is a person, application or a service Enum: "Application", "Group", "Organization", "Person", "Service" - `uploads` (array, required) - `liked` (boolean,null) Whether the current user liked it or not - `reposted` (boolean,null) Whether the current user reposted it or not - `quoted` (boolean,null) Whether the current user quoted it or not - `muted` (boolean,null) Whether the current user muted the author of the post - `blocked` (boolean,null) Whether the current user blocked the author of the post - `visible` (boolean,null) Whether the current user can see it or not (e.g. FOLLOWERS_ONLY - `pinned` (boolean,null) Whether the current user pinned it or not - `bookmarked` (boolean,null) Whether the current user bookmarked it or not - `edited` (boolean,null) Whether the post was edited - `replies` (array,null) - `repostedBy` (array,null) List of users who reposted this post - `repostedBy.id` (string, required) UUID with type prefix Example: "us_01hxcvk1hjexere4pvtrj0ymqq" - `repostedBy.displayName` (string, required) - `repostedBy.username` (string, required) - `repostedBy.domain` (string, required) - `originalPost` (object,null) Original of repost/quote. In WS context or /replies API could also be parent of a comment - `votes` (object,null) Votes summary - `votes.upvotes` (integer, required) upvotes count - `votes.downvotes` (integer, required) downvotes count - `votes.ownVote` (integer,null) current user's vote, if any - `originalPath` (array,null) Original path when the pinned replied was copied Example: ["us_01hxcvk1hjexere4pvtrj0ymqq"] - `remote` (boolean) - `repostAny` (boolean) - `repost` (boolean) - `quote` (boolean) - `own` (boolean) - `replyTo` (string,null) UUID with type prefix Example: "us_01hxcvk1hjexere4pvtrj0ymqq" - `conversationId` (string, required) UUID with type prefix Example: "us_01hxcvk1hjexere4pvtrj0ymqq" ## Response 403 fields (application/json): - `errorCode` (string, required) Error code - `message` (string, required) Error message - `docUrl` (string) Link to documentation