# Blogger API Reference

All endpoints require a valid JWT. Role requirements vary (viewer/editor/admin/owner).


# Add Blogger

POST /blogger/add

Add a new social media account to tracking. Fetches the channel profile from the platform API.

Request

{
  "username": "mkbhd",
  "platform": "YouTube",
  "initial_videos_count": 20,
  "daily_videos_count": 5,
  "campaign": "Q1 Campaign",
  "tag_ids": ["tag-uuid-1"]
}

Response

{
  "success": true,
  "blogger": {
    "id": "uuid",
    "username": "mkbhd",
    "platform": "YouTube",
    "channel_name": "Marques Brownlee",
    "number_of_subscribers": 18500000
  },
  "tracking_id": "uuid"
}

# Add From Tracking

POST /blogger/add-from-tracking

Add an existing blogger (already tracked elsewhere in org) without a fresh platform API call.

Request

{
  "blogger_id": "uuid",
  "initial_videos_count": 10,
  "daily_videos_count": 3
}

# List Bloggers

GET /blogger/list

Returns all tracked bloggers for the organization with stats summary.


# Toggle Tracking

POST /blogger/toggle

Pause or resume tracking for a blogger.

Request

{
  "tracking_id": "uuid",
  "is_active": false
}

# Set Tags

POST /blogger/set-tags

Replace all tags on a blogger. Database triggers automatically propagate changes to all videos.

Request

{
  "tracking_id": "uuid",
  "tag_ids": ["tag-uuid-1", "tag-uuid-2"]
}

# Set Campaign

POST /blogger/set-campaign

Assign a campaign to a blogger. New videos from this blogger will automatically get the campaign tag via BEFORE INSERT trigger.

Request

{
  "tracking_id": "uuid",
  "campaign": "Summer 2026"
}

# Set Budget Per Video

POST /blogger/set-budget-per-video

Request

{
  "tracking_id": "uuid",
  "budget_per_video": 5000
}

# Add to Creator Profile

POST /blogger/add-to-creator

Add a tracked blogger account to an existing creator profile.

Request

{
  "creator_id": "uuid",
  "blogger_id": "uuid"
}

# Merge into Creator

POST /blogger/merge

Create a new creator profile from one or more blogger accounts.


# Delete Blogger

POST /blogger/delete — removes tracking record, keeps video data

POST /blogger/delete-with-videos — removes tracking record and all associated videos


# Re-fetch Initial Videos

POST /blogger/fetch-initial-videos

Re-triggers the initial video fetch for a blogger. Useful if the initial fetch failed.

Request

{
  "tracking_id": "uuid"
}