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

# Змінити розмір зображення

> Змініть розмір зображення до розмірів соцмереж, додайте водяні знаки або обріжте

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={true} />

Соціальні мережі мають [специфічні вимоги](/media-guidelines) до зображень. Ендпоінт resize дозволяє вибрати сумісний із соцмережею розмір зображення, додати водяні знаки, змінити фон, додати ефекти, обрізати тощо.

За замовчуванням зміна розміру змінює розміри зображення, але не обрізає його. Ви можете натомість обрізати зображення. Деталі див. нижче.

## Параметри заголовка

<HeaderAPI noProfileKey={true} />

## Параметри тіла запиту

<ParamField body="imageUrl" type="string" required>
  URL зображення, розмір якого потрібно змінити. Має починатися з `https://`
</ParamField>

<ParamField body="platform" type="array" required>
  Платформа соцмережі, для якої буде змінено розмір за URL. Деталі див. у розділі [опції платформ](/apis/media/resize#platform-options).
</ParamField>

<ParamField body="file" type="object">
  Надішліть медіафайл як multipart form-data. Обов'язковий, якщо не надано `imageUrl`.
</ParamField>

<ParamField body="watermark" type="object">
  URL і необов'язкове положення водяного знака, який застосовується до зображення зі зміненим розміром. За замовчуванням водяний знак з'являється
  в нижньому правому куті зображення. Деталі див. у розділі [watermark](/apis/media/resize#watermark).
</ParamField>

<ParamField body="effects" type="string">
  Зміна прозорості, кольорів тощо. Деталі див. у розділі [опції ефектів](/apis/media/resize#effects-options).
</ParamField>

<ParamField body="dimensions" type="object">
  Об'єкт, що вказує `width` і `height` для зміни розміру. При обрізанні можна додатково вказати координати центру `x` і `y`.
  Типово — це центр зображення.

  ```json Dimensions theme={"system"}
  {
    "width": 500,
    "height": 500,
    "xCoordinate": 35, // optional for crop mode
    "yCoordinate": 50 // optional for crop mode
  }
  ```

  <Note>Ширина й висота обов'язкові, якщо платформа не вказана.</Note>
</ParamField>

<ParamField body="mode" type="string" default="resize">
  Значення: `resize`, `blur` або `crop`. Деталі див. у розділі [mode](/apis/media/resize#mode).
</ParamField>

<ParamField body="convertToJpg" type="boolean">
  Автоматично конвертувати у файл JPG, наприклад з PNG у JPG. Використовуватиметься якість 75%.
  Деталі див. у розділі [convert to a JPG](/apis/media/resize#convert-to-a-jpg-or-webp).
</ParamField>

<ParamField body="convertToWebP" type="boolean">
  Автоматично конвертувати у файл WebP, наприклад з PNG у WebP. Використовуватиметься якість 75%.
  Деталі див. у розділі [convert to a WebP](/apis/media/resize#convert-to-a-jpg-or-webp).
</ParamField>

### Опції платформ

Укажіть платформу як рядок, щоб використати попередньо визначені розміри зображення, або задайте власні через поле `dimensions`.

Наприклад, `"platform": "facebook"` задасть розміри зображення 1200px по ширині та 630px по висоті.

<ul class="custom-bullets">
  <li>`facebook`: ширина 1200px, висота 630px.</li>
  <li>`instagram`: ширина 1080px, висота 1080px.</li>
  <li>`instagram_landscape`: ширина 1080px, висота 680px.</li>
  <li>`instagram_portrait`: ширина 1080px, висота 1920px.</li>
  <li>`instagram_special`: ширина 1080px, висота 800px.</li>
  <li>`linkedin`: ширина 1200px, висота 627px.</li>
  <li>`pinterest`: ширина 1080px, висота 1920px.</li>
  <li>`tiktok`: ширина 1080px, висота 1920px.</li>
  <li>`twitter`: ширина 1600px, висота 900px.</li>
</ul>

Зверніть увагу: зміна розміру до цих значень не обріже зображення.
Якщо потрібно обрізати зображення, використайте параметр `mode` зі значенням `crop` разом із полями `dimensions`, `xCoordinate` та `yCoordinate`.

### Mode

#### Resize

Resize — типовий режим, який змінює розміри зображення зі збереженням його пропорцій.
Змінити розмір зображення до вказаних розмірів без обрізання будь-якого вмісту.

Приклад JSON:

```json Resize theme={"system"}
{
  "mediaUrl": "https://img.ayrshare.com/012/gb.jpg",
  "platform": "instagram",
  "mode": "resize"
}
```

Ви також можете вказати власні розміри через поле `dimensions`:

```json Resize with Dimensions theme={"system"}
{
  "mediaUrl": "https://img.ayrshare.com/012/gb.jpg",
  "mode": "resize",
  "dimensions": {
    "width": 800,
    "height": 600
  }
}
```

Має бути вказано або `platform`, або поля `width` та `height` у `dimensions`.

#### Crop

Crop «обріже» зображення до вказаних розмірів. За замовчуванням центральною координатою є центр зображення. Ви можете вказати власні координати x/y.

Приклад JSON:

```json Crop theme={"system"}
{
  "mediaUrl": "https://img.ayrshare.com/012/gb.jpg",
  "platform": "instagram",
  "mode": "crop"
}
```

Ви також можете вказати власні розміри та необов'язкові координати обрізання через поле `dimensions`:

```json Crop with Dimensions theme={"system"}
{
  "mediaUrl": "https://img.ayrshare.com/012/gb.jpg",
  "mode": "crop",
  "dimensions": {
    "width": 1080,
    "height": 1080,
    "xCoordinate": 35,
    "yCoordinate": 50
  }
}
```

Має бути вказано або `platform`, або поля `width` та `height` у `dimensions`.

Для квадратних обрізань, якщо `width` або `height` менше розмірів наданого зображення, буде використано менше з `width` або `height`. Наприклад, якщо зображення 1200x800, а запит на обрізання — 1080x1080, повернене зображення буде 800x800.

#### Blur

Ефект розмиття дублює зображення як фон і розмиває його.

Приклад JSON для blur:

```json Blur theme={"system"}
{
  "mediaUrl": "https://img.ayrshare.com/012/gb.jpg",
  "platform": "instagram",
  "mode": "blur"
}
```

Приклад розмитого зображення:

<img src="https://mintcdn.com/ayrshare/XRYzr5UdPjyr_kPK/images/apis/media/blur.webp?fit=max&auto=format&n=XRYzr5UdPjyr_kPK&q=85&s=8267a09d89389d8c2569d074bfb39c39" alt="Фон із розмиттям" width="1080" height="1080" data-path="images/apis/media/blur.webp" />

### Watermark

#### Огляд водяного знака

Ви можете додати водяний знак до зображення, вказавши URL, який має починатися з `https://`, та необов'язкове положення.
За замовчуванням водяний знак з'являється в нижньому правому куті зображення — `southeast`.

Рекомендуємо використовувати PNG із прозорим фоном.

Приклад JSON для watermark:

```json Watermark theme={"system"}
{
  "mediaUrl": "https://img.ayrshare.com/random/photo-13.jpg",
  "platform": "instagram",
  "watermark": {
    "url": "https://img.ayrshare.com/012/100-percent.png",
    "position": "northeast" // optional
  }
}
```

Приклад зображення з водяним знаком у позиції southeast:

<img src="https://mintcdn.com/ayrshare/XRYzr5UdPjyr_kPK/images/apis/media/watermark.webp?fit=max&auto=format&n=XRYzr5UdPjyr_kPK&q=85&s=f11b147362574fae2cc9c7eaccdcaf86" alt="Додати водяний знак" width="1080" height="1080" data-path="images/apis/media/watermark.webp" />

#### Положення водяного знака

Положення водяного знака може бути одним із наступних:

<ul class="custom-bullets">
  <li>`north`</li>
  <li>`northeast`</li>
  <li>`east`</li>
  <li>`southeast`</li>
  <li>`south`</li>
  <li>`southwest`</li>
  <li>`west`</li>
  <li>`northwest`</li>
  <li>`center`</li>
</ul>

### Опції ефектів

#### Шістнадцятковий колір

Шістнадцяткове значення кольору фону для blur. Застосовується лише якщо `"mode": "blur"`. Значення рядкове, наприклад `"#A020F0"`

Приклад JSON із кольоровим фоном:

```json Color Background theme={"system"}
{
  "mediaUrl": "https://img.ayrshare.com/012/gb.jpg",
  "platform": "instagram",
  "mode": "blur",
  "effects": {
    "color": "#A020F0"
  }
}
```

Приклад зображення з кольоровим фоном:

<img src="https://mintcdn.com/ayrshare/XRYzr5UdPjyr_kPK/images/apis/media/color-background.webp?fit=max&auto=format&n=XRYzr5UdPjyr_kPK&q=85&s=2d69c8f9c1145f2655c90ef13226c93c" alt="Додати кольоровий фон" width="1080" height="1080" data-path="images/apis/media/color-background.webp" />

#### Колір: Grayscale, Sepia, Invert

Ви можете змінити основний колір зображення, вказавши `grayscale`, `sepia` або `invert`. Поле `"blur": true` не потрібне і не повинно використовуватися, якщо фон не потрібен.

Приклад JSON grayscale:

```json Grayscale theme={"system"}
{
  "mediaUrl": "https://img.ayrshare.com/random/photo-13.jpg",
  "platform": "instagram",
  "effects": {
    "color": "grayscale"
  }
}
```

Приклад зображення grayscale:

<img src="https://mintcdn.com/ayrshare/XRYzr5UdPjyr_kPK/images/apis/media/grayscale.webp?fit=max&auto=format&n=XRYzr5UdPjyr_kPK&q=85&s=e8aac84e84b2879a0dbc113bd9d67c66" alt="Додати grayscale" width="1080" height="1080" data-path="images/apis/media/grayscale.webp" />

#### Прозорість

Установіть прозорість зображення. Діапазон числового значення: 0 – 1.

Приклад JSON opacity:

```json Opacity theme={"system"}
{
  "effects": {
    "opacity": 0.2
  }
}
```

#### Якість

Для зображень JPG або JPEG вкажіть якість або ступінь стиснення зображення.
Чим менше число, тим більше стиснення, але нижча якість зображення.
Чим більше число, тим менше стиснення, але вища якість зображення. Діапазон числового значення: 0 – 100.

Приклад JSON quality:

```json Quality theme={"system"}
{
  "effects": {
    "quality": 20
  }
}
```

### Конвертація в JPG або WebP

Опції `convertToJpg` і `convertToWebP` дозволяють перетворити зображення з їхнього початкового формату (наприклад, PNG) на формат JPG або WebP відповідно.
За замовчуванням конвертовані зображення матимуть налаштування якості 75%.

Ви можете налаштувати рівень стиснення за допомогою параметра [quality](/apis/media/resize#quality) у об'єкті effects.

Зверніть увагу: якщо ваше джерело вже є JPG і ви використовуєте `convertToJpg`, API просто змінить розмір зображення до вказаних розмірів без зміни формату.

Приклад конвертації в JPG:

```json Convert to JPG theme={"system"}
{
  "convertToJpg": true
}
```

Приклад конвертації в WebP:

```json Convert to WebP theme={"system"}
{
  "convertToWebP": true
}
```

<RequestExample>
  ```bash cURL theme={"system"}
    curl \
    -H "Authorization: Bearer API_KEY" \
    -H 'Content-Type: application/json' \
    -d '{"mediaUrl": "https://img.ayrshare.com/012/gb.jpg", "platform": "instagram"' \
    -X POST https://api.ayrshare.com/api/media/resize
  ```

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

  fetch("https://api.ayrshare.com/api/media/resize", {
    method: "POST",
    headers: {
      "Content-Type": "application/json",
      Authorization: `Bearer ${API_KEY}`
    },
    body: JSON.stringify({
      mediaUrl: "https://img.ayrshare.com/012/gb.jpg", // required
      platform: "instagram"
    })
  })
    .then((res) => res.json())
    .then((json) => console.log(json))
    .catch(console.error);
  ```

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

  payload = {'mediaUrl': 'https://img.ayrshare.com/012/gb.jpg',
          'platforms': 'instagram'}
  headers = {'Content-Type': 'application/json',
          'Authorization': 'Bearer API_KEY'}

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

  print(r.json())
  ```

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

  $curl = curl_init();
  $data = array (
    "mediaUrl" => "https://img.ayrshare.com/012/gb.jpg",
    "platforms" => "instagram"
  );

  curl_setopt_array($curl, array(
    CURLOPT_URL => 'https://api.ayrshare.com/api/media/resize',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => '',
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 0,
    CURLOPT_FOLLOWLOCATION => true,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => 'POST',
    CURLOPT_POSTFIELDS => http_build_query($data),
    CURLOPT_HTTPHEADER => array(
      'Authorization: Bearer API_KEY',
      'Accept-Encoding: gzip'
    ),
  ));

  $response = curl_exec($curl);
  curl_close($curl);
  echo $response;
  ```

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

  public class AyrshareApiClient
  {
      private readonly HttpClient _httpClient;
      private readonly string _apiKey;
      private const string BaseUrl = "https://api.ayrshare.com/api";

      public AyrshareApiClient(string apiKey)
      {
          _apiKey = apiKey ?? throw new ArgumentNullException(nameof(apiKey));
          _httpClient = new HttpClient();
          _httpClient.DefaultRequestHeaders.Add("Authorization", $"Bearer {_apiKey}");
      }

      public async Task<string> ResizeMediaAsync(string mediaUrl, string platform)
      {
          try
          {
              var requestData = new
              {
                  mediaUrl = mediaUrl,
                  platform = platform
              };

              var content = new StringContent(
                  JsonSerializer.Serialize(requestData),
                  Encoding.UTF8,
                  "application/json"
              );

              var response = await _httpClient.PostAsync($"{BaseUrl}/media/resize", content);
              response.EnsureSuccessStatusCode();

              var jsonResponse = await response.Content.ReadAsStringAsync();
              return jsonResponse;
          }
          catch (HttpRequestException ex)
          {
              throw new Exception($"Failed to resize media: {ex.Message}", ex);
          }
      }

      public void Dispose()
      {
          _httpClient.Dispose();
      }
  }
  ```
</RequestExample>

<ResponseExample>
  ```json 200: Success theme={"system"}
  {
    "status": "success",
    "url": "https://media.ayrshare.com/9abf1426d6ce9122ef11c72bd62e59807c5cc083/8UbyBjHTxgHkAC1I37e6O.jpg",
    "platform": "instagram",
    "mode": "blur",
    "effects": {
      "color": "#A020F0"
    }
  }
  ```

  ```json 400: Failed Resize theme={"system"}
  {
    "action": "resize",
    "status": "error",
    "code": 312,
    "message": "Invalid extension type. Extension: null. Please verify the extension is one of the following: png, jpg, jpeg and the file is accessible."
  }
  ```
</ResponseExample>
