YouTube

YouTube is fully supported in Outstand through the Bring Your Own Key (BYOK) model. This allows you to use your own Google Cloud credentials to connect your YouTube channel and manage your YouTube content through Outstand's unified social media API.

Prerequisites

Before you begin, ensure you have:

  • A YouTube channel (personal or brand account)
  • A Google Cloud Platform account
  • Access to Google Cloud Console
  • Understanding of OAuth 2.0 flows

Note: You'll need admin access to the YouTube channel you want to connect. Brand accounts require appropriate permissions.

Step 1: Create a Google Cloud Project

  1. Go to Google Cloud Console
  2. Click on the project dropdown at the top
  3. Click New Project
  4. Enter a project name (e.g., "Outstand YouTube Integration")
  5. Click Create
  6. Wait for the project to be created and select it from the dropdown

Step 2: Enable YouTube Data API v3

  1. In your Google Cloud project, navigate to APIs & ServicesLibrary
  2. Search for "YouTube Data API v3"
  3. Click on YouTube Data API v3 from the results
  4. Click Enable

Step 3: Create OAuth 2.0 Credentials

  1. Navigate to APIs & ServicesCredentials
  2. Click Create CredentialsOAuth client ID
  3. If prompted, configure the OAuth consent screen first:
    • Choose External (unless you have a Google Workspace account)
    • Fill in the required information:
      • App name: Your application name (e.g., "Outstand Social Media Manager")
      • User support email: Your support email
      • Developer contact information: Your email
    • Click Save and Continue
    • Add scopes (optional for now, we'll add them in the API)
    • Add test users if needed (for testing before app verification)
    • Click Save and Continue through the remaining steps
  4. Back in the Credentials page, click Create CredentialsOAuth client ID
  5. Select Web application as the application type
  6. Configure the OAuth client:
    • Name: Outstand YouTube Integration (or your preferred name)
    • Authorized redirect URIs: Add your Outstand callback URL:
      • Production and development: https://www.outstand.so/app/api/socials/youtube/callback
  7. Click Create
  8. You'll see a dialog with your credentials:
    • Client ID: This is your OAuth Client ID (referred to as "client_key" in the API)
    • Client Secret: This is your OAuth Client Secret (referred to as "client_secret" in the API)
  9. Copy both values immediately and store them securely

Security Note: The Client Secret is sensitive information. Save it in a secure location immediately. You won't be able to view it again after closing this dialog (though you can generate a new one).

The YouTube integration requires the following OAuth scopes:

  • https://www.googleapis.com/auth/youtube.upload - Upload videos to YouTube
  • https://www.googleapis.com/auth/youtube - Manage your YouTube account
  • https://www.googleapis.com/auth/youtube.readonly - View your YouTube account

These scopes are automatically requested during the OAuth flow. Ensure your OAuth consent screen is configured to request these scopes.

Step 5: Add Credentials to Outstand

Once you have your Client ID and Client Secret, you can add them to Outstand:

Method 1: Using the Dashboard

  1. Log in to Outstand Dashboard
  2. Navigate to SettingsSocial Networks
  3. Select YouTube from the dropdown
  4. Enter your Client ID in the "Client ID / API Key" field
  5. Enter your Client Secret in the "Client Secret / API Secret" field
  6. Click Add Social Network

Method 2: Using the API

curl -X POST https://api.outstand.so/v1/social-networks \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "network": "youtube",
    "client_key": "YOUR_CLIENT_ID_HERE",
    "client_secret": "YOUR_CLIENT_SECRET_HERE"
  }'

Step 6: Connect Your YouTube Account

After adding your credentials:

  1. Navigate to Accounts in your Outstand dashboard
  2. Click Connect Account
  3. Select YouTube
  4. Sign in with your Google account that has access to the YouTube channel you want to connect
  5. Grant the required permissions (upload videos, manage your YouTube account)
  6. Your YouTube channel will appear in your connected accounts list

Note: Make sure you're signing in with a Google account that has access to the YouTube channel you want to use. For brand accounts, ensure you have the necessary permissions.

YouTube-Specific Configuration

When creating posts for YouTube, you can specify additional configuration options in the networkOverrideConfiguration field:

{
  "networkOverrideConfiguration": {
    "youtubeConfiguration": {
      "isShort": false,
      "categoryId": "22",
      "privacyStatus": "public",
      "madeForKids": false,
      "tags": ["technology", "tutorial"],
      "title": "Custom Video Title"
    }
  }
}

Configuration Options

  • isShort (boolean, optional): Set to true to mark the video as a YouTube Short. When enabled, #shorts will be automatically appended to the video description.
  • categoryId (string, optional): YouTube category ID (e.g., "22" for People & Blogs, "24" for Entertainment). Defaults to "22" if not specified. See YouTube category IDs for a full list.
  • privacyStatus (string, optional): One of "public", "private", or "unlisted". Defaults to "public".
  • madeForKids (boolean, optional): Whether the video is made for kids. Defaults to false.
  • tags (array of strings, optional): Tags to add to the video.
  • title (string, optional): Custom title for the video. If not provided, the first line of the post content will be used (truncated to 100 characters).

Example: Creating a YouTube Short

curl -X POST https://api.outstand.so/v1/posts/ \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "containers": [
      {
        "content": "Check out this amazing tutorial!",
        "media": [
          {
            "url": "https://example.com/video.mp4",
            "filename": "video.mp4"
          }
        ]
      }
    ],
    "social_account_ids": [123],
    "networkOverrideConfiguration": {
      "youtubeConfiguration": {
        "isShort": true,
        "privacyStatus": "public",
        "tags": ["tutorial", "shorts"]
      }
    }
  }'

Important Notes

Video Requirements

  • Video URL: Videos must be provided as publicly accessible URLs. The video will be downloaded and uploaded to YouTube during the publishing process.
  • Video Format: YouTube supports most common video formats (MP4, MOV, AVI, etc.). MP4 is recommended for best compatibility.
  • File Size: YouTube has limits on file sizes:
    • Maximum file size: 128 GB or 12 hours in length (whichever is less)
    • For videos longer than 15 minutes, your channel must be verified

Shorts Detection

Outstand does not automatically detect if a video is a YouTube Short based on video metadata (duration, aspect ratio, etc.) due to technical limitations. Instead:

  • You must manually set youtubeConfiguration.isShort: true to mark a video as a Short
  • When isShort is true, #shorts will be automatically appended to the video description
  • Future enhancements may include client-side metadata extraction for automatic detection

Resumable Uploads

YouTube video uploads use resumable uploads to handle large files and network interruptions:

  • Videos are uploaded in 256KB chunks
  • If an upload fails, it can be resumed from the last successfully uploaded byte
  • Large videos may take time to upload depending on file size and network speed

Token Management

  • YouTube access tokens expire after 1 hour
  • A refresh token is automatically stored during the OAuth flow
  • Tokens are automatically refreshed when needed
  • Ensure prompt=consent is used during OAuth to receive refresh tokens

Troubleshooting

"Invalid client credentials"

  • Verify you copied the Client ID and Client Secret correctly
  • Ensure there are no extra spaces or formatting issues
  • Check that your Google Cloud project has YouTube Data API v3 enabled

"Redirect URI mismatch"

  • Verify the exact redirect URI in your Google Cloud Console matches: https://www.outstand.so/api/socials/youtube/callback
  • Google is strict about exact matching (including protocol and trailing slashes)
  • Check both the OAuth client configuration and the callback URL

"Access denied" or "Insufficient permissions"

  • Ensure you granted all requested permissions during OAuth
  • Check that your Google account has access to the YouTube channel
  • For brand accounts, verify you have the necessary permissions

"Video upload failed"

  • Verify the video URL is publicly accessible
  • Check that the video format is supported by YouTube
  • Ensure the file size is within YouTube's limits
  • Check network connectivity and try again (resumable uploads will resume automatically)

"Quota exceeded"

  • YouTube API has daily quotas that vary by project
  • Check your quota usage in Google Cloud Console → APIs & Services → Dashboard
  • You may need to request a quota increase if you frequently upload videos

Next Steps

Once your YouTube credentials are configured and accounts connected, you can:

  1. Create YouTube videos using the Posts API
  2. Upload videos for your posts via the Media API
  3. Schedule YouTube content for optimal engagement
  4. Monitor your YouTube analytics through the post tracking features
  5. Use YouTube-specific configuration options to customize your video metadata