YouTube API Usage
SimplePost lets users publish or schedule user-provided videos to YouTube. The user connects a Google account that has access to the target YouTube channel, then SimplePost uses the YouTube Data API v3 to upload the video and apply the publishing options selected by the user.
SimplePost does not use YouTube APIs to read analytics, comments, subscribers, live streaming data, or reporting data.
Product Purpose
SimplePost uses YouTube access for these user-facing features:
- Connect a user's Google account for YouTube publishing.
- Upload a video selected by the user.
- Set user-provided video metadata such as title, description, tags, category, privacy status, and made-for-kids declaration.
- Schedule a video for future publication when the user provides a publish time.
- Upload a custom thumbnail when the user provides one.
- Add the uploaded video to a playlist when the user provides a playlist ID.
Google OAuth
YouTube access is authorized through Google OAuth 2.0.
| Purpose | Endpoint |
|---|---|
| Authorization | https://accounts.google.com/o/oauth2/v2/auth |
| Token exchange and refresh | https://oauth2.googleapis.com/token |
| Basic Google profile lookup | https://www.googleapis.com/oauth2/v2/userinfo |
The OAuth flow requests offline access so SimplePost can keep a refresh token and continue posting scheduled videos while the user remains connected. Users can disconnect their YouTube account in SimplePost or revoke access from their Google Account settings.
OAuth Scopes
SimplePost requests these Google OAuth scopes for YouTube connections:
| Scope | Purpose |
|---|---|
https://www.googleapis.com/auth/youtube.upload | Upload videos to the user's YouTube channel and set upload metadata. |
https://www.googleapis.com/auth/youtube.readonly | Read-only YouTube access. The current publishing flow does not call YouTube read endpoints; account display data comes from Google OAuth userinfo. |
https://www.googleapis.com/auth/userinfo.profile | Retrieve basic Google profile information used to label the connected account. |
YouTube Data API Calls
SimplePost makes the following YouTube Data API v3 calls.
| Feature | YouTube API method | Endpoint | When used |
|---|---|---|---|
| Video upload | videos.insert | POST https://www.googleapis.com/upload/youtube/v3/videos?part=snippet,status | Always used for YouTube posts. |
| Thumbnail upload | thumbnails.set | POST https://www.googleapis.com/upload/youtube/v3/thumbnails/set?videoId={videoId} | Used only when the user provides a custom thumbnail. |
| Playlist insertion | playlistItems.insert | POST https://www.googleapis.com/youtube/v3/playlistItems?part=snippet | Used only when the user provides a playlist ID. |
Video Upload
For videos.insert, SimplePost sends:
- The user-selected video file.
- Video title.
- Video description.
- Tags, when provided.
- Category ID, when provided.
- Privacy status, when provided.
- Scheduled publish timestamp, when provided.
- Self-declared made-for-kids value, when provided.
If the user schedules a video with a future publish time, SimplePost sends the video as private with the requested publish timestamp, which is required for native YouTube scheduled publishing.
Thumbnail Upload
For thumbnails.set, SimplePost sends the user-provided thumbnail image for the video that was just uploaded. If thumbnail upload fails, the video upload remains successful and the thumbnail failure is reported as a non-blocking warning.
Playlist Insertion
For playlistItems.insert, SimplePost sends the playlist ID provided by the user and the ID of the newly uploaded YouTube video. If playlist insertion fails, the video upload remains successful and the playlist failure is reported as a non-blocking warning.
Data Accessed and Stored
SimplePost accesses and stores only the data needed to provide YouTube publishing:
| Data | Use |
|---|---|
| Access token | Authorize YouTube publishing requests while the token is valid. |
| Refresh token | Obtain new access tokens for scheduled posts and future uploads while the account remains connected. |
| Token expiry | Decide whether a stored access token can still be used. |
| Basic Google profile information | Display the connected Google account to the user. |
| User-provided video file | Upload the video to YouTube. |
| User-provided thumbnail file | Upload a custom thumbnail when requested. |
| User-provided video metadata | Populate the YouTube video title, description, tags, category, privacy status, schedule time, playlist, and made-for-kids setting. |
SimplePost does not store YouTube analytics, comments, subscriber lists, watch history, or reporting data.
APIs Not Used
SimplePost does not currently call these YouTube APIs:
- YouTube Analytics API.
- YouTube Reporting API.
- YouTube comments APIs.
- YouTube live streaming APIs.
- YouTube read endpoints such as
channels.listorvideoCategories.list.
User Control
Users control when SimplePost uses YouTube access:
- The user must connect a Google account before SimplePost can publish to YouTube.
- The user must create or schedule a YouTube post before SimplePost uploads a video.
- The user chooses the video file, metadata, privacy status, schedule time, thumbnail, and playlist settings.
- The user can disconnect their YouTube account in SimplePost.
- The user can revoke SimplePost's Google access from Google Account settings.
Error Handling
If the video upload fails, SimplePost marks the post as failed and reports the YouTube API error to the user. If Google returns an expired or revoked authorization error, SimplePost asks the user to reconnect their YouTube account.
Thumbnail upload and playlist insertion are optional follow-up actions. If either optional action fails after the video upload succeeds, SimplePost keeps the uploaded video and reports the optional failure without deleting the video.