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

# DSA Recommendations

> Get Meta DSA Recommendations for Instagram Ads

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

Get Digital Services Act (DSA) recommendations for the Meta ad account used for your Instagram ads.

As part of the requirements set forth by the European Union (EU) Digital Services Act (DSA), [Facebook requires ads targeting](https://www.facebook.com/business/help/605021638170961) any part of the EU to provide string values defining the beneficiary and payor of the ad being created.

This endpoint provides a list of recommended DSA beneficiaries and payors that can be used when boosting posts.
These fields may be used in [`dsaBeneficiary`](/docs/apis/ads/instagram/boost-post#param-dsa-beneficiary) and [`dsaPayor`](/docs/apis/ads/instagram/boost-post#param-dsa-payor).

<ul className="custom-bullets">
  <li>
    Outputs a list of strings (maximum 25) that Facebook has identified to likely be the
    beneficiary/payor, based on recent activity of the ad account.
  </li>

  <li>
    These recommendations can be used as values for the `dsaBeneficiary` and `dsaPayor` parameters
    in the [Boost Post](/docs/apis/ads/instagram/boost-post) endpoint.
  </li>

  <li>
    Both `dsaBeneficiary` and `dsaPayor` must be set together if either is provided when boosting
    posts.
  </li>
</ul>

## Header Parameters

<HeaderAPI />

## Query Parameters

<ParamField query="accountId" type="string" required>
  The ID of the Meta ad account to get DSA recommendations for. The account ID can be retrieved
  from the [ad accounts endpoint](/docs/apis/ads/instagram/get-ad-accounts).
</ParamField>

<RequestExample>
  ```bash cURL theme={"system"}
  curl \
  -H "Authorization: Bearer API_KEY" \
  -X GET https://api.ayrshare.com/api/ads/instagram/dsaRecommendations?accountId=1234567890
  ```

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

  fetch("https://api.ayrshare.com/api/ads/instagram/dsaRecommendations?accountId=1234567890", {
        method: "GET",
        headers: {
          "Authorization": `Bearer ${API_KEY}`
        }
      })
        .then((res) => res.json())
        .then((json) => console.log(json))
        .catch(console.error);
  ```

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

  headers = {'Authorization': 'Bearer API_KEY'}

  r = requests.get('https://api.ayrshare.com/api/ads/instagram/dsaRecommendations?accountId=1234567890', headers=headers)

  print(r.json())
  ```

  ```php PHP theme={"system"}
  <?php
  $curl = curl_init();

  curl_setopt_array($curl, [
    CURLOPT_URL => "https://api.ayrshare.com/api/ads/instagram/dsaRecommendations?accountId=1234567890",
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => [
      "Authorization: Bearer API_KEY"
    ],
  ]);

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

  echo $response;
  ?>
  ```

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

  class Program
  {
      static async Task Main()
      {
          var client = new HttpClient();
          client.DefaultRequestHeaders.Add("Authorization", "Bearer API_KEY");

          var response = await client.GetAsync("https://api.ayrshare.com/api/ads/instagram/dsaRecommendations?accountId=1234567890");
          var content = await response.Content.ReadAsStringAsync();

          Console.WriteLine(content);
      }
  }
  ```

  ```go Go theme={"system"}
  package main

  import (
      "fmt"
      "io/ioutil"
      "net/http"
  )

  func main() {
      client := &http.Client{}
      req, _ := http.NewRequest("GET", "https://api.ayrshare.com/api/ads/instagram/dsaRecommendations?accountId=1234567890", nil)
      req.Header.Add("Authorization", "Bearer API_KEY")

      resp, _ := client.Do(req)
      body, _ := ioutil.ReadAll(resp.Body)

      fmt.Println(string(body))
  }
  ```

  ```java Java theme={"system"}
  import java.net.URI;
  import java.net.http.HttpClient;
  import java.net.http.HttpRequest;
  import java.net.http.HttpResponse;

  public class GetDsaRecommendations {
      public static void main(String[] args) throws Exception {
          HttpClient client = HttpClient.newHttpClient();
          HttpRequest request = HttpRequest.newBuilder()
                  .uri(URI.create("https://api.ayrshare.com/api/ads/instagram/dsaRecommendations?accountId=1234567890"))
                  .header("Authorization", "Bearer API_KEY")
                  .GET()
                  .build();

          HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
          System.out.println(response.body());
      }
  }
  ```

  ```ruby Ruby theme={"system"}
  require 'net/http'
  require 'json'

  uri = URI('https://api.ayrshare.com/api/ads/instagram/dsaRecommendations?accountId=1234567890')
  req = Net::HTTP::Get.new(uri)
  req['Authorization'] = 'Bearer API_KEY'

  res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http|
    http.request(req)
  }

  puts res.body
  ```
</RequestExample>

<ResponseExample>
  ```json 200: Success theme={"system"}
  {
      "status": "success",
      "dsaRecommendations": [
          "Beneficiary 1",
          "Beneficiary 2",
          "Beneficiary 3"
      ],
      "count": 3
  }
  ```

  ```json 413: DSA Recommendations Error theme={"system"}
  {
    "action": "ads",
    "status": "error",
    "code": 413,
    "message": "There was an error getting the DSA recommendations. Please try again."
  }
  ```
</ResponseExample>
