đ¤ Uploaders
Overview
The POST /api/uploaders endpoint returns profile details
for a content creator or studio. The app calls this when a user taps an
uploader name to view their profile page.
Request
POST /api/uploaders
At least one of uploaderId or uploaderName must be provided.
Request Parameters
| Field | Type | Required | Description |
|---|---|---|---|
uploaderId |
string |
â ī¸ One of | Internal uploader ID |
uploaderName |
string |
â ī¸ One of | Uploader display name |
query |
string |
âĒ | Current search query used to personalize "For You" content ranking |
Response
{
"id": "awesomeVids",
"name": "Awesome Vids",
"url": "https://www.example.com/@awesomeVids",
"channel": "my-channel",
"verified": true,
"videoCount": 342,
"totalViews": 14500000,
"channels": [
{
"channel": "my-channel",
"videoCount": 342,
"firstSeenAt": "2024-01-15T00:00:00",
"lastSeenAt": "2025-03-01T00:00:00"
}
],
"avatar": "https://example.com/avatar.jpg",
"description": "The best videos on the internet.",
"bio": "Videos are awesome.",
"videos": [
{
"id": "c85017ca87477168d648727753c4ded8",
"url": "https://www.example.com/watch?v=y0sF5xhGreA",
"title": "20 Minutes of Adorable Kittens",
"duration": 1200,
"channel": "my-channel",
"uploadedAt": "2025-01-03T10:15:54.000Z",
"uploader": "The Pet Collective",
"uploaderId": "abc123",
"thumb": "https://i.example.com/vi/y0sF5xhGreA/hqdefault.jpg",
"preview": null,
"views": 14622653,
"rating": 95,
"aspectRatio": 1.78
}
],
"tapes": [],
"playlists": [],
"layout": [
{ "type": "horizontal", "title": "For You", "videoIds": ["c85017ca87477168d648727753c4ded8"] },
{ "type": "videos", "title": null }
]
}
Field Reference
Uploader Object
| Field | Type | Description |
|---|---|---|
id |
string |
Unique uploader identifier |
name |
string |
Display name |
url |
string \| null |
Profile URL |
channel |
string \| null |
Primary source channel |
verified |
boolean |
Whether the uploader is verified |
videoCount |
number |
Total indexed videos |
totalViews |
number |
Aggregated view count |
channels |
ChannelStat[] \| null |
Per-channel video stats |
avatar |
string \| null |
Avatar image URL (canonical) |
description |
string \| null |
Short description |
bio |
string \| null |
Long-form biography |
videos |
VideoRef[] \| null |
Videos â present when profileContent is true |
tapes |
any[] \| null |
Short-form content â present when profileContent is true |
playlists |
any[] \| null |
Playlists â present when profileContent is true |
layout |
LayoutRow[] \| null |
Ordered profile page sections |
See JSON key names for camelCase vs snake_case and the legacy profile_picture_url avatar key.
ChannelStat Object
| Field | Type | Description |
|---|---|---|
channel |
string |
Source channel identifier |
videoCount |
number |
Videos seen on this channel |
firstSeenAt |
string \| null |
ISO timestamp of first appearance on this channel |
lastSeenAt |
string \| null |
ISO timestamp of last appearance on this channel |
VideoRef Object
| Field | Type | Description |
|---|---|---|
id |
string |
Video identifier |
url |
string |
Video source URL |
title |
string |
Video title |
duration |
number |
Duration in seconds |
channel |
string |
Source channel identifier |
uploadedAt |
string \| null |
ISO upload timestamp |
uploader |
string |
Uploader display name |
uploaderId |
string |
Uploader identifier |
thumb |
string |
Thumbnail URL |
preview |
string \| null |
Preview clip URL |
views |
number |
View count |
rating |
number |
Percent rating score |
aspectRatio |
number \| null |
Aspect ratio (e.g., 1.78 for 16:9) |
LayoutRow Object
Describes the ordered sections rendered on the profile page.
| Field | Type | Description |
|---|---|---|
type |
string |
"videos" (vertical list) or horizontal (carousel). Legacy horizontal_videos is accepted. |
title |
string \| null |
Section heading |
videoIds |
string[] |
Ordered video IDs â only for horizontal / legacy horizontal_videos. Snake_case video_ids is accepted when decoding. |
Error Responses
| Status | Condition |
|---|---|
400 |
Neither uploaderId nor uploaderName given |
404 |
No uploader matched the provided identifier |
500 |
Internal server error |