Appearance
STEP 3 — CONNECT AUDIENCE
8. GET /onboarding/social/platforms
Get all available social platforms for connection. Requires authentication.
Request
http
GET /onboarding/social/platforms
Authorization: Bearer <token>Response 200 OK
json
{
"status": "success",
"data": {
"platforms": [
{
"id": "youtube",
"label": "YouTube",
"icon_url": "https://cdn.droptv.com/icons/youtube.svg",
"is_recommended": true,
"is_connected": false,
"connected_account": null,
"benefits": ["Import content", "Verify following", "Sync subscribers"]
},
{
"id": "instagram",
"label": "Instagram",
"icon_url": "https://cdn.droptv.com/icons/instagram.svg",
"is_recommended": false,
"is_connected": false,
"connected_account": null,
"benefits": ["Import audience", "Cross-promote"]
},
{
"id": "tiktok",
"label": "TikTok",
"icon_url": "https://cdn.droptv.com/icons/tiktok.svg",
"is_recommended": false,
"is_connected": false,
"connected_account": null,
"benefits": ["Import followers", "Cross-promote"]
},
{
"id": "facebook",
"label": "Facebook",
"icon_url": "https://cdn.droptv.com/icons/facebook.svg",
"is_recommended": false,
"is_connected": false,
"connected_account": null,
"benefits": ["Import audience", "Cross-promote"]
}
]
}
}9. POST /onboarding/social/connect
Initiate OAuth flow for a social platform. Returns OAuth redirect URL. Requires authentication.
Request Body
json
{
"platform": "youtube",
"redirect_uri": "https://drop.tv/onboarding/social/callback"
}Request Body Parameters
| Field | Type | Required | Description |
|---|---|---|---|
| platform | string | Yes | youtube, instagram, tiktok, facebook |
| redirect_uri | string | Yes | OAuth callback URL |
Response 200 OK
json
{
"status": "success",
"data": {
"platform": "youtube",
"oauth_url": "https://accounts.google.com/o/oauth2/v2/auth?client_id=...&scope=...&redirect_uri=...",
"state": "oauth_state_token_xyz",
"expires_in_seconds": 300
}
}10. POST /onboarding/social/callback
Handle OAuth callback after user authorizes social platform. Requires authentication.
Request Body
json
{
"platform": "youtube",
"code": "oauth_authorization_code_abc",
"state": "oauth_state_token_xyz"
}Request Body Parameters
| Field | Type | Required | Description |
|---|---|---|---|
| platform | string | Yes | Platform being connected |
| code | string | Yes | OAuth authorization code |
| state | string | Yes | State token for CSRF validation |
Response 200 OK
json
{
"status": "success",
"message": "YouTube connected successfully",
"data": {
"platform": "youtube",
"is_connected": true,
"connected_account": {
"account_id": "UCxxxxxxxxxxxxxxx",
"username": "ComedyKingOfficial",
"display_name": "Comedy King",
"profile_image_url": "https://yt3.ggpht.com/...",
"subscribers": 245000,
"subscribers_formatted": "245K",
"video_count": 312,
"verified": true
},
"onboarding": {
"current_step": 4,
"total_steps": 6,
"percent_complete": 40
}
}
}Errors
json
{
"status": "error",
"code": 401,
"message": "OAuth authorization failed or was denied by user"
}11. DELETE /onboarding/social/:platform
Disconnect a previously connected social platform. Requires authentication.
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| platform | string | Yes | youtube, instagram, tiktok, facebook |
Request
http
DELETE /onboarding/social/youtube
Authorization: Bearer <token>Response 200 OK
json
{
"status": "success",
"message": "YouTube disconnected successfully",
"data": {
"platform": "youtube",
"is_connected": false
}
}12. POST /onboarding/social/skip
Skip the social connection step entirely. Requires authentication.
Request
http
POST /onboarding/social/skip
Authorization: Bearer <token>Response 200 OK
json
{
"status": "success",
"message": "Social connection step skipped",
"data": {
"onboarding": {
"current_step": 4,
"total_steps": 6,
"percent_complete": 40
}
}
}