Skip to main content

Overview

All user profiles are public. Profile endpoints return creator information, portfolio tabs, topic statistics, and curated content. Authenticated endpoints allow users to update their own profile.

Public Endpoints

Get Profile

GET /api/profile/{username}
Returns a user’s public profile. Response:
{
  "id": "uuid",
  "username": "johndoe",
  "bio": "Pickleball analyst and content creator",
  "avatar_url": "https://...",
  "banner_url": "https://...",
  "location": "Austin, TX",
  "twitter_url": "https://x.com/johndoe",
  "youtube_url": null,
  "favorite_teams": ["PPA Tour"],
  "primary_topic_name": "pickleball",
  "post_count": 45,
  "created_at": "2025-08-15T00:00:00Z"
}

Profile Overview

GET /api/profile/{username}/overview
Returns summary statistics for a creator’s profile page. Response:
{
  "total_influence": 1250,
  "index_count": 8,
  "top_topic_ranks": [
    { "topic": "ben-johns", "rank": 3 },
    { "topic": "pickleball", "rank": 12 }
  ]
}

Topic Stats

GET /api/profile/{username}/topic-stats
Returns the user’s statistics broken down by topic (post counts, engagement per topic).

Curations

GET /api/profile/{username}/curations
Returns content the user has curated (tagged canonical posts to topics).

Portfolio Tabs

GET /api/profile/{username}/portfolio-tabs
Returns the user’s portfolio tabs (pinned collections, timelines, etc.).

Top Creators

GET /api/profile/top/creators?limit=10
Returns top creators ranked by post count.
ParameterTypeDescription
limitintegerNumber of creators (5–50)

Creators List

GET /api/profile/creators?limit=20
Returns a list of creators with avatars for display in browse views.

Authenticated Endpoints

Update Profile

PUT /api/profile/me
Requires authentication.
Body:
FieldTypeDescription
usernamestringUpdate username
biostringProfile bio
avatar_urlstringAvatar image URL
banner_urlstringBanner image URL
locationstringLocation text
twitter_urlstringTwitter/X profile URL
youtube_urlstringYouTube channel URL
instagram_urlstringInstagram profile URL
favorite_teamsarrayFavorite teams list

Upload Avatar

POST /api/profile/me/avatar
Requires authentication.
Upload a new profile avatar. Accepts image file via multipart form data.

Set Primary Topic

PUT /api/profile/me/primary-topic
Requires authentication.
Sets the user’s primary topic affiliation. Body:
FieldTypeDescription
topic_namestringTopic name to set as primary

Portfolio Tab Management

POST /api/profile/me/portfolio-tabs           # Create tab
PUT  /api/profile/me/portfolio-tabs/reorder    # Reorder tabs
DELETE /api/profile/me/portfolio-tabs/{tab_id} # Delete tab
POST /api/profile/me/portfolio-tabs/{post_id}/pin    # Pin post
POST /api/profile/me/portfolio-tabs/{tab_id}/unpin   # Unpin tab
All require authentication.