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
- Go to Google Cloud Console
- Click on the project dropdown at the top
- Click New Project
- Enter a project name (e.g., "Outstand YouTube Integration")
- Click Create
- Wait for the project to be created and select it from the dropdown
Step 2: Enable YouTube Data API v3
- In your Google Cloud project, navigate to APIs & Services → Library
- Search for "YouTube Data API v3"
- Click on YouTube Data API v3 from the results
- Click Enable
Step 3: Create OAuth 2.0 Credentials
- Navigate to APIs & Services → Credentials
- Click Create Credentials → OAuth client ID
- 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
- Back in the Credentials page, click Create Credentials → OAuth client ID
- Select Web application as the application type
- 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
- Production and development:
- Click Create
- 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)
- 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).
Step 4: Configure OAuth Consent Screen Scopes
The YouTube integration requires the following OAuth scopes:
https://www.googleapis.com/auth/youtube.upload- Upload videos to YouTubehttps://www.googleapis.com/auth/youtube- Manage your YouTube accounthttps://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
- Log in to Outstand Dashboard
- Navigate to Settings → Social Networks
- Select YouTube from the dropdown
- Enter your Client ID in the "Client ID / API Key" field
- Enter your Client Secret in the "Client Secret / API Secret" field
- 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:
- Navigate to Accounts in your Outstand dashboard
- Click Connect Account
- Select YouTube
- Sign in with your Google account that has access to the YouTube channel you want to connect
- Grant the required permissions (upload videos, manage your YouTube account)
- 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
trueto mark the video as a YouTube Short. When enabled,#shortswill 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: trueto mark a video as a Short - When
isShortistrue,#shortswill 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=consentis 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: