curl -X POST https://api.ayrshare.com/api/ads/instagram/boost \
-H "Authorization: Bearer API_KEY" \
-H "Content-Type: application/json" \
-d '{
"postId": "1234567890",
"accountId": "1234567890",
"adName": "My Ad",
"status": "active",
"goal": "engagement",
"minAge": 18,
"maxAge": 65,
"locations": {"countries": ["US"]},
"budget": 100,
"bidAmount": 1,
"startDate": "2025-03-01T00:00:00Z",
"endDate": "2025-03-07T23:59:59Z",
"interests": [1234567890, 1234567891]
}'
const API_KEY = "API_KEY";
fetch("https://api.ayrshare.com/api/ads/instagram/boost", {
method: "POST",
headers: {
"Content-Type": "application/json",
Authorization: `Bearer ${API_KEY}`
},
body: JSON.stringify({
postId: "1234567890",
accountId: "1234567890",
adName: "My Ad",
status: "active",
goal: "engagement",
minAge: 18,
maxAge: 65,
locations: { countries: ["US"] },
budget: 100,
bidAmount: 1,
startDate: "2025-03-01T00:00:00Z",
endDate: "2025-03-07T23:59:59Z",
interests: [1234567890, 1234567891]
})
})
.then((res) => res.json())
.then((json) => console.log(json))
.catch(console.error);
import requests
API_KEY = "API_KEY"
url = "https://api.ayrshare.com/api/ads/instagram/boost"
payload = {
"postId": "1234567890",
"accountId": "1234567890",
"adName": "My Ad",
"status": "active",
"goal": "engagement",
"minAge": 18,
"maxAge": 65,
"locations": {"countries": ["US"]},
"budget": 100,
"bidAmount": 1,
"startDate": "2025-03-01T00:00:00Z",
"endDate": "2025-03-07T23:59:59Z",
"interests": [1234567890, 1234567891]
}
response = requests.post(url, headers={"Authorization": f"Bearer {API_KEY}", "Content-Type": "application/json"}, json=payload)
print(response.json())
<?php
$API_KEY = "API_KEY";
$payload = [
"postId" => "1234567890",
"accountId" => "1234567890",
"adName" => "My Ad",
"status" => "active",
"goal" => "engagement",
"minAge" => 18,
"maxAge" => 65,
"locations" => ["countries" => ["US"]],
"budget" => 100,
"bidAmount" => 1,
"startDate" => "2025-03-01T00:00:00Z",
"endDate" => "2025-03-07T23:59:59Z",
"interests" => [1234567890, 1234567891]
];
$ch = curl_init("https://api.ayrshare.com/api/ads/instagram/boost");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($payload));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Content-Type: application/json",
"Authorization: Bearer " . $API_KEY
]);
$response = curl_exec($ch);
$result = json_decode($response, true);
print_r($result);
curl_close($ch);
using System;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;
using System.Text.Json;
using System.Threading.Tasks;
class Program
{
static async Task Main()
{
string API_KEY = "API_KEY";
var payload = new
{
postId = "1234567890",
accountId = "1234567890",
adName = "My Ad",
status = "active",
goal = "engagement",
minAge = 18,
maxAge = 65,
locations = new { countries = new[] { "US" } },
budget = 100,
bidAmount = 1,
startDate = "2025-03-01T00:00:00Z",
endDate = "2025-03-07T23:59:59Z",
interests = new[] { 1234567890, 1234567891 }
};
using var client = new HttpClient();
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", API_KEY);
var content = new StringContent(
JsonSerializer.Serialize(payload),
Encoding.UTF8,
"application/json"
);
var response = await client.PostAsync("https://api.ayrshare.com/api/ads/instagram/boost", content);
var responseBody = await response.Content.ReadAsStringAsync();
Console.WriteLine(responseBody);
}
}
package main
import (
"bytes"
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
)
func main() {
apiKey := "API_KEY"
payload := map[string]interface{}{
"postId": "1234567890",
"accountId": "1234567890",
"adName": "My Ad",
"status": "active",
"goal": "engagement",
"minAge": 18,
"maxAge": 65,
"locations": map[string]interface{}{"countries": []string{"US"}},
"budget": 100,
"bidAmount": 1,
"startDate": "2025-03-01T00:00:00Z",
"endDate": "2025-03-07T23:59:59Z",
"interests": []int{1234567890, 1234567891},
}
jsonData, err := json.Marshal(payload)
if err != nil {
fmt.Println("Error marshaling JSON:", err)
return
}
req, err := http.NewRequest("POST", "https://api.ayrshare.com/api/ads/instagram/boost", bytes.NewBuffer(jsonData))
if err != nil {
fmt.Println("Error creating request:", err)
return
}
req.Header.Set("Content-Type", "application/json")
req.Header.Set("Authorization", "Bearer "+apiKey)
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
fmt.Println("Error sending request:", err)
return
}
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
fmt.Println("Error reading response:", err)
return
}
fmt.Println(string(body))
}
import java.io.IOException;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
import com.fasterxml.jackson.databind.ObjectMapper;
public class BoostPost {
public static void main(String[] args) {
String API_KEY = "API_KEY";
String url = "https://api.ayrshare.com/api/ads/instagram/boost";
Map<String, Object> payload = new HashMap<>();
payload.put("postId", "1234567890");
payload.put("accountId", "1234567890");
payload.put("adName", "My Ad");
payload.put("status", "active");
payload.put("goal", "engagement");
payload.put("minAge", 18);
payload.put("maxAge", 65);
payload.put("locations", Map.of("countries", Arrays.asList("US")));
payload.put("budget", 100);
payload.put("bidAmount", 1);
payload.put("startDate", "2025-03-01T00:00:00Z");
payload.put("endDate", "2025-03-07T23:59:59Z");
payload.put("interests", Arrays.asList(1234567890, 1234567891));
try {
ObjectMapper objectMapper = new ObjectMapper();
String requestBody = objectMapper.writeValueAsString(payload);
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(url))
.header("Content-Type", "application/json")
.header("Authorization", "Bearer " + API_KEY)
.POST(HttpRequest.BodyPublishers.ofString(requestBody))
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
} catch (IOException | InterruptedException e) {
e.printStackTrace();
}
}
}
require 'net/http'
require 'uri'
require 'json'
API_KEY = "API_KEY"
uri = URI.parse("https://api.ayrshare.com/api/ads/instagram/boost")
payload = {
postId: "1234567890",
accountId: "1234567890",
adName: "My Ad",
status: "active",
goal: "engagement",
minAge: 18,
maxAge: 65,
locations: { countries: ["US"] },
budget: 100,
bidAmount: 1,
startDate: "2025-03-01T00:00:00Z",
endDate: "2025-03-07T23:59:59Z",
interests: [1234567890, 1234567891]
}
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Post.new(uri.request_uri)
request["Content-Type"] = "application/json"
request["Authorization"] = "Bearer #{API_KEY}"
request.body = payload.to_json
response = http.request(request)
puts response.body
{
"status": "success",
"adId": "120217670757750410",
"adName": "API Post - DE6gpw8kxlonHy2b7Lo - 2025-03-26T23:42:43",
"adStatus": "active",
"bidAmount": 10,
"budget": 100,
"endDate": "2026-03-28T22:30:00Z",
"goal": {
"title": "Get More Engagement",
"description": "This goal seeks to increase engagement...",
"type": "engagement"
},
"interests": [
"6003195554098"
],
"locations": {"countries": ["US"]},
"maxAge": 65,
"minAge": 18,
"postId": "DE6gpw8kxlonHy2b7Lo",
"socialPostId": "1234567890",
"igPostId": "1234567890",
"platform": "instagram",
"startDate": "2026-03-26T22:30:00Z"
}
{
"action": "boost post",
"status": "error",
"code": 369,
"message": "Unable to boost post. Please try again or contact us if the issue persists.",
"details": "The accountId likely does not exist. Please check the accountId and try again."
}
{
"action": "request",
"status": "error",
"code": 101,
"message": "Missing or incorrect parameters. Please verify with the docs. https://www.ayrshare.com/docs/apis",
"details": "Missing required fields: accountId"
}
Instagram Ads
Просування допису
Просувайте допис, надіславши його на рекламну платформу Instagram
POST
/
ads
/
instagram
/
boost
curl -X POST https://api.ayrshare.com/api/ads/instagram/boost \
-H "Authorization: Bearer API_KEY" \
-H "Content-Type: application/json" \
-d '{
"postId": "1234567890",
"accountId": "1234567890",
"adName": "My Ad",
"status": "active",
"goal": "engagement",
"minAge": 18,
"maxAge": 65,
"locations": {"countries": ["US"]},
"budget": 100,
"bidAmount": 1,
"startDate": "2025-03-01T00:00:00Z",
"endDate": "2025-03-07T23:59:59Z",
"interests": [1234567890, 1234567891]
}'
const API_KEY = "API_KEY";
fetch("https://api.ayrshare.com/api/ads/instagram/boost", {
method: "POST",
headers: {
"Content-Type": "application/json",
Authorization: `Bearer ${API_KEY}`
},
body: JSON.stringify({
postId: "1234567890",
accountId: "1234567890",
adName: "My Ad",
status: "active",
goal: "engagement",
minAge: 18,
maxAge: 65,
locations: { countries: ["US"] },
budget: 100,
bidAmount: 1,
startDate: "2025-03-01T00:00:00Z",
endDate: "2025-03-07T23:59:59Z",
interests: [1234567890, 1234567891]
})
})
.then((res) => res.json())
.then((json) => console.log(json))
.catch(console.error);
import requests
API_KEY = "API_KEY"
url = "https://api.ayrshare.com/api/ads/instagram/boost"
payload = {
"postId": "1234567890",
"accountId": "1234567890",
"adName": "My Ad",
"status": "active",
"goal": "engagement",
"minAge": 18,
"maxAge": 65,
"locations": {"countries": ["US"]},
"budget": 100,
"bidAmount": 1,
"startDate": "2025-03-01T00:00:00Z",
"endDate": "2025-03-07T23:59:59Z",
"interests": [1234567890, 1234567891]
}
response = requests.post(url, headers={"Authorization": f"Bearer {API_KEY}", "Content-Type": "application/json"}, json=payload)
print(response.json())
<?php
$API_KEY = "API_KEY";
$payload = [
"postId" => "1234567890",
"accountId" => "1234567890",
"adName" => "My Ad",
"status" => "active",
"goal" => "engagement",
"minAge" => 18,
"maxAge" => 65,
"locations" => ["countries" => ["US"]],
"budget" => 100,
"bidAmount" => 1,
"startDate" => "2025-03-01T00:00:00Z",
"endDate" => "2025-03-07T23:59:59Z",
"interests" => [1234567890, 1234567891]
];
$ch = curl_init("https://api.ayrshare.com/api/ads/instagram/boost");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($payload));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Content-Type: application/json",
"Authorization: Bearer " . $API_KEY
]);
$response = curl_exec($ch);
$result = json_decode($response, true);
print_r($result);
curl_close($ch);
using System;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;
using System.Text.Json;
using System.Threading.Tasks;
class Program
{
static async Task Main()
{
string API_KEY = "API_KEY";
var payload = new
{
postId = "1234567890",
accountId = "1234567890",
adName = "My Ad",
status = "active",
goal = "engagement",
minAge = 18,
maxAge = 65,
locations = new { countries = new[] { "US" } },
budget = 100,
bidAmount = 1,
startDate = "2025-03-01T00:00:00Z",
endDate = "2025-03-07T23:59:59Z",
interests = new[] { 1234567890, 1234567891 }
};
using var client = new HttpClient();
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", API_KEY);
var content = new StringContent(
JsonSerializer.Serialize(payload),
Encoding.UTF8,
"application/json"
);
var response = await client.PostAsync("https://api.ayrshare.com/api/ads/instagram/boost", content);
var responseBody = await response.Content.ReadAsStringAsync();
Console.WriteLine(responseBody);
}
}
package main
import (
"bytes"
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
)
func main() {
apiKey := "API_KEY"
payload := map[string]interface{}{
"postId": "1234567890",
"accountId": "1234567890",
"adName": "My Ad",
"status": "active",
"goal": "engagement",
"minAge": 18,
"maxAge": 65,
"locations": map[string]interface{}{"countries": []string{"US"}},
"budget": 100,
"bidAmount": 1,
"startDate": "2025-03-01T00:00:00Z",
"endDate": "2025-03-07T23:59:59Z",
"interests": []int{1234567890, 1234567891},
}
jsonData, err := json.Marshal(payload)
if err != nil {
fmt.Println("Error marshaling JSON:", err)
return
}
req, err := http.NewRequest("POST", "https://api.ayrshare.com/api/ads/instagram/boost", bytes.NewBuffer(jsonData))
if err != nil {
fmt.Println("Error creating request:", err)
return
}
req.Header.Set("Content-Type", "application/json")
req.Header.Set("Authorization", "Bearer "+apiKey)
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
fmt.Println("Error sending request:", err)
return
}
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
fmt.Println("Error reading response:", err)
return
}
fmt.Println(string(body))
}
import java.io.IOException;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
import com.fasterxml.jackson.databind.ObjectMapper;
public class BoostPost {
public static void main(String[] args) {
String API_KEY = "API_KEY";
String url = "https://api.ayrshare.com/api/ads/instagram/boost";
Map<String, Object> payload = new HashMap<>();
payload.put("postId", "1234567890");
payload.put("accountId", "1234567890");
payload.put("adName", "My Ad");
payload.put("status", "active");
payload.put("goal", "engagement");
payload.put("minAge", 18);
payload.put("maxAge", 65);
payload.put("locations", Map.of("countries", Arrays.asList("US")));
payload.put("budget", 100);
payload.put("bidAmount", 1);
payload.put("startDate", "2025-03-01T00:00:00Z");
payload.put("endDate", "2025-03-07T23:59:59Z");
payload.put("interests", Arrays.asList(1234567890, 1234567891));
try {
ObjectMapper objectMapper = new ObjectMapper();
String requestBody = objectMapper.writeValueAsString(payload);
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(url))
.header("Content-Type", "application/json")
.header("Authorization", "Bearer " + API_KEY)
.POST(HttpRequest.BodyPublishers.ofString(requestBody))
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
} catch (IOException | InterruptedException e) {
e.printStackTrace();
}
}
}
require 'net/http'
require 'uri'
require 'json'
API_KEY = "API_KEY"
uri = URI.parse("https://api.ayrshare.com/api/ads/instagram/boost")
payload = {
postId: "1234567890",
accountId: "1234567890",
adName: "My Ad",
status: "active",
goal: "engagement",
minAge: 18,
maxAge: 65,
locations: { countries: ["US"] },
budget: 100,
bidAmount: 1,
startDate: "2025-03-01T00:00:00Z",
endDate: "2025-03-07T23:59:59Z",
interests: [1234567890, 1234567891]
}
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Post.new(uri.request_uri)
request["Content-Type"] = "application/json"
request["Authorization"] = "Bearer #{API_KEY}"
request.body = payload.to_json
response = http.request(request)
puts response.body
{
"status": "success",
"adId": "120217670757750410",
"adName": "API Post - DE6gpw8kxlonHy2b7Lo - 2025-03-26T23:42:43",
"adStatus": "active",
"bidAmount": 10,
"budget": 100,
"endDate": "2026-03-28T22:30:00Z",
"goal": {
"title": "Get More Engagement",
"description": "This goal seeks to increase engagement...",
"type": "engagement"
},
"interests": [
"6003195554098"
],
"locations": {"countries": ["US"]},
"maxAge": 65,
"minAge": 18,
"postId": "DE6gpw8kxlonHy2b7Lo",
"socialPostId": "1234567890",
"igPostId": "1234567890",
"platform": "instagram",
"startDate": "2026-03-26T22:30:00Z"
}
{
"action": "boost post",
"status": "error",
"code": 369,
"message": "Unable to boost post. Please try again or contact us if the issue persists.",
"details": "The accountId likely does not exist. Please check the accountId and try again."
}
{
"action": "request",
"status": "error",
"code": 101,
"message": "Missing or incorrect parameters. Please verify with the docs. https://www.ayrshare.com/docs/apis",
"details": "Missing required fields: accountId"
}
Просувайте наявний допис в Instagram для створення реклами.
Цей ендпоінт дає змогу перетворювати ваші органічні дописи на платні оголошення з користувацькими параметрами таргетингу, бюджету та планування.
Селектор
Замініть приклади ID на власні. Встановіть
- Суми бюджету та ставки мають бути вказані в USD з точністю до двох десяткових знаків.
- Оголошення має тривати щонайменше 30 годин, щоб відповідати вимозі Instagram.
- Ви можете використати ендпоінт інтересів, щоб знайти ID інтересів для таргетингу.
- Instagram може знадобитися до 24 годин, щоб переглянути та схвалити просунуті дописи.
- Якщо ви використовуєте
socialPostIdбезпосередньо (замість AyrsharepostId), переконайтеся, що це коректний ID допису Instagram. - Якщо просування не вдається після того, як Facebook створив його кампанію (на етапі креативу, групи оголошень або оголошення), ми намагаємося видалити цю кампанію. Якщо видалення також не вдається, порожня кампанія залишається у вашому рекламному акаунті. Ви можете знайти й видалити її в Ads Manager.
Цілі оголошення
Кожне оголошення має мати ціль. Ціль визначає, як оголошення буде оптимізовано для показу.engagement: Ця ціль спрямована на підвищення залученості, водночас гарантуючи, що оголошення досягає максимальної кількості унікальних користувачів. Вона балансує між видимістю та залученістю, показуючи оголошення якомога більшій кількості різних людей, які можуть з ним взаємодіяти.interactions: Розроблена для підвищення взаємодії, як-от вподобання, коментарі та поширення оголошення. Instagram надає пріоритет показу оголошення користувачам, які найімовірніше з ним взаємодіятимуть.awareness_views: Зосереджується на підвищенні впізнаваності бренду, максимізуючи кількість разів, коли оголошення показується. Пріоритет — показати оголошення якомога більше разів у межах бюджету, незалежно від унікального охоплення.awareness_audience: Спрямована на підвищення впізнаваності бренду шляхом максимізації кількості унікальних людей, які бачать оголошення. Гарантує, що оголошення досягає якомога більшої кількості різних користувачів, і максимізує розмір унікальної аудиторії, а не показує його багато разів одній і тій самій аудиторії.
Реклама Instagram вимагає облікового запису Instagram Business, підключеного через Facebook, пов’язаної сторінки Facebook та дозволу
ads_management. Повторно підключіть обліковий запис через Facebook, щоб надати цей дозвіл. Облікові записи, підключені через Instagram Login, не можуть використовувати ці ендпоінти реклами. ID медіа та ID облікового запису Instagram визначаються з вашого підключеного облікового запису; не надсилайте instagram_user_id.socialPostId також приймає специфічний для Instagram псевдонім igPostId. fbPostId застосовується лише до Facebook. Успішні відповіді містять platform: "instagram", socialPostId та igPostId.
Параметри заголовка
Параметри тіла
string
Унікальний непорожній ключ для цього запиту на просування. Повторіть той самий запит із тим самим ключем, щоб уникнути створення дубліката оголошення. Повторне використання ключа з іншим вмістом запиту або іншою платформою повертає HTTP 409. Запит, який усе ще виконується, також повертає 409; недоступне резервування повертає 503 без створення оголошення.
boolean
за замовчуванням:false
Дозвольте Meta розподіляти бюджет між наборами оголошень у кампанії.
string
обов'язково
ID рекламного облікового запису Instagram, у якому потрібно просунути допис. ID облікового запису можна отримати з
ендпоінту рекламних облікових записів.
string
обов'язково
Назва вашого оголошення (відображається в Instagram Ad Manager) у форматі
{adName} - {postId or socialPostId} - {current date}.number
обов'язково
Максимальна сума ставки в USD — додатне значення з точністю до двох десяткових знаків.
number
обов'язково
Денний бюджет в USD. Використовуйте додатне значення з точністю до двох десяткових знаків. Meta може застосовувати додаткові мінімальні вимоги для вашого облікового запису та цілі.
string
ID соціального допису Instagram допису для просування, що дозволяє
створити оголошення з допису, створеного безпосередньо в Instagram. Це ID допису в
Instagram, а не Ayrshare. Обов’язковий, якщо
postId не задано.string
за замовчуванням:"engagement"
Ціль оголошення. Значення:
engagement, interactions, awareness_views та
awareness_audience. Див. деталі цілей оголошення вище
для отримання додаткової інформації.object
Таргетуйте країни за допомогою
{"countries": ["US", "CA"]}, використовуючи коди країн. Ви також можете надати масиви regions і cities; див. регіони та міста. Об’єкт, який не вказує жодної країни, регіону чи міста, як-от {}, відхиляється з кодом 101; щоб таргетувати США, не передавайте locations.string
Ayrshare post ID допису для просування. Обов’язковий, якщо
socialPostId не задано.string
за замовчуванням:"active"
Статус оголошення. Значення:
active та paused.Ви можете пізніше змінити статус оголошення за допомогою ендпоінту оновлення оголошення.object
Відстежуйте оголошення за допомогою Meta Pixel.
Показати child attributes
Показати child attributes
number
обов'язково
ID Meta Pixel для відстеження оголошення.
{
"pixelId": 1234567890
}
array
Додайте UTM-теги до URL оголошення.Наприклад, якщо посилання — це
{
"urlTags": ["utm_source=ayrshare", "utm_medium=social", "utm_campaign=ayrshare-social"]
}
https://www.mysite.com/my-post, а додані URL-теги:utm_source=ayrshare, utm_medium=social та utm_campaign=ayrshare-social.URL оголошення буде:
https://www.mysite.com/my-post?utm_source=ayrshare&utm_medium=social&utm_campaign=ayrshare-social.array
Meta вимагає, щоб рекламодавці у спеціальних категоріях реклами самостійно ідентифікували категорію своєї кампанії.Якщо ваш бізнес належить до однієї з цих категорій, ви маєте вибрати відповідну категорію під час просування допису.Підтримуються такі значення:
housing: Оголошення, що просувають або безпосередньо посилаються на можливість придбання житла або пов’язану послугу, включаючи, але не обмежуючись, оголошеннями про продаж або оренду будинку чи квартири, страхуванням домовласників, іпотечним страхуванням, іпотечними кредитами, ремонтом житла та послугами з оцінки або кредитування під заставу житла.financial_product_services: Оголошення, що просувають або безпосередньо посилаються на пропозицію фінансових продуктів і послуг, включаючи кредити.employment: Оголошення, що просувають або безпосередньо посилаються на можливість працевлаштування, включаючи, але не обмежуючись, роботами на неповний або повний робочий день, стажуванням або програмами професійної сертифікації. Пов’язані оголошення, які підпадають під цю категорію, включають промоакції для дошок оголошень про роботу або ярмарків, служб агрегації або оголошень, що детально описують переваги, які компанія може надати, незалежно від конкретної пропозиції роботи.issues_elections_politics: Оголошення, створені кандидатом на публічну посаду, від його імені або про нього, політичним діячем, політичною партією або такі, що виступають за результат виборів на публічну посаду. Це також включає оголошення про будь-які вибори, референдум чи ініціативу голосування, включаючи виборчі кампанії «Йдіть та голосуйте». Оголошення, що регулюються як політична реклама або стосуються соціальних питань у будь-якому місці, де розміщується оголошення. Якщо вибираєте питання, вибори або політику, ви маєте вибрати країну, у якій хочете розміщувати ці оголошення. Ви повинні мати авторизацію на розміщення оголошень про соціальні питання, вибори або політику у вказаній країні.
locations: країни, які ви вказали, а також країну кожного регіону та міста. Тож просування housing, яке націлене на місто у Великій Британії, налаштовується для Великої Британії без жодних додаткових даних у вашому запиті. Без locations реклама показується в США, і кампанія налаштовується для США.Meta також встановлює мінімальний радіус навколо кожного міста для цих категорій. Місто у Великій Британії з радіусом 17 кілометрів було відхилено з помилкою #2909039, яка вимагає щонайменше 25 кілометрів (15 миль), тому використовуйте 25 кілометрів або більше.Meta вимагає, щоб рекламодавці правильно ідентифікували категорію своєї кампанії.
Meta використовує людських рецензентів та машинне навчання для виявлення таких оголошень.
Якщо ви надішлете нам некоректну
specialAdCategories, існує ризик, що ваші оголошення буде призупинено до коригування кампанії.string
Особа або організація, що отримує вигоду від оголошення. Задається разом із
dsaPayor. Скористайтеся ендпоінтом DSA-рекомендацій для отримання пропозицій.string
Особа або організація, що платить за оголошення. Задається разом із
dsaBeneficiary.string
Дата й час завершення у форматі ISO 8601 (має бути щонайменше через 30 годин після початку), наприклад
2025-03-01T00:00:00Z.Якщо не задано, оголошення працюватиме нескінченно і матиме дату завершення ongoing.object
Виключіть локації, використовуючи ту саму структуру
countries, regions та cities, що й у locations.string
за замовчуванням:"all"
Стать аудиторії. Значення:
all, male, female.array
Цільові інтереси оголошення у вигляді масиву ID
інтересів Instagram.
number
за замовчуванням:65
Максимальний вік для таргетингу оголошення (за замовчуванням: 65).
number
за замовчуванням:18
Мінімальний вік для таргетингу оголошення (за замовчуванням: 18).
string
Дата й час початку у форматі ISO 8601, наприклад
2025-03-01T00:00:00Z.Якщо не задано, оголошення розпочнеться негайно.startDate і endDate відповідно до запланованого розкладу; дати в прикладах наведено для ілюстрації.
Бюджети кампаній
Щоб тримати бюджет на рівні кампанії, а не набору оголошень, надішлітьbudget.level: "campaign" у вкладеній формі. Тоді набір оголошень не має власного бюджету. Це працює як зі щоденним бюджетом, так і з бюджетом на весь період.
{
"accountId": "123456789",
"postId": "Ut1fWU6XkqkMayHGnJZ",
"goal": "engagement",
"budget": { "amount": 50, "type": "lifetime", "level": "campaign" },
"schedule": { "start": "2026-11-01T00:00:00Z", "end": "2026-11-08T00:00:00Z" },
"platformOptions": { "instagram": { "adName": "November boost", "bidAmount": 2 } }
}
budget.level:adSet(за замовчуванням) абоcampaign. Бюджет кампанії не можна поєднувати зadSetBudgetSharingEnabled. Якщо надіслати обидва параметри, запит буде відхилено з400іcode: 101.- Для бюджету кампанії відповідь додатково містить
budgetLevel: "campaign". Для бюджету набору оголошеньbudgetLevelне повертається, тож вважайте відсутнє поле значеннямadSet. - В Історії для оголошення зі щоденним бюджетом кампанії
budgetDailyпоказує щоденний бюджет кампанії. Якщо кілька оголошень спільно використовують один бюджет кампанії, кожне показує весь бюджет кампанії, а не свою частку. Історія не показує бюджети на весь період ні для кампанії, ні для набору оголошень. Коли бюджет кампанії на весь період вичерпано, кожне оголошення в цій кампанії показуєdeliveryStatus: "COMPLETED"після наступного нічного оновлення, зокрема й оголошення, яке заплановане або перебуває на перевірці. Відхилене оголошення залишається в статусіREJECTED.
Просування в наявну кампанію або набір оголошень
За замовчуванням кожне просування створює власну кампанію, набір оголошень і оголошення. Щоб додати просування до кампанії або набору оголошень, які ви вже ведете в Meta, надішліть вкладену форму зattachTo.
attachTo.campaignId: просування створює новий набір оголошень і оголошення в цій кампанії. Надсилайтеbudget,targetingіbidAmountяк зазвичай: вони застосовуються до нового набору оголошень.attachTo.adSetId: просування створює лише оголошення в цьому наборі оголошень. Також надішлітьattachTo.campaignId, тобто кампанію, до якої належить набір оголошень. Не передавайтеbudget,targetingіplatformOptions.instagram.bidAmount: набір оголошень зберігає власні значення. Якщо надіслати будь-який із них, буде повернено400зcode: 101.
{
"accountId": "123456789",
"postId": "Ut1fWU6XkqkMayHGnJZ",
"goal": "engagement",
"attachTo": { "campaignId": "120210000000000001", "adSetId": "120210000000000002" },
"platformOptions": { "instagram": { "adName": "November boost" } }
}
- Кампанія або набір оголошень мають бути в рекламному акаунті, указаному в
accountId, і не повинні належати до просувань іншого користувача. Інакше запит повертає400. Крім того, просування Instagram не можна приєднати до кампанії, створеної просуванням Facebook, і навпаки. attachToне можна поєднувати зbudget.level: "campaign",specialAdCategoriesабоadSetBudgetSharingEnabled, які задаються для нової кампанії. Якщо надіслати їх, буде поверненоcode: 101.- Призупинення або активація просування змінює лише те, що створило просування: оголошення, а також набір оголошень, якщо його створило просування. Кампанія або набір оголошень, указані в
attachTo, зберігають власний статус. Оголошення показується лише тоді, коли кампанія та набір оголошень над ним активні. Це також стосується випадків, коли Ayrshare призупиняє ваші оголошення, наприклад під час видалення профілю. - Якщо просування не вдається, кампанія або набір оголошень, указані в
attachTo, ніколи не видаляються. - Якщо набір оголошень, до якого ви приєднуєтеся, міститься в кампанії, що має бюджет (бюджет кампанії), Історія відображає просування як будь-яке оголошення з бюджетом кампанії:
budgetDailyпоказує весь бюджет кампанії, а не частку просування, а коли бюджет кампанії на весь період вичерпано, кожне оголошення, яке Ayrshare відстежує в цій кампанії, показуєdeliveryStatus: "COMPLETED"після наступного нічного оновлення, зокрема й оголошення, яке заплановане або перебуває на перевірці. Відхилене оголошення залишається в статусіREJECTED.
curl -X POST https://api.ayrshare.com/api/ads/instagram/boost \
-H "Authorization: Bearer API_KEY" \
-H "Content-Type: application/json" \
-d '{
"postId": "1234567890",
"accountId": "1234567890",
"adName": "My Ad",
"status": "active",
"goal": "engagement",
"minAge": 18,
"maxAge": 65,
"locations": {"countries": ["US"]},
"budget": 100,
"bidAmount": 1,
"startDate": "2025-03-01T00:00:00Z",
"endDate": "2025-03-07T23:59:59Z",
"interests": [1234567890, 1234567891]
}'
const API_KEY = "API_KEY";
fetch("https://api.ayrshare.com/api/ads/instagram/boost", {
method: "POST",
headers: {
"Content-Type": "application/json",
Authorization: `Bearer ${API_KEY}`
},
body: JSON.stringify({
postId: "1234567890",
accountId: "1234567890",
adName: "My Ad",
status: "active",
goal: "engagement",
minAge: 18,
maxAge: 65,
locations: { countries: ["US"] },
budget: 100,
bidAmount: 1,
startDate: "2025-03-01T00:00:00Z",
endDate: "2025-03-07T23:59:59Z",
interests: [1234567890, 1234567891]
})
})
.then((res) => res.json())
.then((json) => console.log(json))
.catch(console.error);
import requests
API_KEY = "API_KEY"
url = "https://api.ayrshare.com/api/ads/instagram/boost"
payload = {
"postId": "1234567890",
"accountId": "1234567890",
"adName": "My Ad",
"status": "active",
"goal": "engagement",
"minAge": 18,
"maxAge": 65,
"locations": {"countries": ["US"]},
"budget": 100,
"bidAmount": 1,
"startDate": "2025-03-01T00:00:00Z",
"endDate": "2025-03-07T23:59:59Z",
"interests": [1234567890, 1234567891]
}
response = requests.post(url, headers={"Authorization": f"Bearer {API_KEY}", "Content-Type": "application/json"}, json=payload)
print(response.json())
<?php
$API_KEY = "API_KEY";
$payload = [
"postId" => "1234567890",
"accountId" => "1234567890",
"adName" => "My Ad",
"status" => "active",
"goal" => "engagement",
"minAge" => 18,
"maxAge" => 65,
"locations" => ["countries" => ["US"]],
"budget" => 100,
"bidAmount" => 1,
"startDate" => "2025-03-01T00:00:00Z",
"endDate" => "2025-03-07T23:59:59Z",
"interests" => [1234567890, 1234567891]
];
$ch = curl_init("https://api.ayrshare.com/api/ads/instagram/boost");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($payload));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Content-Type: application/json",
"Authorization: Bearer " . $API_KEY
]);
$response = curl_exec($ch);
$result = json_decode($response, true);
print_r($result);
curl_close($ch);
using System;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;
using System.Text.Json;
using System.Threading.Tasks;
class Program
{
static async Task Main()
{
string API_KEY = "API_KEY";
var payload = new
{
postId = "1234567890",
accountId = "1234567890",
adName = "My Ad",
status = "active",
goal = "engagement",
minAge = 18,
maxAge = 65,
locations = new { countries = new[] { "US" } },
budget = 100,
bidAmount = 1,
startDate = "2025-03-01T00:00:00Z",
endDate = "2025-03-07T23:59:59Z",
interests = new[] { 1234567890, 1234567891 }
};
using var client = new HttpClient();
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", API_KEY);
var content = new StringContent(
JsonSerializer.Serialize(payload),
Encoding.UTF8,
"application/json"
);
var response = await client.PostAsync("https://api.ayrshare.com/api/ads/instagram/boost", content);
var responseBody = await response.Content.ReadAsStringAsync();
Console.WriteLine(responseBody);
}
}
package main
import (
"bytes"
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
)
func main() {
apiKey := "API_KEY"
payload := map[string]interface{}{
"postId": "1234567890",
"accountId": "1234567890",
"adName": "My Ad",
"status": "active",
"goal": "engagement",
"minAge": 18,
"maxAge": 65,
"locations": map[string]interface{}{"countries": []string{"US"}},
"budget": 100,
"bidAmount": 1,
"startDate": "2025-03-01T00:00:00Z",
"endDate": "2025-03-07T23:59:59Z",
"interests": []int{1234567890, 1234567891},
}
jsonData, err := json.Marshal(payload)
if err != nil {
fmt.Println("Error marshaling JSON:", err)
return
}
req, err := http.NewRequest("POST", "https://api.ayrshare.com/api/ads/instagram/boost", bytes.NewBuffer(jsonData))
if err != nil {
fmt.Println("Error creating request:", err)
return
}
req.Header.Set("Content-Type", "application/json")
req.Header.Set("Authorization", "Bearer "+apiKey)
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
fmt.Println("Error sending request:", err)
return
}
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
fmt.Println("Error reading response:", err)
return
}
fmt.Println(string(body))
}
import java.io.IOException;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
import com.fasterxml.jackson.databind.ObjectMapper;
public class BoostPost {
public static void main(String[] args) {
String API_KEY = "API_KEY";
String url = "https://api.ayrshare.com/api/ads/instagram/boost";
Map<String, Object> payload = new HashMap<>();
payload.put("postId", "1234567890");
payload.put("accountId", "1234567890");
payload.put("adName", "My Ad");
payload.put("status", "active");
payload.put("goal", "engagement");
payload.put("minAge", 18);
payload.put("maxAge", 65);
payload.put("locations", Map.of("countries", Arrays.asList("US")));
payload.put("budget", 100);
payload.put("bidAmount", 1);
payload.put("startDate", "2025-03-01T00:00:00Z");
payload.put("endDate", "2025-03-07T23:59:59Z");
payload.put("interests", Arrays.asList(1234567890, 1234567891));
try {
ObjectMapper objectMapper = new ObjectMapper();
String requestBody = objectMapper.writeValueAsString(payload);
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(url))
.header("Content-Type", "application/json")
.header("Authorization", "Bearer " + API_KEY)
.POST(HttpRequest.BodyPublishers.ofString(requestBody))
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
} catch (IOException | InterruptedException e) {
e.printStackTrace();
}
}
}
require 'net/http'
require 'uri'
require 'json'
API_KEY = "API_KEY"
uri = URI.parse("https://api.ayrshare.com/api/ads/instagram/boost")
payload = {
postId: "1234567890",
accountId: "1234567890",
adName: "My Ad",
status: "active",
goal: "engagement",
minAge: 18,
maxAge: 65,
locations: { countries: ["US"] },
budget: 100,
bidAmount: 1,
startDate: "2025-03-01T00:00:00Z",
endDate: "2025-03-07T23:59:59Z",
interests: [1234567890, 1234567891]
}
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Post.new(uri.request_uri)
request["Content-Type"] = "application/json"
request["Authorization"] = "Bearer #{API_KEY}"
request.body = payload.to_json
response = http.request(request)
puts response.body
{
"status": "success",
"adId": "120217670757750410",
"adName": "API Post - DE6gpw8kxlonHy2b7Lo - 2025-03-26T23:42:43",
"adStatus": "active",
"bidAmount": 10,
"budget": 100,
"endDate": "2026-03-28T22:30:00Z",
"goal": {
"title": "Get More Engagement",
"description": "This goal seeks to increase engagement...",
"type": "engagement"
},
"interests": [
"6003195554098"
],
"locations": {"countries": ["US"]},
"maxAge": 65,
"minAge": 18,
"postId": "DE6gpw8kxlonHy2b7Lo",
"socialPostId": "1234567890",
"igPostId": "1234567890",
"platform": "instagram",
"startDate": "2026-03-26T22:30:00Z"
}
{
"action": "boost post",
"status": "error",
"code": 369,
"message": "Unable to boost post. Please try again or contact us if the issue persists.",
"details": "The accountId likely does not exist. Please check the accountId and try again."
}
{
"action": "request",
"status": "error",
"code": 101,
"message": "Missing or incorrect parameters. Please verify with the docs. https://www.ayrshare.com/docs/apis",
"details": "Missing required fields: accountId"
}