Skip to main content
GET
/
:projectId
/
api
/
v7
/
entities
Fetch Many Entities
curl --request GET \
  --url https://api.replyke.com/api/v6/:projectId/api/v7/entities
Returns a paginated list of entities for the project. Supports rich filtering by source, space, user, keywords, metadata, title, content, location, and time. Excludes drafts — use Fetch Drafts for those.

Query Parameters

Pagination

page
number
default:"1"
Page number (1-indexed).
limit
number
default:"10"
Number of entities per page. Maximum 100.

Sorting

sortBy
string
default:"new"
Sort algorithm. One of:
  • new — chronological (newest first)
  • top — by reaction count (use sortByReaction to specify which type)
  • hot — by computed engagement score (decays over time)
  • controversial — high total votes with close up/down split
  • metadata.<property> — sort by a metadata field (e.g. metadata.memberCount)
sortDir
string
default:"DESC"
Sort direction. ASC or DESC.
sortType
string
default:"auto"
When using sortBy=metadata.*, the type of the metadata field. One of auto, numeric, text, boolean, timestamp. auto infers the type at query time.
sortByReaction
string
default:"upvote"
When sortBy=top, which reaction type to rank by. One of upvote, downvote, like, love, wow, sad, angry, funny.

Filtering

timeFrame
string
Restrict to entities created within the last period. One of hour, day, week, month, year.
sourceId
string
Filter by sourceId. Pass "null" to return entities with no sourceId.
spaceId
string
Filter by space ID.
userId
string
Filter by the author’s user ID. When this matches the authenticated user’s ID, moderation-removed entities are also included (author can see their own removed posts).
followedOnly
string
When "true", only returns entities from users the authenticated user follows. Requires authentication.
keywordsFilters
object
Filter by keywords. Pass as a JSON string or bracket-notation query params:
{ "includes": ["react", "typescript"], "doesNotInclude": ["vue"] }
titleFilters
object
Filter by title content:
{
  "hasTitle": "true",
  "includes": "tutorial",
  "doesNotInclude": "beginner"
}
  • hasTitle: "true" or "false" — filter for presence/absence of a title
  • includes: substring(s) to match (case-insensitive)
  • doesNotInclude: substring(s) to exclude
contentFilters
object
Filter by content text. Same structure as titleFilters (hasContent, includes, doesNotInclude).
attachmentsFilters
object
Filter by attachment presence:
{ "hasAttachments": "true" }
locationFilters
object
Filter to entities within a radius of a point:
{ "latitude": "40.7128", "longitude": "-74.0060", "radius": "5000" }
radius is in meters.
metadataFilters
object
Filter by metadata values. Supports complex conditions:
{
  "includes": { "status": "published" },
  "includesAny": [{ "type": "video" }, { "type": "image" }],
  "doesNotInclude": { "hidden": true },
  "exists": ["category"],
  "doesNotExist": ["archivedAt"]
}
  • includes — all key/value pairs must match (AND)
  • includesAny — at least one object must match (OR)
  • doesNotInclude — none of these key/value pairs may match
  • exists — keys that must be present
  • doesNotExist — keys that must be absent

Optional Associations

include
string
Comma-separated list of associations to include in each entity:
  • user — the author’s user profile
  • space — the space the entity belongs to
  • topComment — the highest-voted comment
  • saved — whether the authenticated user has saved this entity
  • files — uploaded file/image attachments

Response

Returns a paginated response object:
{
  "data": [ ...Entity[] ],
  "pagination": {
    "page": 1,
    "limit": 10,
    "total": 42,
    "totalPages": 5,
    "hasMore": true
  }
}
Each item in data is an Entity object. File URLs are signed and ready to use.
Viewing scores (hot sort) are updated asynchronously after each fetch. Scores use a configurable half-life that can be set per project in your project settings.