All integrations

YouTube

MARKETING · MESSAGING

Videos, playlists, comments, and analytics for the channel that person owns.

Acts as the person, not as itself

Each user connects their own account. Every call carries both identities — the agent and the person it is acting for — so the agent can never reach past what that individual can already do.

Credentials never touch the agent

Tokens live in the vault and attach server-side at call time. The agent holds a session, not a secret, and revoking access does not mean rotating a key.

Every call on the record

Who asked, which agent acted, which action ran, and the verdict that let it through — one audit trail across every integration, not one per vendor.

What an agent can do

Each action is granted on its own. An agent allowed to read is not thereby allowed to write, and the scope beside each row is what the acting user must have connected for it to run at all.

youtube_add_analytics_group_itemWRITE

Add a video, playlist or channel to an analytics group. Its kind must match the group's item type. Reversible by youtube_remove_analytics_group_item. Separate quota from the Data API.

yt-analytics.readonly
youtube_add_live_chat_moderatorWRITE

Give another channel moderator powers in a live chat - they can then delete messages and ban viewers. This is an access-control change, reversible by youtube_remove_live_chat_moderator. YouTube publishes no quota cost for this resource.

youtube
youtube_add_playlist_itemWRITE

Append or insert a video into a playlist. Reversible by youtube_remove_playlist_item. Costs 50 quota units, so building a 200-video playlist spends the whole daily budget - batch nothing and plan for it.

youtube
youtube_ban_live_chat_userWRITE

Ban a viewer from a live chat, permanently or for a set number of seconds. Unlike YouTube's channel-wide comment ban, this one HAS a published inverse - youtube_unban_live_chat_user - which is why it ships. Prefer type='temporary' with a duration. YouTube publishes no quota cost for this resource.

youtube
youtube_batch_get_video_statsREAD

Read view, like and comment counts for many videos in one call. Added to the API on 2026-06-03 and it has its OWN quota bucket - 1 unit per call against a separate 10,000/day allowance - so it does not spend the main budget at all. Prefer it over youtube_list_videos whenever only the numbers are wanted.

youtube.readonly
youtube_bind_live_broadcastWRITE

Attach a live stream to a broadcast, or - by omitting stream_id - detach whatever is attached. That omission is this action's own inverse. A broadcast with no bound stream cannot go on air. YouTube publishes no quota cost for this resource.

youtube
youtube_create_analytics_groupWRITE

Create an empty analytics group of one item type, then fill it with youtube_add_analytics_group_item. Reversible by youtube_delete_analytics_group. Separate quota from the Data API.

yt-analytics.readonly
youtube_create_channel_sectionWRITE

Add a shelf to the channel homepage. This changes what every visitor sees first. Reversible by youtube_delete_channel_section. Costs 50 quota units.

youtube
youtube_create_comment_threadWRITE

Post a new top-level comment on a video or a channel, as the connected account. The comment is PUBLIC immediately, attributed to the channel, and deleting it later does not retract replies, notifications or screenshots. Costs 50 quota units.

youtube.force-ssl
youtube_create_live_broadcastWRITE

Create a scheduled broadcast. Creating one does not put anything on air: it has to be bound to a stream with youtube_bind_live_broadcast and then transitioned with youtube_transition_live_broadcast. Defaults to PRIVATE. Reversible by youtube_delete_live_broadcast. YouTube publishes no quota cost for this resource; it behaves like a 50-unit write.

youtube
youtube_create_live_streamWRITE

Create an ingestion configuration a broadcast can be bound to. The stream key YouTube mints is WITHHELD from the response for the same reason youtube_list_live_streams withholds it; collect it in YouTube Studio. Reversible by youtube_delete_live_stream. YouTube publishes no quota cost for this resource.

youtube
youtube_create_playlistWRITE

Create an empty playlist on the connected channel. Defaults to PRIVATE, which is not YouTube's default: a public playlist publishes its title, description and every video in it. Reversible by youtube_delete_playlist. Costs 50 quota units.

youtube
youtube_create_report_jobWRITE

Ask YouTube to start generating a daily bulk report. IT IS NOT IMMEDIATE: the first report appears within about 48 hours and covers the previous day. Once running, YouTube also backfills roughly the previous 30 days. Reversible by youtube_delete_report_job. Separate quota from the Data API.

yt-analytics.readonly
youtube_delete_analytics_groupWRITE

DESTRUCTIVE - delete an analytics group and its membership list. The videos are untouched, but every saved report and every automation keyed on this group id stops resolving, and the membership has to be rebuilt by hand. List it with youtube_list_analytics_group_items first.

yt-analytics.readonly
youtube_delete_captionWRITE

DESTRUCTIVE - delete a caption track. YouTube publishes no restore and keeps no copy, so a hand-timed translation is gone. Download it with youtube_download_caption first. Setting is_draft with youtube_update_caption hides a track reversibly instead. Costs 50 quota units.

youtube.force-ssl
youtube_delete_channel_sectionWRITE

DESTRUCTIVE - remove a shelf from the channel homepage. YouTube publishes no restore; the shelf's configuration and ordering are gone and must be rebuilt by hand. The playlists and videos it featured are untouched. Costs 50 quota units.

youtube
youtube_delete_commentWRITE

DESTRUCTIVE - delete a comment. YouTube publishes no restore. Deleting a top-level comment deletes every reply under it, including replies by other people. It is also the only way to retract a comment an agent posted, so it is sometimes the right call. Costs 50 quota units. Rejecting a comment with youtube_set_comment_moderation_status hides it reversibly instead.

youtube.force-ssl
youtube_delete_live_broadcastWRITE

DESTRUCTIVE - delete a broadcast. For a COMPLETED broadcast this deletes the recorded video and its view count and comments with it; YouTube publishes no restore. For an upcoming one it cancels the event and any scheduled-premiere notifications already sent. YouTube publishes no quota cost for this resource.

youtube
youtube_delete_live_chat_messageWRITE

DESTRUCTIVE - remove a message from a live chat. No restore, and everyone watching at the time has already seen it. It is also the only way to retract a message an agent posted. YouTube publishes no quota cost for this resource.

youtube.force-ssl
youtube_delete_live_streamWRITE

DESTRUCTIVE - delete an ingestion configuration. Its stream KEY dies with it, so every encoder configured with that key stops working and has to be reconfigured by a human, and a broadcast bound to it can no longer go on air. YouTube publishes no quota cost for this resource.

youtube
youtube_delete_playlistWRITE

DESTRUCTIVE - delete a playlist. YouTube publishes no restore. The VIDEOS survive (a playlist holds references, not copies) but the curation, the ordering and every note on every entry are gone. Read the item list with youtube_list_playlist_items first if it might be wanted again. Costs 50 quota units.

youtube
youtube_delete_playlist_imageWRITE

Remove a playlist's custom cover image, restoring YouTube's generated one. Reversible by uploading the image again, which is why this is not flagged destructive. YouTube publishes no quota cost for this resource.

youtube
youtube_delete_report_jobWRITE

DESTRUCTIVE - stop a reporting job and make every report it has already produced inaccessible. Recreating the job does NOT restore the history: a new job backfills only about 30 days, so anything older is gone for good. Separate quota from the Data API.

yt-analytics.readonly
youtube_delete_videoWRITE

DESTRUCTIVE - permanently delete a video from the channel. YouTube publishes NO undelete: the file, its view history, its comments and every link to it are gone, and re-uploading produces a different video with a different id and zero views. Costs 50 quota units. Setting privacy_status to 'private' with youtube_update_video hides a video reversibly and is almost always what was wanted.

youtube
youtube_download_captionREAD

Download a caption track's text, optionally converted to SRT or VTT and optionally machine-translated. Agentic Fabriq caps the returned text at 1 MB and says so in the result when it truncates. YouTube publishes no quota cost for captions.download; the rest of the captions family is billed at 50 units and above.

youtube.force-ssl
youtube_download_reportREAD

Fetch a generated bulk report's CSV. Agentic Fabriq resolves the download URL from the report's metadata, checks it points at youtubereporting.googleapis.com, fetches it with the connection's token and returns at most max_bytes of text - a full daily report can be hundreds of megabytes and no tool result can carry that. The result says plainly when it was truncated. Separate quota from the Data API.

yt-analytics.readonly
youtube_get_reportREAD

Read one report file's period, creation time and download URL, without downloading it. Separate quota from the Data API.

yt-analytics.readonly
youtube_get_report_jobREAD

Read one reporting job's type, name and creation time. Separate quota from the Data API.

yt-analytics.readonly
youtube_get_video_ratingREAD

Report whether the connected channel has liked, disliked or not rated each of up to 50 videos. This is the read that makes youtube_rate_video idempotent - call it first and a repeat like is skipped. Costs 1 quota unit. Note it needs the account-management scope, not the read-only one: YouTube publishes no read-only form.

youtube
youtube_get_video_trainabilityREAD

Report whether the creator has allowed third parties to train AI models on a video. The diagnostic answer to 'may we use this footage'. YouTube publishes no quota cost for this method; it reads like every other 1-unit list.

youtube.readonly
youtube_insert_cuepointWRITE

Trigger a mid-roll ad break in a broadcast that is on air. Viewers see an advertisement immediately; there is no cancel. Only meaningful on a monetised channel. YouTube publishes no quota cost for this resource.

youtube
youtube_list_abuse_report_reasonsREAD

List the reason ids youtube_report_video_abuse accepts, with their secondary reasons. Costs 1 quota unit and it is the only way to get a valid reason id.

youtube.readonly
youtube_list_activitiesREAD

Read a channel's activity feed - uploads and playlist changes, newest first, filterable by date. Costs 1 quota unit. Note YouTube removed the like, favorite and subscription activity types from this feed on 2026-08-06; they are no longer returned however the request is shaped.

youtube.readonly
youtube_list_analytics_group_itemsREAD

List what is in an analytics group. The group-item ids here are what youtube_remove_analytics_group_item requires; it does not take a video id. Separate quota from the Data API.

yt-analytics.readonly
youtube_list_analytics_groupsREAD

List the custom groups of videos, playlists or channels defined for analytics. A group is how you ask 'how did the tutorial series do' without listing every video id in every query. Separate quota from the Data API.

yt-analytics.readonly
youtube_list_captionsREAD

List the caption tracks on a video, with their language, whether they are auto-generated and whether they are drafts. Costs 50 quota units - fifty times an ordinary read, because captions are billed as a separate class.

youtube.force-ssl
youtube_list_channel_sectionsREAD

Read the shelves that make up a channel's homepage layout - featured playlists, recent uploads, subscriptions and the rest, in order. Costs 1 quota unit. The ids and positions here are what the section writes need.

youtube.readonly
youtube_list_channelsREAD

Read a channel by id, by @handle, or the connected account's own channel with mine=true. START HERE: the channel's uploads playlist id (contentDetails.relatedPlaylists.uploads) is how you list a channel's videos for 1 unit instead of spending one of the 100 daily search calls. Costs 1 quota unit.

youtube.readonly
youtube_list_comment_threadsREAD

Read top-level comments and their first few replies, on one video, one channel, or everything on a channel. moderation_status='heldForReview' is the moderation queue. Costs 1 quota unit. YouTube's whole comment surface is gated on the force-ssl scope, which is the same scope that can delete a video - see the scope description before granting it.

youtube.force-ssl
youtube_list_commentsREAD

Read comments by id, or every reply under one top-level comment. Use youtube_list_comment_threads to find the parent first. Costs 1 quota unit.

youtube.force-ssl
youtube_list_i18n_languagesREAD

List the application languages YouTube supports, for the hl and default_language arguments elsewhere in this connector. Costs 1 quota unit.

youtube.readonly
youtube_list_i18n_regionsREAD

List the content regions YouTube supports, for the region_code arguments elsewhere in this connector. Costs 1 quota unit.

youtube.readonly
youtube_list_live_broadcastsREAD

List the channel's broadcasts - upcoming, active or completed - with their scheduled times, privacy and bound stream. YouTube publishes no quota cost for the liveBroadcasts resource; it behaves like a 1-unit list.

youtube.readonly
youtube_list_live_chat_messagesREAD

Read messages from a live chat. Get live_chat_id from youtube_list_live_broadcasts (snippet.liveChatId). Poll with the nextPageToken; the response carries pollingIntervalMillis, and polling faster than that wastes quota and is refused by YouTube. YouTube publishes no quota cost for this resource.

youtube.readonly
youtube_list_live_chat_moderatorsREAD

List who can moderate a live chat. The moderator ids here are what youtube_remove_live_chat_moderator requires. YouTube publishes no quota cost for this resource.

youtube.readonly
youtube_list_live_streamsREAD

List the channel's ingestion configurations - resolution, frame rate, protocol, health - and the RTMP ingestion addresses. THE STREAM KEY IS WITHHELD: cdn.ingestionInfo.streamName is replaced with a marker because anyone holding it can broadcast to this channel from any encoder with no Google account at all. Read it in YouTube Studio. YouTube publishes no quota cost for this resource.

youtube.readonly
youtube_list_membersREAD

List the channel's paying members, their level and when they joined. Requires the memberships scope AND a channel with memberships enabled, which means the YouTube Partner Program: 1,000 subscribers plus 4,000 valid public watch hours, or 1,000 subscribers plus 10 million Shorts views. Costs 1 quota unit. This is third-party personal data about paying customers - grant it deliberately.

youtube.channel-memberships.creator
youtube_list_membership_levelsREAD

List the membership tiers the channel offers. The level ids here are what youtube_list_members' has_access_to_level filter needs. Costs 1 quota unit. Same Partner Programme gate as youtube_list_members.

youtube.channel-memberships.creator
youtube_list_playlist_imagesREAD

Read the custom cover images set on a playlist. YouTube publishes no quota cost for the playlistImages resource; it behaves like a 1-unit list.

youtube.readonly
youtube_list_playlist_itemsREAD

Read a playlist's entries. This is the CHEAP way to list a channel's uploads: take contentDetails.relatedPlaylists.uploads from youtube_list_channels and page through it for 1 unit a page, instead of spending one of the 100 daily search calls. Costs 1 quota unit.

youtube.readonly
youtube_list_playlistsREAD

Read playlists by id, by channel, or the connected account's own with mine=true. Costs 1 quota unit. The ids returned here are what youtube_list_playlist_items and every playlist write require.

youtube.readonly
youtube_list_report_jobsREAD

List the reporting jobs on this account, with the report type each one generates and when it was created. Separate quota from the Data API.

yt-analytics.readonly
youtube_list_report_typesREAD

List the bulk report types YouTube can generate - the daily CSV feeds behind Studio's downloads. This is where a reporting job starts: the id from here is what youtube_create_report_job needs. Separate quota from the Data API.

yt-analytics.readonly
youtube_list_reportsREAD

List the report files a job has produced, with the period each covers and its download URL. Filter with created_after to pick up only what is new since the last run. Separate quota from the Data API.

yt-analytics.readonly
youtube_list_subscriptionsREAD

Read the channels an account subscribes to, or - with my_subscribers=true - the channels subscribed to the connected one. Costs 1 quota unit. Subscription ids returned here are what youtube_unsubscribe requires; it does not take a channel id.

youtube.readonly
youtube_list_super_chat_eventsREAD

List Super Chat and Super Sticker purchases on the channel's live streams, with the amount, the currency and the buyer's public channel. YouTube publishes no quota cost for this method; it behaves like a 1-unit read.

youtube.readonly
youtube_list_video_categoriesREAD

List the video category ids valid in one region. youtube_update_video takes a category id and rejects a name, so this is the read that makes that write callable. Costs 1 quota unit.

youtube.readonly
youtube_list_videosREAD

Read one or more YouTube videos by id, or the most-popular chart, or the videos this channel has rated. Returns title, description, tags, publication time, statistics and status. Costs 1 quota unit out of the project's 10,000/day. Exactly one of id, chart or my_rating must be given - YouTube refuses the call otherwise and still charges for it.

youtube.readonly
youtube_post_live_chat_messageWRITE

Post a message into a live chat as the connected channel. Visible to everyone watching, immediately, attributed to the channel - and on a busy stream it is seen before it can be deleted. YouTube publishes no quota cost for this resource.

youtube.force-ssl
youtube_query_analytics_reportREAD

THE ANSWER TO 'HOW IS MY CHANNEL DOING'. Query views, watch time, subscribers gained, average view duration, traffic sources, demographics and revenue over any date range, grouped by any dimension. ids is normally 'channel==MINE'. Runs against the YouTube Analytics API, which has its own project quota in the Cloud console - it does NOT spend the Data API's 10,000 units. REVENUE METRICS (estimatedRevenue, estimatedAdRevenue, cpm, rpm) additionally need the monetary analytics scope granted on this connection, and the channel must be in the YouTube Partner Programme.

yt-analytics.readonly
youtube_rate_videoWRITE

Set the connected channel's rating on a video. A like is PUBLIC on the channel's liked-videos list. Fully reversible: rating='none' removes whatever rating is there, which is this action's own inverse. Costs 50 quota units.

youtube
youtube_remove_analytics_group_itemWRITE

Remove one member from an analytics group. Takes the GROUP ITEM id from youtube_list_analytics_group_items. Reversible by youtube_add_analytics_group_item. Separate quota from the Data API.

yt-analytics.readonly
youtube_remove_live_chat_moderatorWRITE

Revoke a moderator's powers in a live chat. Takes the MODERATOR id from youtube_list_live_chat_moderators, not a channel id. Reversible by youtube_add_live_chat_moderator. YouTube publishes no quota cost for this resource.

youtube
youtube_remove_playlist_itemWRITE

Remove one entry from a playlist. The video itself is untouched and the entry can be put back with youtube_add_playlist_item, which is why this is not flagged destructive. Costs 50 quota units.

youtube
youtube_reply_to_commentWRITE

Post a reply under an existing top-level comment, as the connected account. Public immediately and it notifies the person replied to. Costs 50 quota units.

youtube.force-ssl
youtube_report_abuseWRITE

File a general abuse report about a channel, video or comment, in the connected account's name. YouTube publishes no API that withdraws it. PREFER youtube_report_video_abuse FOR A VIDEO: its reason ids come from youtube_list_abuse_report_reasons, while this operation's subject_type_id and abuse_type_ids come from NO read YouTube publishes - they have to be taken from Google's reference by a human, which is why the video-specific tool is the usable one. YouTube publishes no quota cost for this method either; it behaves like a 50-unit write.

youtube
youtube_report_video_abuseWRITE

Flag somebody else's video to YouTube for review, in the connected account's name. YouTube publishes NO API that withdraws a report, so this cannot be taken back by another call. Get reason_id from youtube_list_abuse_report_reasons - a made-up id is a wasted, billed refusal. Costs 50 quota units.

youtube
youtube_searchREAD

Search YouTube for videos, channels or playlists. THE SCARCEST CALL IN THIS CONNECTOR: since YouTube's 2026-06-01 move to granular quota buckets, a project gets 100 search.list CALLS PER DAY - a bucket of its own, separate from the 10,000-unit budget - and every page of results is another call. Before searching a known channel's own videos, use youtube_list_channels to get its uploads playlist and page that with youtube_list_playlist_items for 1 unit a page instead. Search results carry no statistics; pass the ids to youtube_batch_get_video_stats, which is free of both budgets.

youtube.readonly
youtube_set_comment_moderation_statusWRITE

Publish, reject or hold up to 50 comments on the connected channel's own videos in one call. Fully reversible - a rejected comment can be published again. YouTube's banAuthor parameter is NOT available: it bans a viewer from the channel permanently and YouTube publishes no un-ban. Costs 50 quota units.

youtube.force-ssl
youtube_set_playlist_imageWRITE

Upload a custom cover image for a playlist. The image travels as base64 and is capped at 2 MB decoded by Agentic Fabriq, well under the 50 MB the endpoint would take, because a tool argument is not a file transfer. YouTube publishes no quota cost for this resource; it behaves like a 50-unit write.

youtube
youtube_set_thumbnailWRITE

Upload a custom thumbnail image for a video. The image travels as base64 inside the tool call, so it is capped at 2 MB DECODED - YouTube's own documented limit for thumbnails, well under the 50 MB its upload endpoint would accept. Custom thumbnails require a verified YouTube channel. Costs 50 quota units. The previous thumbnail is replaced and YouTube keeps no copy of it.

youtube.upload
youtube_set_watermarkWRITE

Upload the branding watermark that appears over every video on the channel and set when it shows. Reversible by youtube_unset_watermark. The image travels as base64, capped at 10 MB decoded. Costs 50 quota units.

youtube.upload
youtube_subscribeWRITE

Subscribe the connected account to a channel. A subscription is PUBLIC unless the account's subscription list is private, and it is a visible statement of affiliation. Reversible by youtube_unsubscribe. Costs 50 quota units.

youtube
youtube_transition_live_broadcastWRITE

Move a broadcast between testing, live and complete. 'live' PUTS THE CHANNEL ON AIR to whatever audience its privacy allows and notifies subscribers; 'complete' ends the broadcast and cannot be undone - a completed broadcast cannot go back on air, a new one has to be made. Both directions require the confirmation token. YouTube publishes no quota cost for this resource.

youtube
youtube_transition_live_chat_messageWRITE

Close a durable chat event, such as an open poll. Closing a poll finalises it and it cannot be reopened. YouTube publishes no quota cost for this resource.

youtube
youtube_unban_live_chat_userWRITE

Lift a ban, letting the viewer chat again. Takes the BAN id returned by youtube_ban_live_chat_user. YouTube publishes no list of active bans, so the id has to be kept from the ban call - that gap is recorded in docs/coverage/youtube.md. YouTube publishes no quota cost for this resource.

youtube
youtube_unset_watermarkWRITE

Remove the branding watermark from the channel's videos. The inverse of youtube_set_watermark; the image itself is discarded, so restoring it means uploading it again. Costs 50 quota units.

youtube
youtube_unsubscribeWRITE

Remove one subscription. Takes the SUBSCRIPTION id from youtube_list_subscriptions, not a channel id. Reversible by youtube_subscribe. Costs 50 quota units.

youtube
youtube_update_analytics_groupWRITE

Change an analytics group's title. The group's members and item type are untouched. Separate quota from the Data API.

yt-analytics.readonly
youtube_update_captionWRITE

Replace a caption track's file, or flip its draft flag. 450 quota units, the most expensive call in the API. The previous version of the track is not retained anywhere, so download it with youtube_download_caption first if it might be wanted.

youtube.force-ssl
youtube_update_channel_brandingWRITE

Change the channel's title, description, keywords, country, default language, unsubscribed trailer or banner image. Agentic Fabriq reads the current brandingSettings first and merges only the fields named here - YouTube's channels.update replaces the whole brandingSettings object, so a bare title would blank the description and the keywords. Costs 1 unit for the read plus 50 for the write.

youtube
youtube_update_channel_sectionWRITE

Change a shelf's title, position, style or contents. Agentic Fabriq reads the section first and merges the named fields, because channelSections.update requires the whole snippet. Costs 1 unit for the read plus 50 for the write.

youtube
youtube_update_commentWRITE

Edit the text of a comment the connected account wrote. YouTube marks the comment as edited and re-notifies anyone mentioned, so this is outbound communication rather than a silent correction. Costs 50 quota units.

youtube.force-ssl
youtube_update_live_broadcastWRITE

Change a broadcast's title, schedule, privacy or recording settings. Agentic Fabriq reads it first and merges the named fields, because liveBroadcasts.update requires the whole snippet. YouTube publishes no quota cost for this resource.

youtube
youtube_update_live_streamWRITE

Change a stream's title, description or ingestion settings. Agentic Fabriq reads it first and merges the named fields. The stream key is withheld from the response as everywhere else. YouTube publishes no quota cost for this resource.

youtube
youtube_update_playlistWRITE

Change a playlist's title, description, tags or privacy. Agentic Fabriq reads the playlist first and merges only the named fields; YouTube's playlists.update would otherwise clear the description and tags whenever they are omitted. Costs 1 unit for the read plus 50 for the write. The playlist's ITEMS are untouched.

youtube
youtube_update_playlist_imageWRITE

Replace an existing playlist cover image. Same 2 MB base64 cap as youtube_set_playlist_image, and the same reason for it. The previous image is not retained. YouTube publishes no quota cost for this resource; it behaves like a 50-unit write.

youtube
youtube_update_playlist_itemWRITE

Change an entry's position in a playlist, or its note and clip range. Agentic Fabriq reads the entry first and merges the named fields, because YouTube requires the whole snippet on this call and would otherwise re-point the entry at nothing. Costs 1 unit for the read plus 50 for the write.

youtube
youtube_update_videoWRITE

Change a video's title, description, tags, category, privacy, licence, publish time or made-for-kids declaration. Agentic Fabriq READS THE VIDEO FIRST and merges only the fields named here: YouTube's raw videos.update clears every mutable property the request body omits, so sending a title alone would erase the description and every tag. Costs 1 unit for the read plus 50 for the write.

youtube
youtube_upload_captionWRITE

Add a caption track to a video. THE MOST EXPENSIVE CALL IN THIS CONNECTOR at 400 quota units - 4% of the daily budget per track. The file must carry its own timecodes: YouTube's sync parameter has been unsupported since 2024-04-12 and Agentic Fabriq refuses it by name. Text travels inline, capped at 1 MB.

youtube.force-ssl
youtube_upload_channel_bannerWRITE

Upload a banner image and return the bannerExternalUrl YouTube assigns to it. THIS ALONE CHANGES NOTHING: pass the returned URL to youtube_update_channel_branding to actually put the banner on the channel. The image travels as base64 and is capped at 6 MB decoded, which is YouTube's own limit for this endpoint. Costs 50 quota units.

youtube.upload
youtube_upload_videoWRITE

Upload a video to the connected channel from a publicly reachable https URL and return the created video resource. The file is fetched server-side WITHOUT credentials and must be 64 MB or less — Agentic Fabriq's cap for a tool-driven transfer, well under YouTube's own limit. Defaults to privacyStatus=private so nothing goes public by accident; pass privacy_status explicitly to change that. Costs 1600 quota units against a SEPARATE 100-uploads/day bucket (the API's default until a quota extension is granted).

youtube.upload

Put YouTube behind one governed endpoint.

Same permissions, same audit trail, whatever else you connect next.