Skip to content

YouTube

YouTube uses a dedicated Google OAuth connection for channel uploads.

Connect

Add this callback to the Google OAuth Web application:

text
https://auth.genium.one/callback/youtube

Create a one-time connection URL:

bash
curl -X POST https://auth.genium.one/api/social/connect-ticket \
  -H "Authorization: Bearer $USER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"provider":"youtube"}'

Open the returned connect_url, then list connected channels:

bash
curl https://auth.genium.one/api/youtube/channels \
  -H "Authorization: Bearer $USER_API_KEY"

Upload a local video

privacy_status accepts private, unlisted, or public. Missing or invalid values default to private.

bash
curl -X POST https://auth.genium.one/api/youtube/videos \
  -H "Authorization: Bearer $USER_API_KEY" \
  -F "video=@video.mp4;type=video/mp4" \
  -F "title=Video title" \
  -F "description=Video description #hashtag" \
  -F "privacy_status=private"

Reuse R2 media

bash
curl -X POST https://auth.genium.one/api/youtube/videos \
  -H "Authorization: Bearer $USER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"media_key":"videos/VIDEO_KEY","title":"Video title","description":"Video description","privacy_status":"unlisted"}'

When media_key is used, Genium keeps the R2 object so another provider can reuse it. Local multipart uploads keep temporary-media cleanup behavior.

Status

bash
curl "https://auth.genium.one/api/youtube/status?post_id=POST_ID" \
  -H "Authorization: Bearer $USER_API_KEY"

Poll until PUBLISH_COMPLETE. Upload and status responses include a YouTube permalink when the video ID is available.

Genium Social Hub