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
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);
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
$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;
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();
}
}
{
"status": "success",
"url": "https://media.ayrshare.com/9abf1426d6ce9122ef11c72bd62e59807c5cc083/8UbyBjHTxgHkAC1I37e6O.jpg",
"platform": "instagram",
"mode": "blur",
"effects": {
"color": "#A020F0"
}
}
{
"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."
}
Media
Змінити розмір зображення
Змініть розмір зображення до розмірів соцмереж, додайте водяні знаки або обріжте
POST
/
media
/
resize
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
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);
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
$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;
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();
}
}
{
"status": "success",
"url": "https://media.ayrshare.com/9abf1426d6ce9122ef11c72bd62e59807c5cc083/8UbyBjHTxgHkAC1I37e6O.jpg",
"platform": "instagram",
"mode": "blur",
"effects": {
"color": "#A020F0"
}
}
{
"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."
}
Соціальні мережі мають специфічні вимоги до зображень. Ендпоінт resize дозволяє вибрати сумісний із соцмережею розмір зображення, додати водяні знаки, змінити фон, додати ефекти, обрізати тощо.
За замовчуванням зміна розміру змінює розміри зображення, але не обрізає його. Ви можете натомість обрізати зображення. Деталі див. нижче.
Ви також можете вказати власні розміри через поле
Має бути вказано або
Ви також можете вказати власні розміри та необов’язкові координати обрізання через поле
Має бути вказано або
Приклад розмитого зображення:
Приклад зображення з водяним знаком у позиції southeast:
Приклад зображення з кольоровим фоном:
Приклад зображення grayscale:
Приклад конвертації в WebP:
Параметри заголовка
Параметри тіла запиту
string
обов'язково
URL зображення, розмір якого потрібно змінити. Має починатися з
https://array
обов'язково
Платформа соцмережі, для якої буде змінено розмір за URL. Деталі див. у розділі опції платформ.
object
Надішліть медіафайл як multipart form-data. Обов’язковий, якщо не надано
imageUrl.object
URL і необов’язкове положення водяного знака, який застосовується до зображення зі зміненим розміром. За замовчуванням водяний знак з’являється
в нижньому правому куті зображення. Деталі див. у розділі watermark.
string
Зміна прозорості, кольорів тощо. Деталі див. у розділі опції ефектів.
object
Об’єкт, що вказує
width і height для зміни розміру. При обрізанні можна додатково вказати координати центру x і y.
Типово — це центр зображення.Dimensions
{
"width": 500,
"height": 500,
"xCoordinate": 35, // optional for crop mode
"yCoordinate": 50 // optional for crop mode
}
Ширина й висота обов’язкові, якщо платформа не вказана.
boolean
Автоматично конвертувати у файл JPG, наприклад з PNG у JPG. Використовуватиметься якість 75%.
Деталі див. у розділі convert to a JPG.
boolean
Автоматично конвертувати у файл WebP, наприклад з PNG у WebP. Використовуватиметься якість 75%.
Деталі див. у розділі convert to a WebP.
Опції платформ
Укажіть платформу як рядок, щоб використати попередньо визначені розміри зображення, або задайте власні через полеdimensions.
Наприклад, "platform": "facebook" задасть розміри зображення 1200px по ширині та 630px по висоті.
facebook: ширина 1200px, висота 630px.instagram: ширина 1080px, висота 1080px.instagram_landscape: ширина 1080px, висота 680px.instagram_portrait: ширина 1080px, висота 1920px.instagram_special: ширина 1080px, висота 800px.linkedin: ширина 1200px, висота 627px.pinterest: ширина 1080px, висота 1920px.tiktok: ширина 1080px, висота 1920px.twitter: ширина 1600px, висота 900px.
mode зі значенням crop разом із полями dimensions, xCoordinate та yCoordinate.
Mode
Resize
Resize — типовий режим, який змінює розміри зображення зі збереженням його пропорцій. Змінити розмір зображення до вказаних розмірів без обрізання будь-якого вмісту. Приклад JSON:Resize
{
"mediaUrl": "https://img.ayrshare.com/012/gb.jpg",
"platform": "instagram",
"mode": "resize"
}
dimensions:
Resize with Dimensions
{
"mediaUrl": "https://img.ayrshare.com/012/gb.jpg",
"mode": "resize",
"dimensions": {
"width": 800,
"height": 600
}
}
platform, або поля width та height у dimensions.
Crop
Crop «обріже» зображення до вказаних розмірів. За замовчуванням центральною координатою є центр зображення. Ви можете вказати власні координати x/y. Приклад JSON:Crop
{
"mediaUrl": "https://img.ayrshare.com/012/gb.jpg",
"platform": "instagram",
"mode": "crop"
}
dimensions:
Crop with Dimensions
{
"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:Blur
{
"mediaUrl": "https://img.ayrshare.com/012/gb.jpg",
"platform": "instagram",
"mode": "blur"
}
Watermark
Огляд водяного знака
Ви можете додати водяний знак до зображення, вказавши URL, який має починатися зhttps://, та необов’язкове положення.
За замовчуванням водяний знак з’являється в нижньому правому куті зображення — southeast.
Рекомендуємо використовувати PNG із прозорим фоном.
Приклад JSON для watermark:
Watermark
{
"mediaUrl": "https://img.ayrshare.com/random/photo-13.jpg",
"platform": "instagram",
"watermark": {
"url": "https://img.ayrshare.com/012/100-percent.png",
"position": "northeast" // optional
}
}
Положення водяного знака
Положення водяного знака може бути одним із наступних:northnortheasteastsoutheastsouthsouthwestwestnorthwestcenter
Опції ефектів
Шістнадцятковий колір
Шістнадцяткове значення кольору фону для blur. Застосовується лише якщо"mode": "blur". Значення рядкове, наприклад "#A020F0"
Приклад JSON із кольоровим фоном:
Color Background
{
"mediaUrl": "https://img.ayrshare.com/012/gb.jpg",
"platform": "instagram",
"mode": "blur",
"effects": {
"color": "#A020F0"
}
}
Колір: Grayscale, Sepia, Invert
Ви можете змінити основний колір зображення, вказавшиgrayscale, sepia або invert. Поле "blur": true не потрібне і не повинно використовуватися, якщо фон не потрібен.
Приклад JSON grayscale:
Grayscale
{
"mediaUrl": "https://img.ayrshare.com/random/photo-13.jpg",
"platform": "instagram",
"effects": {
"color": "grayscale"
}
}
Прозорість
Установіть прозорість зображення. Діапазон числового значення: 0 – 1. Приклад JSON opacity:Opacity
{
"effects": {
"opacity": 0.2
}
}
Якість
Для зображень JPG або JPEG вкажіть якість або ступінь стиснення зображення. Чим менше число, тим більше стиснення, але нижча якість зображення. Чим більше число, тим менше стиснення, але вища якість зображення. Діапазон числового значення: 0 – 100. Приклад JSON quality:Quality
{
"effects": {
"quality": 20
}
}
Конвертація в JPG або WebP
ОпціїconvertToJpg і convertToWebP дозволяють перетворити зображення з їхнього початкового формату (наприклад, PNG) на формат JPG або WebP відповідно.
За замовчуванням конвертовані зображення матимуть налаштування якості 75%.
Ви можете налаштувати рівень стиснення за допомогою параметра quality у об’єкті effects.
Зверніть увагу: якщо ваше джерело вже є JPG і ви використовуєте convertToJpg, API просто змінить розмір зображення до вказаних розмірів без зміни формату.
Приклад конвертації в JPG:
Convert to JPG
{
"convertToJpg": true
}
Convert to WebP
{
"convertToWebP": true
}
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
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);
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
$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;
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();
}
}
{
"status": "success",
"url": "https://media.ayrshare.com/9abf1426d6ce9122ef11c72bd62e59807c5cc083/8UbyBjHTxgHkAC1I37e6O.jpg",
"platform": "instagram",
"mode": "blur",
"effects": {
"color": "#A020F0"
}
}
{
"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."
}