> ## 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.

# Просування допису

> Просувайте допис, надіславши його на рекламну платформу Instagram

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>;
};

export const HeaderAPI = ({noProfileKey, profileKeyRequired}) => <>
    <ParamField header="Authorization" type="string" required>
      <a href="/docs/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="/docs/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="/docs/apis/overview#profile-key-format">Profile Key</a> of a User Profile.
          <br />
          <br />
          Format: <code>Profile-Key: PROFILE_KEY</code>
        </ParamField>)}
  </>;

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

Просувайте наявний допис в Instagram для створення реклами.
Цей ендпоінт дає змогу перетворювати ваші органічні дописи на платні оголошення з користувацькими параметрами таргетингу, бюджету та планування.

<ul className="custom-bullets">
  <li>Суми бюджету та ставки мають бути вказані в USD з точністю до двох десяткових знаків.</li>
  <li>Оголошення має тривати щонайменше 30 годин, щоб відповідати вимозі Instagram.</li>

  <li>
    Ви можете використати [ендпоінт інтересів](/docs/apis/ads/instagram/get-ad-interests), щоб знайти ID інтересів
    для таргетингу.
  </li>

  <li>Instagram може знадобитися до 24 годин, щоб переглянути та схвалити просунуті дописи.</li>

  <li>
    Якщо ви використовуєте `socialPostId` безпосередньо (замість Ayrshare `postId`), переконайтеся, що це коректний
    ID допису Instagram.
  </li>

  <li>
    Якщо просування не вдається після того, як Facebook створив його кампанію (на етапі креативу, групи оголошень або оголошення),
    ми намагаємося видалити цю кампанію. Якщо видалення також не вдається, порожня кампанія залишається у вашому рекламному
    акаунті. Ви можете знайти й видалити її в Ads Manager.
  </li>
</ul>

<h3 id="ad-goals">
  Цілі оголошення
</h3>

Кожне оголошення має мати ціль. Ціль визначає, як оголошення буде оптимізовано для показу.

<ul className="custom-bullets">
  <li>
    `engagement`: Ця ціль спрямована на підвищення залученості, водночас гарантуючи, що оголошення досягає
    максимальної кількості унікальних користувачів. Вона балансує між видимістю та залученістю, показуючи оголошення
    якомога більшій кількості різних людей, які можуть з ним взаємодіяти.
  </li>

  <li>
    `interactions`: Розроблена для підвищення взаємодії, як-от вподобання, коментарі та поширення оголошення.
    Instagram надає пріоритет показу оголошення користувачам, які найімовірніше з ним взаємодіятимуть.
  </li>

  <li>
    `awareness_views`: Зосереджується на підвищенні впізнаваності бренду, максимізуючи кількість разів, коли
    оголошення показується. Пріоритет — показати оголошення якомога більше разів у межах бюджету,
    незалежно від унікального охоплення.
  </li>

  <li>
    `awareness_audience`: Спрямована на підвищення впізнаваності бренду шляхом максимізації кількості унікальних людей,
    які бачать оголошення. Гарантує, що оголошення досягає якомога більшої кількості різних користувачів, і максимізує
    розмір унікальної аудиторії, а не показує його багато разів одній і тій самій аудиторії.
  </li>
</ul>

<Note>
  Реклама Instagram вимагає облікового запису Instagram Business, підключеного через Facebook, пов'язаної сторінки Facebook та дозволу `ads_management`. Повторно підключіть обліковий запис через Facebook, щоб надати цей дозвіл. Облікові записи, підключені через Instagram Login, не можуть використовувати ці ендпоінти реклами. ID медіа та ID облікового запису Instagram визначаються з вашого підключеного облікового запису; не надсилайте `instagram_user_id`.
</Note>

Селектор `socialPostId` також приймає специфічний для Instagram псевдонім `igPostId`. `fbPostId` застосовується лише до Facebook. Успішні відповіді містять `platform: "instagram"`, `socialPostId` та `igPostId`.

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

<HeaderAPI />

## Параметри тіла

<ParamField body="idempotencyKey" type="string">
  Унікальний непорожній ключ для цього запиту на просування. Повторіть той самий запит із тим самим ключем, щоб уникнути створення дубліката оголошення. Повторне використання ключа з іншим вмістом запиту або іншою платформою повертає HTTP 409. Запит, який усе ще виконується, також повертає 409; недоступне резервування повертає 503 без створення оголошення.
</ParamField>

<ParamField body="adSetBudgetSharingEnabled" type="boolean" default={false}>
  Дозвольте Meta розподіляти бюджет між наборами оголошень у кампанії.
</ParamField>

<ParamField body="accountId" type="string" required>
  ID рекламного облікового запису Instagram, у якому потрібно просунути допис. ID облікового запису можна отримати з
  [ендпоінту рекламних облікових записів](/docs/apis/ads/instagram/get-ad-accounts).
</ParamField>

<ParamField body="adName" type="string" required>
  Назва вашого оголошення (відображається в Instagram Ad Manager) у форматі `{adName} - {postId or socialPostId} - {current date}`.
</ParamField>

<ParamField body="bidAmount" type="number" required>
  Максимальна сума ставки в USD — додатне значення з точністю до двох десяткових знаків.
</ParamField>

<ParamField body="budget" type="number" required>
  Денний бюджет в USD. Використовуйте додатне значення з точністю до двох десяткових знаків. Meta може застосовувати додаткові мінімальні вимоги для вашого облікового запису та цілі.
</ParamField>

<ParamField body="socialPostId" type="string">
  [ID соціального допису Instagram](/docs/apis/overview#social-post-id) допису для просування, що дозволяє
  створити оголошення з допису, створеного безпосередньо в Instagram. Це ID [допису в
  Instagram](/docs/apis/history/history-platform), а не Ayrshare. Обов'язковий, якщо `postId` не задано.
</ParamField>

<ParamField body="goal" type="string" default="engagement">
  Ціль оголошення. Значення: `engagement`, `interactions`, `awareness_views` та
  `awareness_audience`. Див. [деталі цілей оголошення](/docs/apis/ads/instagram/boost-post#ad-goals) вище
  для отримання додаткової інформації.
</ParamField>

<ParamField body="locations" type="object" default={{ countries: ["US"] }}>
  Таргетуйте країни за допомогою `{"countries": ["US", "CA"]}`, використовуючи [коди країн](/docs/iso-codes/country). Ви також можете надати масиви `regions` і `cities`; див. [регіони](/docs/apis/ads/instagram/get-ad-regions) та [міста](/docs/apis/ads/instagram/get-ad-cities). Об'єкт, який не вказує жодної країни, регіону чи міста, як-от `{}`, відхиляється з кодом `101`; щоб таргетувати США, не передавайте `locations`.
</ParamField>

<ParamField body="postId" type="string">
  [Ayrshare post ID](/docs/apis/overview#ayrshare-post-id) допису для просування. Обов'язковий, якщо
  `socialPostId` не задано.
</ParamField>

<ParamField body="status" type="string" default="active">
  Статус оголошення. Значення: `active` та `paused`.

  Ви можете пізніше змінити статус оголошення за допомогою [ендпоінту оновлення оголошення](/docs/apis/ads/instagram/put-ad-update).
</ParamField>

<ParamField body="tracking" type="object">
  Відстежуйте оголошення за допомогою Meta Pixel.

  <Expandable title="child attributes">
    <ParamField body="pixelId" type="number" required>
      ID Meta Pixel для відстеження оголошення.

      ```json theme={"system"}
      {
       "pixelId": 1234567890
      }
      ```
    </ParamField>
  </Expandable>
</ParamField>

<ParamField body="urlTags" type="array">
  Додайте UTM-теги до URL оголошення.

  ```json theme={"system"}
  {
    "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`.
</ParamField>

<ParamField body="specialAdCategories" type="array">
  Meta вимагає, щоб рекламодавці у [спеціальних категоріях реклами](https://www.facebook.com/business/help/298000447747885?helpref=faq_content) самостійно ідентифікували категорію своєї кампанії.

  Якщо ваш бізнес належить до однієї з цих категорій, ви маєте вибрати відповідну категорію під час просування допису.

  Підтримуються такі значення:

  <ul className="custom-bullets">
    <li>
      `housing`: Оголошення, що просувають або безпосередньо посилаються на можливість придбання житла або пов'язану послугу,
      включаючи, але не обмежуючись, оголошеннями про продаж або оренду будинку чи квартири, страхуванням домовласників,
      іпотечним страхуванням, іпотечними кредитами, ремонтом житла та послугами з оцінки або кредитування під заставу житла.
    </li>

    <li>
      `financial_product_services`: Оголошення, що просувають або безпосередньо посилаються на пропозицію
      фінансових продуктів і послуг, включаючи кредити.
    </li>

    <li>
      `employment`: Оголошення, що просувають або безпосередньо посилаються на можливість працевлаштування, включаючи, але не
      обмежуючись, роботами на неповний або повний робочий день, стажуванням або програмами професійної сертифікації. Пов'язані
      оголошення, які підпадають під цю категорію, включають промоакції для дошок оголошень про роботу або ярмарків, служб
      агрегації або оголошень, що детально описують переваги, які компанія може надати, незалежно від конкретної пропозиції роботи.
    </li>

    <li>
      `issues_elections_politics`: Оголошення, створені кандидатом на публічну посаду, від його імені або про нього,
      політичним діячем, політичною партією або такі, що виступають за результат виборів на публічну посаду. Це також
      включає оголошення про будь-які вибори, референдум чи ініціативу голосування, включаючи виборчі кампанії
      «Йдіть та голосуйте». Оголошення, що регулюються як політична реклама або стосуються соціальних питань у будь-якому
      місці, де розміщується оголошення. Якщо вибираєте питання, вибори або політику, ви маєте вибрати країну, у якій
      хочете розміщувати ці оголошення. Ви повинні мати авторизацію на розміщення оголошень про соціальні питання, вибори
      або політику у вказаній країні.
    </li>
  </ul>

  Meta також потребує країн, у яких показується реклама спеціальної категорії. Ayrshare бере їх із `locations`: країни, які ви вказали, а також країну кожного регіону та міста. Тож просування `housing`, яке націлене на місто у Великій Британії, налаштовується для Великої Британії без жодних додаткових даних у вашому запиті. Без `locations` реклама показується в США, і кампанія налаштовується для США.

  Meta також встановлює мінімальний радіус навколо кожного міста для цих категорій. Місто у Великій Британії з радіусом 17 кілометрів було відхилено з помилкою `#2909039`, яка вимагає щонайменше 25 кілометрів (15 миль), тому використовуйте 25 кілометрів або більше.

  <Warning>
    Meta вимагає, щоб рекламодавці правильно ідентифікували категорію своєї кампанії.
    Meta використовує людських рецензентів та машинне навчання для виявлення таких оголошень.
    Якщо ви надішлете нам некоректну `specialAdCategories`, існує ризик, що ваші оголошення буде призупинено до коригування кампанії.
  </Warning>
</ParamField>

<ParamField body="dsaBeneficiary" type="string">
  Особа або організація, що отримує вигоду від оголошення. Задається разом із `dsaPayor`. Скористайтеся [ендпоінтом DSA-рекомендацій](/docs/apis/ads/instagram/get-dsa-recommendations) для отримання пропозицій.
</ParamField>

<ParamField body="dsaPayor" type="string">
  Особа або організація, що платить за оголошення. Задається разом із `dsaBeneficiary`.
</ParamField>

<ParamField body="endDate" type="string">
  Дата й час завершення у форматі ISO 8601 (має бути щонайменше через 30 годин після початку), наприклад `2025-03-01T00:00:00Z`.

  Якщо не задано, оголошення працюватиме нескінченно і матиме дату завершення `ongoing`.
</ParamField>

<ParamField body="excludedLocations" type="object">
  Виключіть локації, використовуючи ту саму структуру `countries`, `regions` та `cities`, що й у `locations`.
</ParamField>

<ParamField body="gender" type="string" default="all">
  Стать аудиторії. Значення: `all`, `male`, `female`.
</ParamField>

<ParamField body="interests" type="array">
  Цільові інтереси оголошення у вигляді масиву [ID
  інтересів](/docs/apis/ads/instagram/get-ad-interests) Instagram.
</ParamField>

<ParamField body="maxAge" type="number" default={65}>
  Максимальний вік для таргетингу оголошення (за замовчуванням: 65).
</ParamField>

<ParamField body="minAge" type="number" default={18}>
  Мінімальний вік для таргетингу оголошення (за замовчуванням: 18).
</ParamField>

<ParamField body="startDate" type="string">
  Дата й час початку у форматі ISO 8601, наприклад `2025-03-01T00:00:00Z`.

  Якщо не задано, оголошення розпочнеться негайно.
</ParamField>

Замініть приклади ID на власні. Встановіть `startDate` і `endDate` відповідно до запланованого розкладу; дати в прикладах наведено для ілюстрації.

<h2 id="campaign-budgets">
  Бюджети кампаній
</h2>

Щоб тримати бюджет на рівні кампанії, а не набору оголошень, надішліть `budget.level: "campaign"` у вкладеній формі. Тоді набір оголошень не має власного бюджету. Це працює як зі щоденним бюджетом, так і з бюджетом на весь період.

```json theme={"system"}
{
  "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`.
* В [Історії](/docs/apis/ads/instagram/get-ad-history) для оголошення зі щоденним бюджетом кампанії `budgetDaily` показує щоденний бюджет кампанії. Якщо кілька оголошень спільно використовують один бюджет кампанії, кожне показує весь бюджет кампанії, а не свою частку. Історія не показує бюджети на весь період ні для кампанії, ні для набору оголошень. Коли бюджет кампанії на весь період вичерпано, кожне оголошення в цій кампанії показує `deliveryStatus: "COMPLETED"` після наступного нічного оновлення, зокрема й оголошення, яке заплановане або перебуває на перевірці. Відхилене оголошення залишається в статусі `REJECTED`.

<h2 id="attach-to">
  Просування в наявну кампанію або набір оголошень
</h2>

За замовчуванням кожне просування створює власну кампанію, набір оголошень і оголошення. Щоб додати просування до кампанії або набору оголошень, які ви вже ведете в Meta, надішліть вкладену форму з `attachTo`.

* `attachTo.campaignId`: просування створює новий набір оголошень і оголошення в цій кампанії. Надсилайте `budget`, `targeting` і `bidAmount` як зазвичай: вони застосовуються до нового набору оголошень.
* `attachTo.adSetId`: просування створює лише оголошення в цьому наборі оголошень. Також надішліть `attachTo.campaignId`, тобто кампанію, до якої належить набір оголошень. Не передавайте `budget`, `targeting` і `platformOptions.instagram.bidAmount`: набір оголошень зберігає власні значення. Якщо надіслати будь-який із них, буде повернено `400` з `code: 101`.

```json theme={"system"}
{
  "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`, ніколи не видаляються.
* Якщо набір оголошень, до якого ви приєднуєтеся, міститься в кампанії, що має бюджет (бюджет кампанії), [Історія](/docs/apis/ads/instagram/get-ad-history) відображає просування як будь-яке оголошення з бюджетом кампанії: `budgetDaily` показує весь бюджет кампанії, а не частку просування, а коли бюджет кампанії на весь період вичерпано, кожне оголошення, яке Ayrshare відстежує в цій кампанії, показує `deliveryStatus: "COMPLETED"` після наступного нічного оновлення, зокрема й оголошення, яке заплановане або перебуває на перевірці. Відхилене оголошення залишається в статусі `REJECTED`.

<RequestExample>
  ```bash cURL theme={"system"}
  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]
    }'
  ```

  ```javascript JavaScript theme={"system"}
  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);
  ```

  ```python Python theme={"system"}
  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 PHP theme={"system"}
  <?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);
  ```

  ```csharp C# theme={"system"}
  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);
      }
  }
  ```

  ```go Go theme={"system"}
  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))
  }
  ```

  ```java Java theme={"system"}
  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();
          }
      }
  }
  ```

  ```ruby Ruby theme={"system"}
  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
  ```
</RequestExample>

<ResponseExample>
  ```json 200: Post Boosted theme={"system"}
  {
      "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"
  }
  ```

  ```json 400: Invalid Account ID theme={"system"}
  {
    "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."
  }
  ```

  ```json 400: Missing Required Parameters theme={"system"}
  {
    "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"
  }
  ```
</ResponseExample>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.