Skip to content

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

FieldTypeRequiredDescription
platformstringYesyoutube, instagram, tiktok, facebook
redirect_uristringYesOAuth 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

FieldTypeRequiredDescription
platformstringYesPlatform being connected
codestringYesOAuth authorization code
statestringYesState 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

ParameterTypeRequiredDescription
platformstringYesyoutube, 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
    }
  }
}