<html><body>
<style>

body, h1, h2, h3, div, span, p, pre, a {
  margin: 0;
  padding: 0;
  border: 0;
  font-weight: inherit;
  font-style: inherit;
  font-size: 100%;
  font-family: inherit;
  vertical-align: baseline;
}

body {
  font-size: 13px;
  padding: 1em;
}

h1 {
  font-size: 26px;
  margin-bottom: 1em;
}

h2 {
  font-size: 24px;
  margin-bottom: 1em;
}

h3 {
  font-size: 20px;
  margin-bottom: 1em;
  margin-top: 1em;
}

pre, code {
  line-height: 1.5;
  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
}

pre {
  margin-top: 0.5em;
}

h1, h2, h3, p {
  font-family: Arial, sans serif;
}

h1, h2, h3 {
  border-bottom: solid #CCC 1px;
}

.toc_element {
  margin-top: 0.5em;
}

.firstline {
  margin-left: 2 em;
}

.method  {
  margin-top: 1em;
  border: solid 1px #CCC;
  padding: 1em;
  background: #EEE;
}

.details {
  font-weight: bold;
  font-size: 14px;
}

</style>

<h1><a href="youtube_v3.html">YouTube Data API</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="youtube_v3.activities.html">activities()</a></code>
</p>
<p class="firstline">Returns the activities Resource.</p>

<p class="toc_element">
  <code><a href="youtube_v3.captions.html">captions()</a></code>
</p>
<p class="firstline">Returns the captions Resource.</p>

<p class="toc_element">
  <code><a href="youtube_v3.channelBanners.html">channelBanners()</a></code>
</p>
<p class="firstline">Returns the channelBanners Resource.</p>

<p class="toc_element">
  <code><a href="youtube_v3.channelSections.html">channelSections()</a></code>
</p>
<p class="firstline">Returns the channelSections Resource.</p>

<p class="toc_element">
  <code><a href="youtube_v3.channels.html">channels()</a></code>
</p>
<p class="firstline">Returns the channels Resource.</p>

<p class="toc_element">
  <code><a href="youtube_v3.commentThreads.html">commentThreads()</a></code>
</p>
<p class="firstline">Returns the commentThreads Resource.</p>

<p class="toc_element">
  <code><a href="youtube_v3.comments.html">comments()</a></code>
</p>
<p class="firstline">Returns the comments Resource.</p>

<p class="toc_element">
  <code><a href="youtube_v3.guideCategories.html">guideCategories()</a></code>
</p>
<p class="firstline">Returns the guideCategories Resource.</p>

<p class="toc_element">
  <code><a href="youtube_v3.i18nLanguages.html">i18nLanguages()</a></code>
</p>
<p class="firstline">Returns the i18nLanguages Resource.</p>

<p class="toc_element">
  <code><a href="youtube_v3.i18nRegions.html">i18nRegions()</a></code>
</p>
<p class="firstline">Returns the i18nRegions Resource.</p>

<p class="toc_element">
  <code><a href="youtube_v3.liveBroadcasts.html">liveBroadcasts()</a></code>
</p>
<p class="firstline">Returns the liveBroadcasts Resource.</p>

<p class="toc_element">
  <code><a href="youtube_v3.liveChatBans.html">liveChatBans()</a></code>
</p>
<p class="firstline">Returns the liveChatBans Resource.</p>

<p class="toc_element">
  <code><a href="youtube_v3.liveChatMessages.html">liveChatMessages()</a></code>
</p>
<p class="firstline">Returns the liveChatMessages Resource.</p>

<p class="toc_element">
  <code><a href="youtube_v3.liveChatModerators.html">liveChatModerators()</a></code>
</p>
<p class="firstline">Returns the liveChatModerators Resource.</p>

<p class="toc_element">
  <code><a href="youtube_v3.liveStreams.html">liveStreams()</a></code>
</p>
<p class="firstline">Returns the liveStreams Resource.</p>

<p class="toc_element">
  <code><a href="youtube_v3.members.html">members()</a></code>
</p>
<p class="firstline">Returns the members Resource.</p>

<p class="toc_element">
  <code><a href="youtube_v3.membershipsLevels.html">membershipsLevels()</a></code>
</p>
<p class="firstline">Returns the membershipsLevels Resource.</p>

<p class="toc_element">
  <code><a href="youtube_v3.playlistItems.html">playlistItems()</a></code>
</p>
<p class="firstline">Returns the playlistItems Resource.</p>

<p class="toc_element">
  <code><a href="youtube_v3.playlists.html">playlists()</a></code>
</p>
<p class="firstline">Returns the playlists Resource.</p>

<p class="toc_element">
  <code><a href="youtube_v3.search.html">search()</a></code>
</p>
<p class="firstline">Returns the search Resource.</p>

<p class="toc_element">
  <code><a href="youtube_v3.sponsors.html">sponsors()</a></code>
</p>
<p class="firstline">Returns the sponsors Resource.</p>

<p class="toc_element">
  <code><a href="youtube_v3.subscriptions.html">subscriptions()</a></code>
</p>
<p class="firstline">Returns the subscriptions Resource.</p>

<p class="toc_element">
  <code><a href="youtube_v3.superChatEvents.html">superChatEvents()</a></code>
</p>
<p class="firstline">Returns the superChatEvents Resource.</p>

<p class="toc_element">
  <code><a href="youtube_v3.thumbnails.html">thumbnails()</a></code>
</p>
<p class="firstline">Returns the thumbnails Resource.</p>

<p class="toc_element">
  <code><a href="youtube_v3.videoAbuseReportReasons.html">videoAbuseReportReasons()</a></code>
</p>
<p class="firstline">Returns the videoAbuseReportReasons Resource.</p>

<p class="toc_element">
  <code><a href="youtube_v3.videoCategories.html">videoCategories()</a></code>
</p>
<p class="firstline">Returns the videoCategories Resource.</p>

<p class="toc_element">
  <code><a href="youtube_v3.videos.html">videos()</a></code>
</p>
<p class="firstline">Returns the videos Resource.</p>

<p class="toc_element">
  <code><a href="youtube_v3.watermarks.html">watermarks()</a></code>
</p>
<p class="firstline">Returns the watermarks Resource.</p>

<p class="toc_element">
  <code><a href="#new_batch_http_request">new_batch_http_request()</a></code></p>
<p class="firstline">Create a BatchHttpRequest object based on the discovery document.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="new_batch_http_request">new_batch_http_request()</code>
  <pre>Create a BatchHttpRequest object based on the discovery document.

        Args:
          callback: callable, A callback to be called for each response, of the
            form callback(id, response, exception). The first parameter is the
            request id, and the second is the deserialized response object. The
            third is an apiclient.errors.HttpError exception object if an HTTP
            error occurred while processing the request, or None if no error
            occurred.

        Returns:
          A BatchHttpRequest object based on the discovery document.
        </pre>
</div>

</body></html>