Eranol LogoEranol
BlogCommunityDocumentationPricingSign In

General

OverviewGet Started

MCP Connectors

ClaudeChatGPT
Instagram PublishInstagram Scheduled — CancelInstagram Scheduled — ListTikTokTikTok Scheduled — CancelTikTok Scheduled — ListTikTok StatusX PublishX Scheduled — CancelX Scheduled — ListYouTube PublishYouTube Scheduled — CancelYouTube Scheduled — List
Add IntroAdd OutroAudio to VideoBackground AudioCaptions ApiComposeConcatConvert a video file to MP4Convert Audio to Mp3Convert Audio to wavConvert to JPGConvert to WebMConvert to WebPDenoiseEnhanceExtract audio track from a videoExtract images from a videoGenerate a GIF from a videoHighlightsImage TestMergeNotifyOverlayProgress BarReframeRemove SilenceThumbnailTrimVerifyWatermarkZoom
DeleteImage StatusStatusFFmpeg Results

Need help?

Contact Support

YouTube Publish

POST

Upload and publish a video to YouTube on behalf of a connected eranol.com account.

Overview

Uploads and publishes a video to YouTube on behalf of a connected eranol.com account, using the YouTube Data API v3 resumable upload flow. Can be published immediately or scheduled for a future time.

Before this endpoint can be used, the target account must have connected YouTube via Dashboard → Social Media → Connect (OAuth 2.0, youtube.upload scope). Calls for an account with no active YouTube connection return a 400 error.

Note: Until the connected Google app passes verification for the youtube.upload scope, YouTube forces every uploaded video to private regardless of the privacy_status sent here.

Endpoint

POST https://eranol.com/api/v1/social/youtube/publish

Request body

FieldTypeRequiredNotes
video_urlstringYesVideo URL. Must be hosted on eranol.com or www.eranol.com — external URLs are rejected
titlestringYesUp to 100 characters
descriptionstringNoUp to 5000 characters
tagsstring[]NoUp to 30 tags
category_idstringNoYouTube category id. Defaults to 22 (People & Blogs)
privacy_statusstringYespublic, unlisted, or private
made_for_kidsbooleanNoRequired by law (COPPA) if the content is made for kids. Defaults to false
scheduled_forstringNoISO 8601 timestamp in the future — see Scheduling below

Scheduling

Pass scheduled_for as a future ISO 8601 timestamp to queue the post instead of publishing it right away. Scheduled posts:

  • Are charged credits immediately, at the time of scheduling (this guarantees funds are available when the post actually fires)
  • Return 202 Accepted instead of 200, with { success: true, scheduled: true, scheduled_post_id, scheduled_for } instead of the normal publish result
  • Are published automatically by a background dispatcher at the scheduled time, using the same publish logic as an immediate post
  • Can be listed and canceled — see the corresponding scheduled-posts endpoints for this platform

Example request

{
  "video_url": "https://www.eranol.com/uploads/video.mp4",
  "title": "My video title",
  "description": "Video description here",
  "tags": ["tutorial", "demo"],
  "category_id": "22",
  "privacy_status": "public",
  "made_for_kids": false
}

Example request — scheduled

{
  "video_url": "https://www.eranol.com/uploads/video.mp4",
  "title": "Coming soon",
  "privacy_status": "public",
  "scheduled_for": "2026-09-01T15:00:00Z"
}

Example response

{
  "success": true,
  "youtube_video_id": "dQw4w9WgXcQ",
  "watch_url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
  "log_id": "b7e1c2a4-..."
}

Example response — scheduled

{
  "success": true,
  "scheduled": true,
  "scheduled_post_id": "a1b2c3d4-...",
  "scheduled_for": "2026-09-01T15:00:00.000Z"
}

Errors

StatusMeaning
400Missing/invalid video_url, title, or privacy_status, video_url not hosted on eranol.com, invalid/past scheduled_for, or the account has no connected YouTube account
401Missing or invalid API key, or YouTube rejected the request — the connection's token may need to be refreshed by reconnecting via the dashboard
402Insufficient credits
502YouTube's API rejected the upload, or the source video couldn't be fetched