API Docs

Getting Started

BlueDino's API lets you post to Pinterest, TikTok, and YouTube programmatically. Authenticate with an API key, connect your accounts, and start posting.

1. Get an API key

Go to the Developer Dashboard and create an API key.

2. Connect your accounts

Connect Pinterest, TikTok, and/or YouTube from the dashboard.

3. Start posting

Use the endpoints below with your API key in the Authorization header.

Authentication

Include your API key in every request:

Authorization: Bearer bdsk_your_api_key_here

Pinterest

GET/api/v1/pinterest/boards

List all boards on the connected Pinterest account.

Example

curl https://yourdomain.com/api/v1/pinterest/boards \
  -H "Authorization: Bearer bdsk_your_key"

Response

{
  "boards": [
    { "id": "123456789", "name": "My Board", "privacy": "PUBLIC" }
  ]
}
POST/api/v1/pinterest/pins

Create and publish a pin to a board.

Body

{
  "board_id": "123456789",        // required
  "title": "My Pin Title",        // optional, max 100 chars
  "description": "Pin caption",   // optional, max 500 chars
  "link": "https://example.com",  // optional
  "image_url": "https://...",     // provide image_url OR image_base64
  "image_base64": "data:image/png;base64,..." // alternative to image_url
}

Example

curl -X POST https://yourdomain.com/api/v1/pinterest/pins \
  -H "Authorization: Bearer bdsk_your_key" \
  -H "Content-Type: application/json" \
  -d '{
    "board_id": "123456789",
    "title": "Summer Recipes",
    "description": "Fresh salad ideas for warm days",
    "image_url": "https://example.com/image.jpg"
  }'

Response

{
  "success": true,
  "pin_id": "987654321"
}
POST/api/v1/pinterest/schedule

Schedule a pin for future publishing.

Body

{
  "board_id": "123456789",        // required
  "title": "My Pin Title",        // optional, max 100 chars
  "description": "Pin caption",   // optional, max 500 chars
  "link": "https://example.com",  // optional
  "image_url": "https://...",     // provide image_url OR image_base64
  "image_base64": "data:image/png;base64,...",
  "scheduled_at": "2026-05-20T14:00:00Z" // required, ISO 8601, must be future
}

Example

curl -X POST https://yourdomain.com/api/v1/pinterest/schedule \
  -H "Authorization: Bearer bdsk_your_key" \
  -H "Content-Type: application/json" \
  -d '{
    "board_id": "123456789",
    "title": "Summer Recipe Ideas",
    "description": "Fresh salad recipes for warm days",
    "image_url": "https://example.com/image.jpg",
    "scheduled_at": "2026-05-20T14:00:00Z"
  }'

Response

{
  "success": true,
  "scheduled": {
    "id": "sched_123...",
    "status": "pending",
    "scheduled_at": "2026-05-20T14:00:00.000Z"
  }
}
GET/api/v1/pinterest/schedule

List all scheduled pins.

Example

curl https://yourdomain.com/api/v1/pinterest/schedule \
  -H "Authorization: Bearer bdsk_your_key"
DELETE/api/v1/pinterest/schedule

Cancel a scheduled pin.

Body

{ "id": "sched_123..." }
GET/api/v1/pinterest/trends

Get trending keywords on Pinterest. Returns up to 50 results for today's date.

Query Parameters

region       — Country code (default: "US")
trend_type   — "growing" | "monthly" | "weekly" | "daily" (default: "growing")
limit        — Number of results, max 50 (default: 10)
interests    — Filter by interest category (optional)
genders      — Filter by gender (optional)
ages         — Filter by age group (optional)
normalize_against_group — Compare relative volume between keywords (optional)

Example

curl "https://yourdomain.com/api/v1/pinterest/trends?region=US&trend_type=growing&limit=5" \
  -H "Authorization: Bearer bdsk_your_key"

Response

{
  "trends": [
    {
      "keyword": "summer nails",
      "pct_growth_wow": 30,
      "pct_growth_mom": 100,
      "pct_growth_yoy": 10,
      "time_series": {
        "2026-05-12": 87,
        "2026-05-19": 100
      }
    }
  ]
}
GET/api/v1/pinterest/analytics

Get Pinterest account analytics for a date range.

Query Parameters

start_date   — YYYY-MM-DD (default: 30 days ago)
end_date     — YYYY-MM-DD (default: today)

Example

curl "https://yourdomain.com/api/v1/pinterest/analytics?start_date=2026-04-19&end_date=2026-05-19" \
  -H "Authorization: Bearer bdsk_your_key"

Response

{
  "totals": {
    "IMPRESSION": 12450,
    "PIN_CLICK": 382,
    "SAVE": 91,
    "OUTBOUND_CLICK": 44,
    "ENGAGEMENT": 617
  },
  "daily": {
    "2026-05-18": {
      "IMPRESSION": 420,
      "PIN_CLICK": 12,
      "SAVE": 3,
      "OUTBOUND_CLICK": 1,
      "ENGAGEMENT": 19
    }
  },
  "start_date": "2026-04-19",
  "end_date": "2026-05-19"
}

TikTok

POST/api/v1/tiktok/post

Post a photo carousel to TikTok.

Body

{
  "caption": "Check this out!",           // required
  "images": ["data:image/png;base64,..."], // required, 1-5 base64 images
  "privacy_level": "PUBLIC_TO_EVERYONE"   // optional, default SELF_ONLY
}

Privacy options

PUBLIC_TO_EVERYONE, MUTUAL_FOLLOW_FRIENDS, FOLLOWER_OF_CREATOR, SELF_ONLY

YouTube

POST/api/v1/youtube/post

Upload a video to YouTube.

Body

{
  "video_url": "https://...",        // required, URL to video file
  "title": "My Video",              // required
  "description": "Video description", // optional
  "tags": ["tag1", "tag2"],          // optional
  "privacy_status": "private"        // optional: public, unlisted, private
}
GET/api/v1/youtube/analytics

Get YouTube channel analytics for a date range.

Query Parameters

start_date   — YYYY-MM-DD (default: 28 days ago)
end_date     — YYYY-MM-DD (default: today)

Example

curl "https://yourdomain.com/api/v1/youtube/analytics?start_date=2026-04-21&end_date=2026-05-19" \
  -H "Authorization: Bearer bdsk_your_key"

Response

{
  "totals": {
    "views": 8421,
    "estimated_minutes_watched": 16930,
    "average_view_duration": 118.42,
    "likes": 264,
    "subscribers_gained": 38
  },
  "daily": [
    {
      "date": "2026-05-18",
      "views": 311,
      "estimated_minutes_watched": 602,
      "average_view_duration": 116,
      "likes": 9,
      "subscribers_gained": 2
    }
  ],
  "start_date": "2026-04-21",
  "end_date": "2026-05-19"
}

Errors

StatusMeaning
401Invalid or missing API key
400Bad request (missing required fields)
403Platform not connected
500Server error