> ## Documentation Index
> Fetch the complete documentation index at: https://www.ayrshare.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# YouTube Watermark सेट करें

> अपने YouTube channel पर एक watermark सेट करें

export const HeaderAPI = ({noProfileKey, profileKeyRequired}) => <>
    <ParamField header="Authorization" type="string" required>
      <a href="/apis/overview#authorization">API Key</a> of the Primary Profile.
      <br />
      <br />
      Format: <code>Authorization: Bearer API_KEY</code>
    </ParamField>
    {!noProfileKey && (profileKeyRequired ? <ParamField header="Profile-Key" type="string" required>
          <a href="/apis/overview#profile-key-format">Profile Key</a> of a User Profile.
          <br />
          <br />
          Format: <code>Profile-Key: PROFILE_KEY</code>
        </ParamField> : <ParamField header="Profile-Key" type="string">
          <a href="/apis/overview#profile-key-format">Profile Key</a> of a User Profile.
          <br />
          <br />
          Format: <code>Profile-Key: PROFILE_KEY</code>
        </ParamField>)}
  </>;

export const PlansAvailable = ({plans = [], maxPackRequired}) => {
  let displayPlans = plans;
  if (plans && plans.length === 1) {
    const lowerCasePlan = plans[0].toLowerCase();
    if (lowerCasePlan === "business") {
      displayPlans = ["Launch", "Business", "Enterprise"];
    } else if (lowerCasePlan === "premium") {
      displayPlans = ["Premium", "Launch", "Business", "Enterprise"];
    }
  }
  return <Note>
Available on {displayPlans.length === 1 ? "the " : ""}
{displayPlans.join(", ").replace(/\b\w/g, l => l.toUpperCase())}{" "}
{displayPlans.length > 1 ? "plans" : "plan"}.

{maxPackRequired && <span onClick={() => window.open('https://www.ayrshare.com/docs/additional/maxpack', '_self')} className="flex items-center mt-2 cursor-pointer">
 <span className="px-1.5 py-0.5 rounded text-sm" style={{
    backgroundColor: '#C264B6',
    color: 'white',
    fontSize: '12px'
  }}>
   Max Pack required
 </span>
</span>}
</Note>;
};

<PlansAvailable plans={["premium"]} maxPackRequired={false} />

अपने YouTube channel पर एक watermark छवि सेट करें जो आपके सभी videos पर दिखाई देगी। Watermark को video playback के दौरान विशिष्ट समय पर दिखाई देने के लिए कॉन्फ़िगर किया जा सकता है।

<ul class="custom-bullets">
  <li>Position स्वचालित रूप से bottom-right कोने पर सेट होती है (YouTube API default)</li>
  <li>watermark सेट करते समय सभी timing parameters `timingType`, `offsetMs`, और `durationMs` आवश्यक हैं</li>
  <li>Watermarks channel पर सभी videos (मौजूदा और भविष्य) पर लागू होते हैं</li>
  <li>Watermark छवि को YouTube के [watermark media guidelines](/media-guidelines/youtube#watermark) को पूरा करना होगा</li>
  <li>YouTube channel का प्रबंधन करने के लिए आपके पास उचित permissions होनी चाहिए</li>
</ul>

## Header Parameters

<HeaderAPI noProfileKey={false} />

## Body Parameters

<ParamField body="mediaUrls" type="array" required>
  Watermark छवि URL वाला Array। केवल पहले URL का उपयोग किया जाएगा।
</ParamField>

<ParamField body="timingType" type="string" required>
  Video playback के दौरान watermark कब दिखाना है।

  उपलब्ध timingType विकल्प:

  * `offsetFromStart` - Video शुरू होने के बाद एक विशिष्ट समय से watermark दिखाना शुरू करें
  * `offsetFromEnd` - Video समाप्त होने से पहले एक विशिष्ट समय से watermark दिखाना शुरू करें
</ParamField>

<ParamField body="offsetMs" type="number" required>
  मिलीसेकंड में समय offset। एक धनात्मक संख्या होनी चाहिए।

  * `offsetFromStart` के लिए: watermark दिखाने के लिए video शुरू होने के बाद का समय
  * `offsetFromEnd` के लिए: watermark दिखाने के लिए video समाप्त होने से पहले का समय
</ParamField>

<ParamField body="durationMs" type="number" required>
  मिलीसेकंड में watermark को कितने समय तक प्रदर्शित करना है। एक धनात्मक संख्या होनी चाहिए।
</ParamField>

<RequestExample>
  ```bash cURL theme={"system"}
  curl \
  -H "Authorization: Bearer API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{
    "mediaUrls": ["https://example.com/watermark.png"],
    "timingType": "offsetFromStart",
    "offsetMs": 15000,
    "durationMs": 30000
  }' \
  -X POST https://api.ayrshare.com/api/post/youTubeWatermark
  ```

  ```javascript JavaScript theme={"system"}
  const API_KEY = "API_KEY";

  fetch("https://api.ayrshare.com/api/post/youTubeWatermark", {
    method: "POST",
    headers: {
      "Content-Type": "application/json",
      "Authorization": `Bearer ${API_KEY}`
    },
    body: JSON.stringify({
      mediaUrls: ["https://example.com/watermark.png"],
      timingType: "offsetFromStart",
      offsetMs: 15000,
      durationMs: 30000
    }),
  })
    .then((res) => res.json())
    .then((json) => console.log(json))
    .catch(console.error);
  ```

  ```python Python theme={"system"}
  import requests

  payload = {
      'mediaUrls': ['https://example.com/watermark.png'],
      'timingType': 'offsetFromStart',
      'offsetMs': 15000,
      'durationMs': 30000
  }
  headers = {
      'Content-Type': 'application/json',
      'Authorization': 'Bearer API_KEY'
  }

  r = requests.post('https://api.ayrshare.com/api/post/youTubeWatermark',
      json=payload,
      headers=headers)

  print(r.json())
  ```

  ```php PHP theme={"system"}
  <?php

  $apiUrl = 'https://api.ayrshare.com/api/post/youTubeWatermark';
  $apiKey = 'API_KEY';  // Replace 'API_KEY' with your actual API key

  $headers = [
      'Content-Type: application/json',
      'Authorization: Bearer ' . $apiKey,
  ];

  $data = json_encode([
      'mediaUrls' => ['https://example.com/watermark.png'],
      'timingType' => 'offsetFromStart',
      'offsetMs' => 15000,
      'durationMs' => 30000
  ]);

  $curl = curl_init($apiUrl);
  curl_setopt_array($curl, [
      CURLOPT_RETURNTRANSFER => true,
      CURLOPT_POST => true,
      CURLOPT_HTTPHEADER => $headers,
      CURLOPT_POSTFIELDS => $data
  ]);

  $response = curl_exec($curl);

  if ($response === false) {
      echo 'Curl error: ' . curl_error($curl);
  } else {
      echo json_encode(json_decode($response), JSON_PRETTY_PRINT);
  }

  curl_close($curl);
  ```

  ```csharp C# theme={"system"}
  using System;
  using System.Net.Http;
  using System.Text;
  using System.Threading.Tasks;

  namespace SetYouTubeWatermark_csharp
  {
      class SetYouTubeWatermark
      {
          private static readonly HttpClient client = new HttpClient();

          static async Task Main(string[] args)
          {
              string API_KEY = "API_KEY";
              string url = "https://api.ayrshare.com/api/post/youTubeWatermark";

              // Set up request headers
              client.DefaultRequestHeaders.Add("Authorization", "Bearer " + API_KEY);

              // Prepare JSON content
              string json = @"{
                  ""mediaUrls"": [""https://example.com/watermark.png""],
                  ""timingType"": ""offsetFromStart"",
                  ""offsetMs"": 15000,
                  ""durationMs"": 30000
              }";
              var content = new StringContent(json, Encoding.UTF8, "application/json");

              try
              {
                  // Send POST request
                  HttpResponseMessage response = await client.PostAsync(url, content);
                  response.EnsureSuccessStatusCode();

                  // Read response
                  string responseBody = await response.Content.ReadAsStringAsync();
                  Console.WriteLine(responseBody);
              }
              catch (HttpRequestException e)
              {
                  Console.WriteLine($"Error: {e.Message}");
              }
          }
      }
  }
  ```
</RequestExample>

<ResponseExample>
  ```json 200 theme={"system"}
  {
    "status": "success",
    "message": "Watermark set successfully",
    "mediaUrls": [
      "https://example.com/watermark.png"
    ],
    "timingType": "offsetFromStart",
    "offsetMs": 1000,
    "durationMs": 5000
  }
  ```

  ```json 400 - Invalid Image Dimensions theme={"system"}
  {
      "action": "post",
      "status": "error",
      "code": 140,
      "message": "The image aspect ratio must be between 1 and 1. Current image aspect ratio: 1085/723 (1.50). https://www.ayrshare.com/docs/media-guidelines/youtube "
  }
  ```

  ```json 400 - Unsupported Format theme={"system"}
  {
      "status": "error",
      "code": 307,
      "message": "Media type 'image/webp' is not supported. "
  }
  ```

  ```json 403 - Permission Error theme={"system"}
  {
    "status": "error",
    "code": 250,
    "message": "The watermark cannot be set for this channel. Please check that you have proper permissions and the channel is valid."
  }
  ```
</ResponseExample>
