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

# Sponsoriser une publication

> Sponsorisez une publication en la soumettant à la plateforme publicitaire d'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} />

Sponsorisez une publication Instagram existante pour créer une annonce.
Cet endpoint vous permet de convertir vos publications organiques en annonces payantes avec des paramètres de ciblage, de budget et de planification personnalisés.

<ul className="custom-bullets">
  <li>Budget and bid amounts must be specified in USD with up to two decimal places.</li>
  <li>The ad must run for at least 30 hours to address the Instagram requirement.</li>

  <li>
    Vous pouvez utiliser l'[endpoint interests](/docs/apis/ads/instagram/get-ad-interests) pour trouver les ID de centres d'intérêt
    pour le ciblage.
  </li>

  <li>Instagram may take up to 24 hours to review and approve boosted posts.</li>

  <li>
    Si vous utilisez `socialPostId` directement (au lieu de `postId` Ayrshare), assurez-vous qu'il s'agit d'un ID
    de publication Instagram valide.
  </li>
</ul>

### Objectifs publicitaires

Chaque annonce doit avoir un objectif. L'objectif détermine la manière dont l'annonce sera optimisée pour l'affichage.

<ul className="custom-bullets">
  <li>
    `engagement` : Cet objectif vise à augmenter l'engagement tout en garantissant que l'annonce atteigne le
    nombre maximum d'utilisateurs uniques. Il équilibre la visibilité avec l'engagement, en montrant l'annonce à
    autant de personnes différentes que possible susceptibles d'interagir avec elle.
  </li>

  <li>
    `interactions` : Conçu pour stimuler les interactions, telles que les likes, les commentaires et les partages, sur l'annonce.
    Instagram priorise l'affichage de l'annonce aux utilisateurs les plus susceptibles d'interagir avec elle.
  </li>

  <li>
    `awareness_views` : Se concentre sur l'augmentation de la notoriété de la marque en maximisant le nombre de fois que
    l'annonce est affichée. Il priorise l'affichage de l'annonce autant de fois que possible dans le cadre du budget,
    quelle que soit la portée unique.
  </li>

  <li>
    `awareness_audience` : Vise à améliorer la notoriété de la marque en maximisant le nombre de personnes uniques
    qui voient l'annonce. Il garantit que l'annonce atteint autant d'utilisateurs différents que possible et maximise
    la taille de l'audience unique plutôt que de la montrer plusieurs fois à la même audience.
  </li>
</ul>

<Note>
  Les annonces Instagram nécessitent un compte Instagram Business connecté via Facebook, une page Facebook associée et l'autorisation `ads_management`. Reconnectez le compte via Facebook pour accorder cette autorisation. Les comptes connectés avec Instagram Login ne peuvent pas utiliser ces endpoints publicitaires. L'ID du média et l'ID du compte Instagram sont résolus à partir de votre compte lié ; n'envoyez pas `instagram_user_id`.
</Note>

Le sélecteur `socialPostId` accepte également l'alias spécifique à Instagram `igPostId`. `fbPostId` ne s'applique qu'à Facebook. Les réponses réussies incluent `platform: "instagram"`, `socialPostId` et `igPostId`.

## Paramètres d'en-tête

<HeaderAPI />

## Paramètres du corps

<ParamField body="idempotencyKey" type="string">
  Une clé unique et non vide pour cette requête de sponsorisation. Réessayez la même charge utile avec la même clé pour éviter de créer une annonce en double. Réutiliser la clé avec une charge utile ou une plateforme différente renvoie un HTTP 409. Une requête encore en cours renvoie également un 409 ; une réservation indisponible renvoie un 503 sans créer d'annonce.
</ParamField>

<ParamField body="adSetBudgetSharingEnabled" type="boolean" default={false}>
  Autorise Meta à partager le budget entre les ensembles de publicités de la campagne.
</ParamField>

<ParamField body="accountId" type="string" required>
  L'ID du compte publicitaire Instagram sur lequel sponsoriser la publication. L'ID du compte peut être récupéré depuis
  l'[endpoint des comptes publicitaires](/docs/apis/ads/instagram/get-ad-accounts).
</ParamField>

<ParamField body="adName" type="string" required>
  Nom de votre annonce (apparaît dans l'Instagram Ad Manager) au format `{adName} - {postId or socialPostId} - {current date}`.
</ParamField>

<ParamField body="bidAmount" type="number" required>
  Montant maximum de l'enchère en USD, sous forme de montant positif avec jusqu'à deux décimales.
</ParamField>

<ParamField body="budget" type="number" required>
  Budget quotidien en USD. Utilisez un montant positif avec jusqu'à deux décimales. Meta peut imposer des minimums supplémentaires selon votre compte et votre objectif.
</ParamField>

<ParamField body="socialPostId" type="string">
  L'[ID de publication sociale Instagram](/docs/apis/overview#social-post-id) de la publication à sponsoriser, qui vous permet
  de créer une annonce à partir d'une publication créée directement sur Instagram. Il s'agit de l'ID de la [publication sur
  Instagram](/docs/apis/history/history-platform), pas d'Ayrshare. Requis si `postId` n'est pas défini.
</ParamField>

<ParamField body="goal" type="string" default="engagement">
  L'objectif de l'annonce. Valeurs : `engagement`, `interactions`, `awareness_views` et
  `awareness_audience`. Consultez les [détails des objectifs
  publicitaires](/docs/apis/ads/instagram/boost-post#ad-goals) ci-dessus pour plus d'informations.
</ParamField>

<ParamField body="locations" type="object" default={{ countries: ["US"] }}>
  Ciblez des pays avec `{"countries": ["US", "CA"]}` en utilisant les [codes de pays](/docs/iso-codes/country). Vous pouvez également fournir des tableaux `regions` et `cities` ; consultez [regions](/docs/apis/ads/instagram/get-ad-regions) et [cities](/docs/apis/ads/instagram/get-ad-cities).
</ParamField>

<ParamField body="postId" type="string">
  L'[ID de publication Ayrshare](/docs/apis/overview#ayrshare-post-id) de la publication à sponsoriser. Requis si
  `socialPostId` n'est pas défini.
</ParamField>

<ParamField body="status" type="string" default="active">
  Le statut de l'annonce. Valeurs : `active` et `paused`.

  Vous pouvez modifier ultérieurement le statut de l'annonce en utilisant l'[endpoint update ad](/docs/apis/ads/instagram/put-ad-update).
</ParamField>

<ParamField body="tracking" type="object">
  Suivez l'annonce à l'aide d'un Meta Pixel.

  <Expandable title="child attributes">
    <ParamField body="pixelId" type="number" required>
      L'ID du Meta Pixel pour suivre l'annonce.

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

<ParamField body="urlTags" type="array">
  Ajoutez des balises UTM à l'URL de l'annonce.

  ```json theme={"system"}
  {
    "urlTags": ["utm_source=ayrshare", "utm_medium=social", "utm_campaign=ayrshare-social"]
  }
  ```

  Par exemple, si l'URL de destination est `https://www.mysite.com/my-post` et que les balises d'URL ajoutées sont :

  `utm_source=ayrshare`, `utm_medium=social` et `utm_campaign=ayrshare-social`.

  L'URL de l'annonce sera :
  `https://www.mysite.com/my-post?utm_source=ayrshare&utm_medium=social&utm_campaign=ayrshare-social`.
</ParamField>

<ParamField body="specialAdCategories" type="array">
  Meta exige que les annonceurs des [catégories publicitaires spéciales](https://www.facebook.com/business/help/298000447747885?helpref=faq_content) auto-identifient la catégorie de leur campagne.

  Si votre entreprise appartient à l'une de ces catégories, vous devez sélectionner la catégorie appropriée lors de la sponsorisation de votre publication.

  Les valeurs suivantes sont prises en charge :

  <ul className="custom-bullets">
    <li>
      `housing` : Annonces qui promeuvent ou renvoient directement à une opportunité de logement ou à un service connexe,
      y compris, mais sans s'y limiter, les annonces de vente ou de location d'une maison ou d'un appartement, l'assurance habitation,
      l'assurance hypothécaire, les prêts hypothécaires, les réparations domiciliaires et les services d'évaluation ou de prêt sur valeur nette
      du domicile.
    </li>

    <li>
      `financial_product_services` : Annonces qui promeuvent ou renvoient directement à une offre de produits et
      services financiers, y compris le crédit.
    </li>

    <li>
      `employment` : Annonces qui promeuvent ou renvoient directement à une opportunité d'emploi, y compris, mais sans
      s'y limiter, les emplois à temps partiel ou à temps plein, les stages ou les programmes de certification professionnelle. Les
      annonces connexes appartenant à cette catégorie incluent des promotions pour des tableaux d'emploi ou des salons de l'emploi, des services
      d'agrégation ou des annonces détaillant les avantages qu'une entreprise peut offrir, indépendamment d'une offre d'emploi spécifique.
    </li>

    <li>
      `issues_elections_politics` : Annonces réalisées par, au nom de, ou concernant un candidat à une fonction publique,
      une personnalité politique, un parti politique ou plaidant pour l'issue d'une élection à une fonction publique.
      Cela inclut également les annonces concernant toute élection, référendum ou initiative de vote, y compris les
      campagnes électorales « Allez voter ». Les annonces réglementées comme publicité politique ou concernant des questions
      sociales dans tout lieu où l'annonce est diffusée. Si vous sélectionnez questions, élections ou politique,
      vous devez sélectionner le pays dans lequel vous souhaitez diffuser ces annonces. Vous devez être
      autorisé à diffuser des annonces concernant des questions sociales, des élections ou la politique dans le pays spécifié.
    </li>
  </ul>

  <Warning>
    Meta exige des annonceurs qu'ils identifient correctement la catégorie de leur campagne.
    Meta utilise des évaluateurs humains et l'apprentissage automatique pour identifier ce type d'annonces.
    Si vous nous envoyez un `specialAdCategories` incorrect, vos annonces risquent d'être mises en pause jusqu'à ce que la campagne soit ajustée.
  </Warning>
</ParamField>

<ParamField body="dsaBeneficiary" type="string">
  La personne ou l'organisation bénéficiant de l'annonce. À définir conjointement avec `dsaPayor`. Utilisez l'[endpoint des recommandations DSA](/docs/apis/ads/instagram/get-dsa-recommendations) pour obtenir des suggestions.
</ParamField>

<ParamField body="dsaPayor" type="string">
  La personne ou l'organisation payant pour l'annonce. À définir conjointement avec `dsaBeneficiary`.
</ParamField>

<ParamField body="endDate" type="string">
  Date et heure de fin au format ISO 8601 (doit être au moins 30 heures après le début), par exemple `2025-03-01T00:00:00Z`.

  Si non défini, l'annonce sera diffusée indéfiniment et aura une date de fin `ongoing`.
</ParamField>

<ParamField body="excludedLocations" type="object">
  Excluez des localisations en utilisant la même structure `countries`, `regions` et `cities` que `locations`.
</ParamField>

<ParamField body="genders" type="string" default="all">
  Le genre de l'audience. Valeurs : `all`, `male`, `female`.
</ParamField>

<ParamField body="interests" type="array">
  Les centres d'intérêt cibles de l'annonce sous forme d'un tableau d'[ID de centres d'intérêt
  Instagram](/docs/apis/ads/instagram/get-ad-interests).
</ParamField>

<ParamField body="maxAge" type="number" default={65}>
  Âge maximum pour le ciblage de l'annonce (par défaut : 65).
</ParamField>

<ParamField body="minAge" type="number" default={18}>
  Âge minimum pour le ciblage de l'annonce (par défaut : 18).
</ParamField>

<ParamField body="startDate" type="string">
  Date et heure de début au format ISO 8601, par exemple `2025-03-01T00:00:00Z`.

  Si non défini, l'annonce démarrera immédiatement.
</ParamField>

Remplacez les ID d'exemple par les vôtres. Définissez `startDate` et `endDate` selon votre planification prévue ; les dates d'exemple sont illustratives.

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