# Search across public post, users, tags. No auth required Performs a search query across different content types with support for URL resolution, username lookups, and various filtering options Endpoint: GET /api/v1/search Version: 1.0 Security: ## Query parameters: - `actorType` (string,null) Actor Type, one of Person, Group, Service. Default is Person Enum: "Application", "Group", "Organization", "Person", "Service" - `fasp` (boolean) Search only in fasp providers - `faspHydrated` (boolean) Search only in fasp providers, returning hydrated results - `filter` (array,null) Only include specific types of results. Like posts, users, tags Enum: "users", "posts", "tags", "events", "groups" - `followStatus` (string) following/follower status. Default ACCEPTED Enum: "PENDING", "ACCEPTED", "REJECTED" - `followers` (boolean,null) Only include accounts that follows the user - `following` (boolean,null) Only include accounts that the user is following - `groupId` (string,null) Filter posts by groupId Example: "us_01hxcvk1hjexere4pvtrj0ymqq" - `lastId` (string,null) Get older records (records with IDs less than this value) Alias maxId/max_id Example: "us_01hxcvk1hjexere4pvtrj0ymqq" - `limit` (integer,null) - `offset` (integer,null) - `ownerId` (string,null) Filter posts by ownerId Example: "us_01hxcvk1hjexere4pvtrj0ymqq" - `ownerType` (string,null) Filter posts by ownerType Enum: "USER", "EVENT", "CATEGORY" - `q` (string,null) Search query - `resolve` (boolean) Attempt to resolve remote users (WebFinger lookup) - `sortBy` (string,null) - `sortOrder` (string,null) - `untilId` (string,null) Get newer records (records with IDs greater than this value) Alias minId/min_id Example: "us_01hxcvk1hjexere4pvtrj0ymqq" - `withComments` (boolean,null) Load post with comments. Default false - `withParent` (boolean,null) If comment, load it with direct parent (in originalPost field) - `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): - `users` (array, required) - `users.groupUserName` (string,null) Name of the channel inside a group - `users.id` (string, required) internal id of this user Example: "us_01hxcvk1hjexere4pvtrj0ymqq" - `users.username` (string, required) unique user name Example: "john_smith" - `users.domain` (string, required) user's domain, remote only, empty for local Example: "wlsly1.net" - `users.displayName` (string, required) full name of the user Example: "John Smith" - `users.summary` (string, required) User's summary or bio Example: "Pixels are my paint, code is my canvas, creativity is my brush." - `users.uri` (string, required) URI of this user Example: "https://wlsly1.net/users/john_smith" - `users.stats` (object, required) User stats - `users.stats.posts` (integer, required) number of posts - `users.stats.followers` (integer, required) number of followers - `users.stats.following` (integer, required) number of following - `users.stats.followingHidden` (boolean, required) privacy setting to hide followings - `users.stats.totalStorageBytes` (integer, required) total storage volume in bytes - `users.stats.comments` (integer, required) number of comments - `users.fields` (object, required) User fields - `users.avatar` (object,null) User's avatar - `users.avatar.uploadId` (string, required) Internal id Example: "us_01hxcvk1hjexere4pvtrj0ymqq" - `users.avatar.userId` (string, required) User id this upload belongs to Example: "us_01hxcvk1hjexere4pvtrj0ymqq" - `users.avatar.uploadType` (string, required) Type of the upload Enum: "VIDEO", "IMAGE", "AUDIO", "DOCUMENT", "OTHER" - `users.avatar.meta` (object, required) Meta data - `users.avatar.meta.blurhash` (string,null) - `users.avatar.meta.name` (string,null) - `users.avatar.meta.altText` (string,null) - `users.avatar.size` (integer, required) Size in bytes of all the files in this upload - `users.avatar.files` (array, required) List of all the files this upload has - `users.avatar.files.uri` (string,null, required) Full url of the file - `users.avatar.files.fileId` (string, required) File id Example: "us_01hxcvk1hjexere4pvtrj0ymqq" - `users.avatar.files.extension` (string, required) File extension Example: "mp4" - `users.avatar.files.original` (boolean, required) true if this file is original, false if it is a derivative - `users.avatar.files.meta` (object, required) File metadata. Contains optional values for width, height etc. - `users.avatar.files.meta.duration` (number,null) Video duration in seconds - `users.avatar.files.meta.width` (integer,null) Media width - `users.avatar.files.meta.height` (integer,null) Media height - `users.avatar.files.meta.codec` (string,null) Video codec - `users.avatar.files.meta.rotate` (integer,null) Rotation in degrees - `users.avatar.files.size` (integer, required) File size in bytes - `users.avatar.files.createdAt` (string, required) Example: "2022-03-10T16:15:50Z" - `users.avatar.files.updatedAt` (string, required) Example: "2022-03-10T16:15:50Z" - `users.avatar.files.type` (string, required) File type Enum: "VIDEO", "IMAGE", "AUDIO", "DOCUMENT", "OTHER" - `users.avatar.tags` (array, required) List of tags attached to upload Enum: "Post", "Avatar", "Header", "Album", "Emoji", "Event" - `users.avatar.error` (string,null) Upload processing error - `users.avatar.cached` (boolean) true if cached - `users.avatar.logs` (string,null) Logs - `users.avatar.remote` (boolean) true if this upload is remote - `users.header` (object,null) User's header - `users.deleted` (boolean,null) - `users.state` (string, required) User's moderation state Enum: "REGULAR", "SENSITIVE", "LIMITED", "SUSPENDED" - `users.relationship` (object,null) Relationship with this user - `users.relationship.following` (string,null) Does the viewer follow the target? Enum: "PENDING", "ACCEPTED", "REJECTED" - `users.relationship.followed` (string,null) Does the target follow the viewer? Enum: "PENDING", "ACCEPTED", "REJECTED" - `users.relationship.blocked` (boolean,null) Viewer blocked the target - `users.relationship.blockedBy` (boolean,null) Target blocked the viewer - `users.relationship.muted` (object,null) Viewer mutes the target - `users.relationship.muted.state` (boolean) - `users.relationship.muted.expiresAt` (string,null) Example: "2022-03-10T16:15:50Z" - `users.relationship.note` (string,null) Viewer's private note about the target - `users.emojis` (array,null) - `users.emojis.shortcode` (string, required) - `users.emojis.category` (string,null) - `users.emojis.url` (string, required) - `users.emojis.staticUrl` (string, required) - `users.emojis.visibleInPicker` (boolean) - `users.location` (object,null) User's location, geo and name - `users.location.geo` (object,null) Coordinates and other geo data - `users.location.geo.latitude` (number) - `users.location.geo.longitude` (number) - `users.location.geo.altitude` (number,null) - `users.location.geo.accuracy` (number,null) - `users.location.geo.verticalAccuracy` (number,null) - `users.location.geo.speed` (number,null) - `users.location.geo.bearing` (number,null) - `users.location.geo.timestamp` (integer,null) - `users.location.autoUpdate` (boolean) - `users.location.show` (boolean) - `users.timezone` (object,null) User's timezone - `users.timezone.ianaTimezone` (string,null) - `users.birthday` (object,null) User's birthday - `users.birthday.date` (string,null) Example: "2022-03-10T16:15:50Z" - `users.software` (string, required) Software platform type (wellesley, mastodon, threads.net) Example: "wellesley" - `users.channel` (boolean) is channel user - `users.groupId` (string,null) UUID with type prefix Example: "us_01hxcvk1hjexere4pvtrj0ymqq" - `users.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" - `users.groupMain` (boolean,null) - `users.groupDefault` (boolean,null) - `users.actorType` (string,null) Whether this user is a person, application or a service Enum: "Application", "Group", "Organization", "Person", "Service" - `posts` (array, required) - `posts.id` (string, required) internal post id Example: "us_01hxcvk1hjexere4pvtrj0ymqq" - `posts.uri` (string, required) unique post uri - `posts.text` (string, required) post text, raw or html depending on how it was requested - `posts.path` (array, required) replies path Example: ["us_01hxcvk1hjexere4pvtrj0ymqq"] - `posts.privacy` (string, required) post privacy level Enum: "PUBLIC", "UNLISTED", "PRIVATE", "DIRECT", "FOLLOW_POST" - `posts.kind` (string, required) Article or Note Enum: "Note", "Article" - `posts.software` (string, required) post software Example: "wellesley" - `posts.repostOf` (string,null) id of a post this one was reposted from Example: "us_01hxcvk1hjexere4pvtrj0ymqq" - `posts.ownerId` (string, required) UUID with type prefix Example: "us_01hxcvk1hjexere4pvtrj0ymqq" - `posts.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" - `posts.title` (string,null) - `posts.summary` (string,null, required) Subject or summary line, below which post content is collapsed until expanded. - `posts.tags` (array, required) List of tags - `posts.mentions` (array, required) List of mentions - `posts.stats` (object, required) Stats - `posts.stats.likes` (integer) - `posts.stats.reposts` (integer) - `posts.stats.quotes` (integer) - `posts.stats.comments` (integer) - `posts.stats.views` (integer) - `posts.stats.bookmarks` (integer) - `posts.stats.reactions` (object, required) - `posts.stats.watchTime` (integer,null) - `posts.stats.secondsToFirstAnswer` (integer,null) - `posts.stats.secondsToAccepted` (integer,null) - `posts.stats.lastActivity` (string, required) Example: "2022-03-10T16:15:50Z" - `posts.stats.lastViewTimestamp` (string, required) Example: "2022-03-10T16:15:50Z" - `posts.settings` (object, required) Settings - `posts.settings.commentsEnabled` (boolean) - `posts.settings.sensitive` (boolean) - `posts.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" - `posts.poll` (object,null) - `posts.poll.id` (string, required) Internal poll id Example: "us_01hxcvk1hjexere4pvtrj0ymqq" - `posts.poll.multiple` (boolean) - `posts.poll.votersCount` (integer) - `posts.poll.options` (array, required) - `posts.poll.options.votesCount` (integer) - `posts.poll.hideTotals` (boolean) - `posts.poll.ownVotes` (array,null) - `posts.card` (object,null) Preview card for any links in the post - `posts.card.url` (string,null, required) URL being referenced - `posts.card.title` (string,null) Title of the linked resource - `posts.card.description` (string,null) Description of the linked resource - `posts.card.icon` (string,null) Favicon URL - `posts.card.image` (string,null) Preview image URL - `posts.card.imageAlt` (string,null) Alt text for the preview image - `posts.card.publisher` (object,null) Information about the website/provider - `posts.card.publisher.logo` (string,null) - `posts.card.publisher.type` (string,null) - `posts.card.oembedHtml` (string,null) HTML snippet to embed the link (from oEmbed), e.g., an iframe - `posts.card.createdAt` (string, required) When the card data was fetched/created Example: "2022-03-10T16:15:50Z" - `posts.card.expiresAt` (string,null) When the card data should be considered stale Example: "2022-03-10T16:15:50Z" - `posts.mediaType` (string, required) Post media type. Default for Note is text/plain, for Article text/markdown Enum: "TEXT_PLAIN", "MARKDOWN" - `posts.translations` (object,null) - `posts.author` (object, required) One of account's users. Can be multiple per account - `posts.author.channel` (boolean) Whether this is a channel or a user - `posts.uploads` (array, required) - `posts.liked` (boolean,null) Whether the current user liked it or not - `posts.reposted` (boolean,null) Whether the current user reposted it or not - `posts.quoted` (boolean,null) Whether the current user quoted it or not - `posts.muted` (boolean,null) Whether the current user muted the author of the post - `posts.blocked` (boolean,null) Whether the current user blocked the author of the post - `posts.visible` (boolean,null) Whether the current user can see it or not (e.g. FOLLOWERS_ONLY - `posts.pinned` (boolean,null) Whether the current user pinned it or not - `posts.bookmarked` (boolean,null) Whether the current user bookmarked it or not - `posts.edited` (boolean,null) Whether the post was edited - `posts.replies` (array,null) - `posts.repostedBy` (array,null) List of users who reposted this post - `posts.repostedBy.id` (string, required) UUID with type prefix Example: "us_01hxcvk1hjexere4pvtrj0ymqq" - `posts.repostedBy.displayName` (string, required) - `posts.repostedBy.username` (string, required) - `posts.repostedBy.domain` (string, required) - `posts.originalPost` (object,null) Original of repost/quote. In WS context or /replies API could also be parent of a comment - `posts.votes` (object,null) Votes summary - `posts.votes.upvotes` (integer, required) upvotes count - `posts.votes.downvotes` (integer, required) downvotes count - `posts.votes.ownVote` (integer,null) current user's vote, if any - `posts.originalPath` (array,null) Original path when the pinned replied was copied Example: ["us_01hxcvk1hjexere4pvtrj0ymqq"] - `posts.remote` (boolean) - `posts.repostAny` (boolean) - `posts.repost` (boolean) - `posts.quote` (boolean) - `posts.own` (boolean) - `posts.replyTo` (string,null) UUID with type prefix Example: "us_01hxcvk1hjexere4pvtrj0ymqq" - `posts.conversationId` (string, required) UUID with type prefix Example: "us_01hxcvk1hjexere4pvtrj0ymqq" - `tags` (array, required) - `events` (array, required) - `events.id` (string, required) Internal event id Example: "us_01hxcvk1hjexere4pvtrj0ymqq" - `events.uri` (string, required) Unique event uri - `events.groupId` (string,null, required) Group id Example: "us_01hxcvk1hjexere4pvtrj0ymqq" - `events.name` (string, required) Event's name - `events.startTime` (string, required) Event's start time Example: "2022-03-10T16:15:50Z" - `events.endTime` (string,null) Event's end time Example: "2022-03-10T16:15:50Z" - `events.ianaTimeZone` (string,null) Event's IANA time zone - `events.timeZoneOffsetSeconds` (integer, required) Event's time zone offset (in seconds) - `events.description` (string,null) Event's Markdown description (absent for non-local events) - `events.descriptionHtml` (string,null) Event's HTML description - `events.url` (string,null) Event's virtual location URL - `events.addressId` (integer,null) Event's address id - `events.tags` (array,null) Event's tags - `events.mentions` (array,null) Event's mentions - `events.status` (string, required) Event status Enum: "CONFIRMED", "CANCELLED" - `events.attendeeStatus` (string,null) Viewer user's event attendance status Enum: "INVITED", "JOINED", "JOINED_TENTATIVELY", "REJECTED" - `events.commentCount` (integer,null) Event comment count - `events.privacy` (string, required) Privacy levels for posts: * PUBLIC - post is visible to anyone, including people who are not logged in and those who do not follow the user. It appears in the public timelines (home, local, and federated). * UNLISTED - post is visible to anyone who visits the user's profile, but it does not appear in public timelines. Only followers and those who visit the user's profile directly can see it. * PRIVATE - post is only visible to the user's followers. It does not appear in public timelines or on the user's profile for non-followers. * DIRECT - post is visible only to the mentioned users. It functions like a direct message and is not visible on public timelines, the user's profile, or to followers. * FOLLOW_POST - comment only. Follow parent post visibility Enum: "PUBLIC", "UNLISTED", "PRIVATE", "DIRECT", "FOLLOW_POST" - `events.translation` (object,null) Event translation - `events.translation.descriptionHtml` (string,null) - `events.deletedAt` (string,null) Example: "2022-03-10T16:15:50Z" - `events.organizer` (object, required) One of account's users. Can be multiple per account - `events.cover` (object,null) Uploaded file - `events.address` (object,null) Address variant - `events.address.formatted` (string, required) Formatted address Example: "Adriaen Van Ostadestraat 53, 4703 NT Roosendaal, Netherlands" - `events.address.name` (string,null) Name Example: "Casa Vacanze" - `events.address.country` (string,null) Country Example: "USA" - `events.address.countryCode` (string,null) Country two letter name Example: "us" - `events.address.region` (string,null) Region Example: "Massachusetts" - `events.address.regionCode` (string,null) Region Code Example: "MA" - `events.address.subRegion` (string,null) Sub-region Example: "Newton Heights" - `events.address.locality` (string,null) Locality Example: "Madrid" - `events.address.street` (string,null) Street Example: "Adriaen Van Ostadestraat" - `events.address.postalCode` (string,null) Address postal code Example: "4703 NT" - `events.address.houseNumber` (string,null) House number Example: "23" - `events.address.longitude` (number,null) Longitude Example: 4.437564 - `events.address.latitude` (number,null) Latitude Example: 51.534581 - `events.address.timeZone` (string,null) Time zone name Example: "Europe/Amsterdam" - `events.address.plusCode` (string,null) Short code Example: "9F36GCMQ+R2" - `events.address.serviceId` (string,null) Service ID Example: "geoapify" - `events.address.placeId` (string,null) Service place id - `groups` (array, required) - `groups.meta` (object, required) group metadata including color - `groups.meta.color` (string, required) Group color in HEX format - `groups.privacy` (string, required) who can access the group's content Enum: "PUBLIC", "PRIVATE" - `groups.visibility` (string, required) how discoverable the group is Enum: "VISIBLE", "UNLISTED", "HIDDEN" - `groups.joinMode` (string, required) how users can join the group Enum: "OPEN", "APPROVAL", "INVITE_ONLY" - `groups.location` (object,null) group's location - `groups.timezone` (object,null) group's timezone - `groups.groupId` (string, required) internal id of this group Example: "us_01hxcvk1hjexere4pvtrj0ymqq" - `groups.groupName` (string, required) unique group name - `groups.domain` (string, required) group's domain, remote only, empty for local - `groups.displayName` (string, required) full name of the group - `groups.summary` (string, required) Group description - `groups.uri` (string, required) URI of this group - `groups.publicKey` (string, required) Group's public key for ActivityPub - `groups.privateKey` (string,null) Group's private key for ActivityPub - `groups.forumId` (string,null) ID of the forum associated with this group Example: "us_01hxcvk1hjexere4pvtrj0ymqq" - `groups.stats` (object, required) Group statistics - `groups.fields` (object, required) Custom fields for the group - `groups.type` (string, required) the type of this group Enum: "CHANNEL", "INTEREST_GROUP", "ORGANIZATION" - `groups.membersUrl` (string, required) URL to group members - `groups.banner` (object,null) Group's header/banner upload - `groups.avatar` (object,null) Group's avatar - `groups.deletedAt` (string,null) Group deletion timestamp Example: "2022-03-10T16:15:50Z" - `groups.createdAt` (string, required) Group's creation timestamp Example: "2022-03-10T16:15:50Z" - `groups.updatedAt` (string, required) Group's last update timestamp Example: "2022-03-10T16:15:50Z" - `groups.membersCount` (integer) Cached count of active members in the group ## Response 400 fields (application/json): - `errorCode` (string, required) Error code - `message` (string, required) Error message - `docUrl` (string) Link to documentation