Skip to main content
GET
/
api
/
community
Get Community Feed
curl --request GET \
  --url https://api.example.com/api/community
{
  "items": [
    {
      "kind": "<string>",
      "id": 123,
      "title": "<string>",
      "thumbnail": {},
      "subreddits": [
        "<string>"
      ],
      "categoryId": {},
      "categorySlug": {},
      "isManualMode": true,
      "isImported": true,
      "likeCount": 123,
      "isLikedByUser": true,
      "isHidden": {},
      "createdAt": "<string>",
      "user": {},
      "originalName": "<string>",
      "fileUrl": "<string>",
      "source": "<string>",
      "caption": {},
      "characterName": {}
    }
  ],
  "total": 123,
  "page": 123,
  "pageSize": 123,
  "totalPages": 123
}

Overview

The Community Feed endpoint returns a paginated, filterable list of community-shared content, including both sessions and individual media items. Results can be filtered by content type, creator, subreddit, category, tags, and search terms.

Authentication

This endpoint requires authentication. Include a valid session cookie or authentication header.

Query Parameters

contentType
string
default:"all"
Filter by content type:
  • all - Both sessions and media
  • sessions - Only session snapshots
  • captions - Only smart caption media
  • babecuts - Only babecock media
  • hypnococks - Only hypnococks media
  • betacensors - Only beta censor media
sort
string
default:"new"
Sort order:
  • new - Most recent first
  • hot - Engagement-weighted recency (combines likes and recency)
  • top - Highest likes first
Search across titles, captions, creator names, and filenames
creator
string
Filter by creator name or email (partial match)
creatorId
string
Filter by exact creator user ID
subreddit
string
Filter sessions by subreddit name (partial match)
character
string
Filter media by character name (partial match)
categoryId
number
Filter by category ID
categorySlug
string
Filter by category slug
tags
string
Comma-separated list of tag slugs to filter by Example: joi,femdom,hypno
tagMode
string
default:"or"
Tag matching mode:
  • or - Match any of the specified tags
  • and - Match all specified tags
page
number
default:"1"
Page number (1-indexed)
pageSize
number
default:"20"
Number of items per page (1-100)

Response

items
array
Array of community content items (sessions and media)
total
number
Total number of items matching the filter criteria
page
number
Current page number
pageSize
number
Items per page
totalPages
number
Total number of pages

Examples

Get Recent Sessions

curl -X GET "https://app.joip.io/api/community?contentType=sessions&sort=new&page=1&pageSize=20" \
  -H "Cookie: session=..." \
  -H "Accept: application/json"

Search for Content

curl -X GET "https://app.joip.io/api/community?search=femdom&contentType=all" \
  -H "Cookie: session=..." \
  -H "Accept: application/json"

Filter by Creator and Category

curl -X GET "https://app.joip.io/api/community?creator=username&categorySlug=joi&sort=hot" \
  -H "Cookie: session=..." \
  -H "Accept: application/json"

Filter by Multiple Tags (AND mode)

curl -X GET "https://app.joip.io/api/community?tags=joi,femdom,hypno&tagMode=and" \
  -H "Cookie: session=..." \
  -H "Accept: application/json"

Get Top Babecock Media

curl -X GET "https://app.joip.io/api/community?contentType=babecuts&sort=top&pageSize=50" \
  -H "Cookie: session=..." \
  -H "Accept: application/json"

Response Example

{
  "items": [
    {
      "kind": "session",
      "id": 123,
      "title": "Hypno Compilation",
      "thumbnail": "https://example.com/thumb.jpg",
      "subreddits": ["hypnohub", "femdom"],
      "categoryId": 5,
      "categorySlug": "hypno",
      "isManualMode": false,
      "isImported": false,
      "likeCount": 42,
      "isLikedByUser": true,
      "createdAt": "2025-03-01T12:00:00.000Z",
      "user": {
        "id": "user123",
        "firstName": "Jane",
        "lastName": "Doe",
        "email": "[email protected]",
        "profileImageUrl": "https://example.com/profile.jpg",
        "role": "user"
      }
    },
    {
      "kind": "media",
      "id": 456,
      "originalName": "caption_001.jpg",
      "fileUrl": "https://storage.example.com/media.jpg",
      "source": "smart-caption",
      "caption": "This is a sample caption",
      "characterName": null,
      "likeCount": 15,
      "isLikedByUser": false,
      "createdAt": "2025-03-01T11:30:00.000Z",
      "user": {
        "id": "user456",
        "firstName": "John",
        "lastName": "Smith",
        "email": "[email protected]",
        "profileImageUrl": null,
        "role": "user"
      }
    }
  ],
  "total": 150,
  "page": 1,
  "pageSize": 20,
  "totalPages": 8
}

Notes

  • The hot sort combines likes and recency using the formula: (likes + 1) / (age_in_hours + 2)^1.5
  • When contentType=all, results merge sessions and media, sorted by createdAt
  • Tag filtering applies separately to sessions and media, then merges results
  • Admin users can see isHidden content; non-admins see only non-hidden items
  • Character filtering only applies to media items
  • Subreddit filtering only applies to sessions

Build docs developers (and LLMs) love