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

September 17, 2026

5 min read

Author: Marc Blinder

Marc Blinder

Marc Blinder

CEO

Marc Blinder is CEO of Ayrshare, the social media API handling 30M+ calls a day across 14+ networks. After 18+ years building startups across the UK, Europe, and the US, he writes from London about social media APIs, social platforms, and AI.

Ask AI about this article

Opens your AI assistant in a new tab with this article preloaded.

Facebook Boosted Ads

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

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

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.

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

Written by: Marc Blinder

Marc Blinder is CEO of Ayrshare, the social media API handling 30M+ calls a day across 14+ networks. After 18+ years building startups across the UK, Europe, and the US, he writes from London about social media APIs, social platforms, and AI.

Marc Blinder

Marc Blinder

CEO

Marc Blinder is CEO of Ayrshare, the social media API handling 30M+ calls a day across 14+ networks. After 18+ years building startups across the UK, Europe, and the US, he writes from London about social media APIs, social platforms, and AI.

Ask AI about this article

Opens your AI assistant in a new tab with this article preloaded.

Frequently Asked Questions

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.

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.

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.

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.

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.