---
title: "September Release: Facebook Boosted Ads With Traffic Goals and CTA Buttons, Plus Reels Audio"
description: "Facebook boosted ads now accept a traffic goal and nine call-to-action buttons through the Ayrshare API, plus licensed audio on Instagram Reels and immediate monthly-plan refunds."
canonical: https://www.ayrshare.com/blog/september-release-facebook-boosted-ads-traffic-goals-cta-buttons/
lastModified: 2026-09-17
pageType: blog
---

# September Release: Facebook Boosted Ads With Traffic Goals and CTA Buttons, Plus Reels Audio

Author: Marc Blinder  
Published: 2026-09-17

> Facebook boosted ads now accept a traffic goal and nine call-to-action buttons through the Ayrshare API, plus licensed audio on Instagram Reels and immediate monthly-plan refunds.

## TL;DR

Facebook boosted ads placed through the Ayrshare API now take a traffic goal that optimizes for off-platform link clicks, plus a call-to-action button that opens any URL you choose. Nine button types are available, including Shop Now and Apply Now. The September release also brings licensed audio to Instagram Reels, and adds immediate monthly-plan cancellation with an automatic refund.

- Facebook Boost Post accepts a traffic goal and a callToAction object carrying nine buttons, including Apply Now, Shop Now and Learn More, each opening a URL you specify.
- Interests search accepts specialAdCategories, so a housing, employment, financial or political campaign searches only the interests Meta permits it to target.
- A callToAction sent with a non-traffic goal, or a specialAdCategories value outside the enum, now returns code 101 instead of being silently dropped from the request.
- Instagram Reels accept licensed audio only on accounts connected through Facebook Login; an account linked with Instagram Login returns code 514 on every audio call.
- A monthly plan can be canceled immediately from the Account page, with an automatic refund to the original payment method in the currency you were billed in.

If your product turns a customer’s organic post into a lead-gen ad, the last piece was always missing. You could buy the reach, but the post had no destination. Facebook boosts in the Ayrshare API now take a `traffic` goal and a call-to-action button that opens whatever URL you point it at.

That is the biggest thing we shipped in the first half of September. The other headline is licensed audio on Instagram Reels. Alongside them: immediate monthly-plan cancellation with an automatic refund, cached LinkedIn analytics, Reels video URLs with a query string, and higher Bluesky video limits.

## Facebook Boosted Ads Can Now Drive Traffic Off-Platform

Boost Post accepts a new `traffic` goal that optimizes for off-platform link clicks, plus a `callToAction` object that puts an actual button on the boosted post. Nine button types are available, including `APPLY_NOW`, `SHOP_NOW` and `LEARN_MORE`, each opening whatever URL you point it at. The `callToAction` comes back on the boost response and stays readable afterward from Get Boosted Ads.

```javascript
const API_KEY = "API_KEY";

fetch("https://api.ayrshare.com/api/ads/facebook/boost", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    Authorization: `Bearer ${API_KEY}`
  },
  body: JSON.stringify({
    postId: "DE6gpw8kxlonHy2b7Lo",
    accountId: "1234567890",
    adName: "Fall Collection",
    status: "active",
    goal: "traffic",
    callToAction: {
      type: "SHOP_NOW",
      link: "https://example.com/collections/fall",
      linkTitle: "Shop the collection"
    },
    budget: 100,
    bidAmount: 1,
    startDate: "2026-09-18T00:00:00Z",
    endDate: "2026-09-25T23:59:59Z"
  })
})
  .then((res) => res.json())
  .then((json) => console.log(json))
  .catch(console.error);
```

Until now, boosting through the API meant optimizing for engagement on the post itself. You could buy attention on a post and nothing beyond it. The whole loop is now one flow: publish the post, boost it toward a traffic goal, point a Shop Now button at the product page.

Interests search got the same treatment. It accepts a `specialAdCategories` parameter, so a housing, employment, financial or political campaign can search only the interests Meta actually permits it to target, instead of picking IDs that look right and finding out at rejection time. Meta has used three different names for the financial category over the years, so `financial_product_services`, `financial_products_services` and the older `credit` are all accepted as the same thing. Whichever spelling you copied, from our docs or from Meta’s, works.

In the dashboard, the same capability shows up as a **Drive Traffic** option where you set the destination URL, button type and an optional headline.

One note for anyone with an existing boost integration. A `callToAction` on a non-traffic goal, and out-of-enum `specialAdCategories` values, now return `code: 101` instead of being dropped. Both used to fail quietly: a button-less ad, or a regulated campaign running as uncategorized. You were not getting what you asked for either way. Now you find out at request time. Details are in the changelog.

## Licensed Audio on Instagram Reels, and the Eligibility Rule Behind It

You can now search Instagram’s licensed audio catalog and attach a track when you publish a Reel. Find one with `GET /media/instagram/audio/search`, pass its id as `instagramOptions.audioConfiguration.audioId`, then set `audioVolume` and `videoVolume` to mix the track against your video’s own audio.

```javascript
const API_KEY = "API_KEY";

fetch("https://api.ayrshare.com/api/post", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    Authorization: `Bearer ${API_KEY}`
  },
  body: JSON.stringify({
    post: "New drop",
    platforms: ["instagram"],
    mediaUrls: ["https://img.ayrshare.com/012/vid.mp4"],
    instagramOptions: {
      audioConfiguration: {
        audioId: "17901234567890123",
        audioVolume: 80,
        videoVolume: 20
      }
    }
  })
})
  .then((res) => res.json())
  .then((json) => console.log(json))
  .catch(console.error);
```

The part worth flagging is the eligibility rule, because it is the part that costs an afternoon. Meta only offers its Audio API to Instagram accounts connected through **Facebook Login**, which requires a Facebook Page connected to the Instagram account. An account linked with Instagram Login, which is the default, returns `code: 514` on every audio call, and no permission or plan change fixes it.

We could have let you discover that from a generic failure. Instead it is a specific error code with a doc page explaining how to switch the account over.

## Also in the September Release

### Cancel a Monthly Plan Today, With an Automatic Refund

Canceling a monthly subscription from the Account page now offers a second option: end it today, money back automatically, to your original payment method and in the currency you were billed in. Within 48 hours of a charge, we refund it in full. After that, the unused part of the period. The dashboard shows you the figures before you confirm.

### LinkedIn Analytics Now Come From Cache for Older Posts

Posts older than about ten days are served from cache for a few days at a time instead of being re-fetched every eleven minutes. Engagement arrives in a post’s first days, and LinkedIn caps how many analytics calls our app can make across all accounts, so that cap was being spent on numbers that could not have changed. What changed for everyone: `nextUpdate` now reports the interval actually applied to the response you are holding. If you poll, read it from the response instead of a fixed timer.

### Reels Accept Video URLs With a Query String

A signed CDN or Firebase Storage URL, anything with a `?` after the filename, was rejected with `code: 170` before it ever reached the network. We now read the media type from the URL path. You no longer need `isVideo: true` as a workaround.

### Bluesky Video Limits Are Up to 10 Minutes and 300 MB

Bluesky raised its limit on August 26, up from 3 minutes and 100 MB, and we accept the new caps.

## Before Your Next Release

Everything above is live now. If you already boost posts through the API, the `code: 101` change is the one to check before your next release: a `callToAction` on a non-traffic goal, or an out-of-enum `specialAdCategories` value, now fails instead of being quietly dropped. Full details are in [What’s New](https://docs.ayrshare.com/whatsnew/latest).

New to Ayrshare? [Start a 28-day free trial](/pricing/) and build against the traffic goal, Reels audio and everything else above before you pay for anything.

## Frequently asked questions

### Which call-to-action buttons can I add to a Facebook boosted ad through the Ayrshare API?

Nine: APPLY_NOW, SHOP_NOW, LEARN_MORE, SIGN_UP, BOOK_TRAVEL, GET_QUOTE, CONTACT_US, DOWNLOAD and SUBSCRIBE. The button only applies to a boost using the traffic goal. Passing callToAction with any other goal returns code 101.

### Do I need a Facebook Page to add music to an Instagram Reel through the Instagram API?

Yes. Meta restricts its Audio API to Instagram accounts connected through Facebook Login, which requires a connected Facebook Page. An account connected with Instagram Login returns code 514 on every audio call, and no permission or plan change fixes it.

### Why did my Facebook boost request start returning code 101 in the Ayrshare API?

Two cases now fail loudly instead of silently: a callToAction sent with a non-traffic goal, and a specialAdCategories value outside the accepted enum. Both previously got dropped from the request before it reached the Facebook Marketing API.

### How much do I get back if I cancel a monthly plan immediately?

The full charge if you cancel within 48 hours of it, and the unused portion of the period after that. Refunds go to your original payment method in the currency you were billed in, and the dashboard shows the amount before you confirm.

### How often should I poll LinkedIn analytics through the Ayrshare API?

Read nextUpdate from the response you just received rather than using a fixed timer. It now reports the interval actually applied to that response, which varies by post age.
