` tags. Add custom CSS to add color and/or underlining to anchor links.
## Using the API
### Create and Manage Profiles
You can create, delete, and manage your profiles via the API using the /profiles endpoints. Please see below for details.
### Get the Profile Key
The Profile Key is returned when you create a new profile via the API using the [/profile](/docs/apis/profiles/create-profile) endpoint. If you need to get the profile key again, go to the Dashboard to retrieve. See above.
## Enable Messaging
![Enable Messaging]()
You can enable messaging for your Ayrshare account in the Account page. Please see here for more details:
## Max Pack Customization
In the Ayrshare Dashboard page *User Profile -> Setting*, you can customize aspects of the social linking page. Please see the [Max Pack](/docs/additional/maxpack) for details on the capabilities and features.
### Customize CSS
Use your own CSS file to customize the look and feel of the social accounts page: color, fonts, hide features, change buttons, and more.
A CSS file also fixes the page to the light color scheme. Your users are not shown the light/dark switch on a social linking page that has a CSS file, so your stylesheet alone decides how the page looks. Pages without a CSS file keep the switch.
![Customize CSS]()
#### CSS Class Hooks
The page carries stable class names so your stylesheet has something to select: on the page itself, on the grid the cards are laid out in, and on each social network card. These names are a **contract**: a stylesheet written against them keeps working across dashboard releases, so you can safely build on them.
Hosting your own stylesheet is **available with the [Max Pack](/docs/additional/maxpack)
(and included with Enterprise)**. The *Custom CSS* field is read-only without it.
These class names apply to the white-labeled social linking page your users open,
not to your own dashboard.
Anything not listed on this page is not a contract. In particular, do not select the page's own generated class names (they change without notice). See [Updating an older stylesheet](#updating-an-older-stylesheet).
**Page elements**
| Selector | Applies to |
| -------------------------- | --------------------------------------------------------------------------------- |
| `.main-content` | The page content wrapper |
| `.company-logo` | Your [logo](#update-logo-on-social-linking-page), when you have set one |
| `.heading-social-accounts` | The page heading, an `
` element |
| `.additional-info` | The instruction block below the heading |
| `.additional-info__body` | The same element as `.additional-info`; see the note below |
| `.additional-info-text` | The instruction text inside that block |
| `.troubleshooting-guide` | The "Having trouble?" link, when [help links](#help-links-visible) are on |
| `.close-button` | The [Close button](#change-page-title-close-button-and-favicon) that ends linking |
**Card layout**
These two are new, so no older stylesheet selects them. Both are containers: they change where the cards sit and how wide they are, not how a card looks. See [Change the Card Layout](#change-the-card-layout).
| Selector | Applies to |
| ------------------------------ | ----------------------------------------------------------------------- |
| `.social-accounts-grid` | The grid that lays the cards out, and the `gap` between them |
| `.social-account-card-wrapper` | The grid cell holding one card, the element that owns that card's width |
**Social network cards**
| Selector | Applies to |
| ----------------------------- | ------------------------------------------------------------------ |
| `.social-account-card` | Every social network card, connected or not |
| `.connected-card` | A card whose network is connected |
| `.unlinked-card` | A card whose network is not connected yet |
| `.click-to-link` | The "Click to link" call-to-action text on an unconnected card |
| `[data-platform=""]` | One specific network's card; see [below](#target-a-single-network) |
Every card carries `.social-account-card` plus exactly one of `.connected-card` or `.unlinked-card`, so the connected and unconnected states can be styled independently.
**How the elements nest**
A card is five levels below `.main-content`, and two of those levels have no class name of their own:
```html theme={"system"}
```
Select the named elements rather than the unnamed ones between them. The unnamed levels are not part of the contract and are the reason a rule that counts levels down from `.main-content` (`.main-content > div`, `.main-content > div > div > div`, `.main-content > div:not(.additional-info)`) lands a level or two off its target rather than on the grid or a card. See [Updating an older stylesheet](#updating-an-older-stylesheet) if your stylesheet has rules of that shape.
Style the card itself with `.social-account-card`, and reach for `.social-accounts-grid` or `.social-account-card-wrapper` when you want to change the layout rather than the card. See [Change the Card Layout](#change-the-card-layout).
Elements that depend on a setting (your logo, the "Having trouble?" link, the Close button) only exist in the page when that setting is on, so a rule targeting one is simply inert until then.
Your rules need `!important` to take effect. The page's own styles are
generated with a higher specificity than a plain class selector, so a
declaration without `!important` is silently ignored.
**Restyle `.click-to-link`, do not hide it.** It is the only thing on an
unconnected card that tells your user the network is not connected yet and that
the card can be clicked. A rule like
`.click-to-link { display: none !important }` leaves a card showing nothing but
the network name, which reads as inactive. If you want your own wording or
badge instead, add it to the card with `.unlinked-card::after` rather than
hiding the text and relying on a replacement elsewhere.
`.additional-info` and `.additional-info__body` match the **same** element. They
were previously two nested elements, so if your stylesheet sets different values
for the same property on each, they now compete on one element and the more
specific rule wins instead of both applying. Combine them into a single rule.
#### Updating an Older Stylesheet
If you wrote your stylesheet before the dashboard was rebuilt, some rules may no longer match. Rules built on the selectors documented above keep working. Rules built on anything else do not, and cannot be restored:
* **The page's own generated class names.** Class names you may have copied out of browser developer tools (for example anything beginning with `chakra-`) belong to the framework the page is built with, not to a public contract. Those class names no longer exist and there is no equivalent to swap in. Rewrite the rule against the selectors in the tables above.
* **Bare element or attribute selectors** such as `div > div` or `button[type="button"]`. The page's structure is not a contract and has changed, so a rule counting levels down from `.main-content` now lands on a different element than it did before. This is the most common reason a layout rule appears to do nothing, or does something unexpected.
* **Positional rules that counted elements to reach the card grid.** Before the grid and the cells had names, the only way to reach them was to count levels down from `.main-content`, using rules shaped like `.main-content > div`, `.main-content > div > div`, `.main-content > div > div > div` or `.main-content > div:not(.additional-info)`. Those rules still match something, which is why they are easy to miss: `.main-content` is still there, but a card now sits [five levels below it](#css-class-hooks), so each rule lands a level or two off target. A rule aimed at the grid can end up on the wrapper holding the page header, and a rule aimed at one card can end up resizing every card at once. Replace them with the two names that now exist for this: `.social-accounts-grid` for the grid, and `.social-account-card-wrapper` for the cell holding one card. See [Change the Card Layout](#change-the-card-layout).
* **`.linked-tag`.** The older page put this on the status badges of a connected card. It is **not** part of the contract above, deliberately: a connected card can now also show "Relink required" or "Identity check", so a rule hiding `.linked-tag` would hide a warning your user needs to act on. If your stylesheet hides `.linked-tag` and draws a replacement badge of its own, the replacement will not appear. Style [`.connected-card`](#css-class-hooks) itself instead, and leave the status badges visible.
If you are unsure whether your stylesheet still works, open your linking page and check that each rule takes effect. The stylesheet loads either way, so rules that no longer match fail silently rather than reporting an error. [Contact support](/docs/help-center/overview) if you would like help rewriting one.
#### Target a Single Network
Use the `data-platform` attribute rather than a position-based selector such as `:nth-child`. The networks available to your users [can be filtered](#set-social-networks-access) per account or per User Profile, which changes how many cards render and in what order. Position-based selectors break when that filter changes, and `data-platform` does not.
```css theme={"system"}
.social-account-card[data-platform="tiktok"] {
/* ... */
}
```
The value is the network's key on this page:
`bluesky`, `facebook`, `gmb`, `instagramApi`, `linkedin`, `pinterest`, `reddit`, `snapchat`, `telegram`, `threads`, `tiktok`, `twitterByok`, `whatsapp`, `youtube`
Two of these differ from the platform names you send to the API: on this page
Instagram is `instagramApi` and X/Twitter is `twitterByok`.
#### Change the Card Layout
By default the cards flow into a responsive grid: one column on a phone, two on a tablet, and three on a desktop. Two selectors control that layout, and which one you want depends on what you are changing:
* **`.social-accounts-grid`** is the grid itself. It is a flex row that wraps, and the space between cards is its `gap`. Use it to change that spacing, or to replace the layout entirely.
* **`.social-account-card-wrapper`** is the cell holding one card. Its `width` is what decides how many cards fit per row, and the page sets that width per screen size.
The cell is the **only** element on which a card's width, or the number of cards per row, can be changed. Everything between the cell and the card already fills the cell's full width, so a `width` set on `.social-account-card` (or on the unnamed wrapper between them) repaints the card inside a cell that has not moved, and the columns stay exactly where they were.
Neither of these is the card. To restyle a card's border, background, or text, use [`.social-account-card`](#css-class-hooks) as before.
To change only the space between cards:
```css theme={"system"}
.social-accounts-grid {
gap: 24px !important;
}
```
To put every card on its own full-width row, one rule covers every screen size, because `!important` also wins against the widths the page sets in its own screen-size rules:
```css theme={"system"}
.social-account-card-wrapper {
width: 100% !important;
}
```
To set your own column count, take the grid over completely. The cell width has to be released as well, otherwise it fights the columns you just defined:
```css theme={"system"}
.social-accounts-grid {
display: grid !important;
grid-template-columns: repeat(2, 1fr) !important;
gap: 16px !important;
}
.social-accounts-grid .social-account-card-wrapper {
width: auto !important;
}
```
**If you have [restricted the page](#set-social-networks-access) to one or two
networks**, the row does not fill its columns, and the page centers it for you. On
`.social-accounts-grid` it sets a `width` and a `max-width` that narrow the grid to
the cards it actually has, and `align-self: center` to center that narrower box,
with automatic side margins as a fallback. On each `.social-account-card-wrapper`
it sets a correspondingly wider `width`, so the cards keep the size they have in a
full row. All of this applies only at the screen sizes where the row is actually
short. With three or more networks the row is always full and none of it is set at
all. Your own rules override either element as normal, with `!important`, but note
that `align-self` is the declaration doing the centering: to align a short row
differently, override that as well as the widths.
Avoid selectors that count elements, such as
`.main-content > div > div > div`. The page's structure is not a contract and
changes between releases, so a rule like this can start matching a different
element, or every card at once, without your stylesheet changing. The two
selectors above are stable and are the supported way to reach the layout.
#### Example: Hide the Page Heading
The heading is an `` element, so a tag-qualified selector works if you prefer one:
```css theme={"system"}
h1.heading-social-accounts {
display: none !important;
}
```
#### Example: Restyle Unconnected Cards as Buttons
By default an unconnected card is a recessed grey surface with muted text, which some users read as unavailable rather than as something to click. The rules below turn every unconnected card into an outlined button in your brand color and leave connected cards untouched.
```css theme={"system"}
/* Unconnected cards become outlined buttons. */
.social-account-card.unlinked-card {
background-color: #ffffff !important;
border-color: #4f46e5 !important;
border-width: 2px !important;
border-radius: 8px !important;
}
/* An !important rule also wins over the page's own hover styles,
so restate the hover state you want. */
.social-account-card.unlinked-card:hover {
background-color: #eef2ff !important;
border-color: #4338ca !important;
}
/* The muted call to action becomes the button label. */
.social-account-card.unlinked-card .click-to-link {
color: #4f46e5 !important;
font-weight: 600 !important;
}
```
For a solid fill instead, set the card background and recolor its text. Only the selectors in the table above are a contract, so recolor the network name with a plain descendant selector:
```css theme={"system"}
.social-account-card.unlinked-card {
background-color: #4f46e5 !important;
border-color: #4f46e5 !important;
}
.social-account-card.unlinked-card p {
color: #ffffff !important;
}
```
The network logo on an unconnected card is intentionally desaturated and has no
selector of its own, so it stays greyscale on a colored background. Preview
your stylesheet on the [linking page](/docs/multiple-users/user-integration) before
rolling it out to your users.
### Change Page Title, Close Button, and Favicon
Set your own page title, close button, and favicon (.ico file).
### Footer Text
Customize the footer text and add copyright information on the social linking page. This allows you to display the footer text in different languages.
## Enterprise Features
### Max Pack
All the feature of [Max Pack](/docs/additional/maxpack) included with Enterprise.
### Automatically Resync Facebook and Instagram Pages
When security events occur on Facebook, such as password changes, all Facebook pages associated with that user account (including linked Instagram accounts) need to be reconnected to Ayrshare. For accounts managing numerous pages, this process can be time-consuming.
- The "Resync" option is available when connecting Facebook or Instagram pages.
-
By enabling this feature, all previously connected pages will be automatically relinked to the
user profile.
-
Note: Only previously linked pages will be reconnected; new pages will not be added
automatically.
- This feature supports Facebook accounts with up to 400 pages.
-
For accounts exceeding 400 pages, it's recommended to distribute pages across multiple Facebook
accounts.
-
**Best Practice:** Only use the "Resync" option when necessary to reconnect all pages. For
routine operations, it's generally not required.
### White List IP
Enhance your account security by whitelisting specific IP addresses. This feature restricts API access to only approved IP addresses, adding an extra layer of protection to your Ayrshare integration.
### Technical and Security Reviews
Collaborate directly with Ayrshare's project team for comprehensive technical and security reviews. This service ensures that your integration aligns with best practices and meets your organization's specific security requirements.
### Dedicated Account Management with Priority Support
Receive personalized support from a dedicated account manager who understands your unique needs and can provide tailored solutions. Enjoy priority access to technical support, with faster response times and escalation procedures for critical issues.
### Custom API Endpoints
For enterprises with specific requirements, Ayrshare can develop custom API endpoints to seamlessly integrate with your existing systems and workflows.
# User Integration
Source: https://www.ayrshare.com/docs/multiple-users/user-integration
How to integrate with Ayrshare allowing your users, clients, or brands to link their social media accounts.
Ayrshare operates as an API-centric platform, designed to work discreetly in the background.
The *only interaction* your users will have with an Ayrshare interface is through the white-labeled social linking page, which you open for them with a [JWT URL](/docs/multiple-users/api-integration-business#single-sign-on-with-jwt-authentication).
This process is designed to be smooth and effortless for your users, without requiring them to create an account or log in.
Your customers never access the Ayrshare dashboard — that is reserved for your
internal team. You can [white-label the connect accounts page](/docs/multiple-users/manage-user-profiles#white-label-the-connect-accounts-page)
with your logo, colors, headers, and more so it feels like a native part of
your product.
Ayrshare organizes each of your users into an Ayrshare **User Profile**. A User Profile can have one connection to each social network.
## User Experience
Your users will authorize their social media accounts, such as Instagram or Facebook, to allow you to post, get analytics, etc. on their behalf via Ayrshare's API. **Each User Profile can have one connection to each of the social networks.**
1. Within your app, create a link or button, e.g. "Link Your Social Accounts", that your user will click to open the social linking page.
2. When the link is clicked, open a new browser tab, window, or webview with the URL returned from the [/generateJWT endpoint](/docs/apis/profiles/generate-jwt).
3. The social linking page will show all the available networks, which you can [control](/docs/multiple-users/manage-user-profiles#set-social-networks-access). At the top will be your branded logo. You can [customize](/docs/multiple-users/manage-user-profiles#user-profile-settings) many aspects of this page such as the title, help link, and profile image.
4. Your user will choose the social networks they want to link and close the tab once complete by clicking the All Done button.
At the top of the page will be your branded logo.
**From the user's perspective they are done and have successfully linked their social media accounts**. With just a few clicks they will have their social media accounts linked and you'll be able to post on their behalf.
Behind the scenes, you'll create new profiles via the API or Dashboard, receive a Profile Key used to post on behalf of the users, and open the above social linking page by passing a JWT token to perform single sign on.
Please see the next page on API Integration for Business on how to do this.
## Social Linking Page Customization
You can customize many portions of the social linking page for either all users
or specific users. Please see each section for details. There are also specific
details for the Business and Launch Plans, with and without Max Pack.
### Business Plan and Launch Plan Customizations
-
Add your own [company
logo](/docs/multiple-users/manage-user-profiles#update-logo-on-social-linking-page) or remove
entirely. Please see your onboarding integration guide for details.
-
Select which social networks your users can access either
[globally](/docs/multiple-users/manage-user-profiles#set-social-networks-access) or at the [user
profile level](/docs/apis/profiles/overview#enable-or-disable-social-networks).
-
Remove links to help pages and [add your own help
pages](/docs/multiple-users/manage-user-profiles#help-links-visible).
-
Set the [page
redirect](/docs/multiple-users/api-integration-business#opening-and-closing-the-social-linking-url)
for closing the social linking page.
-
Set the [top and sub headers](/docs/apis/profiles/create-profile) on the social linking page.
You can show your user's name, their business, another message, or remove entirely.
### Business Plan and Launch Plan Max Pack Customizations
-
Personalize your social linking page appearance with your own [custom CSS
file](/docs/multiple-users/manage-user-profiles#customize-css) - modify colors, fonts, and control
which features are displayed. The page heading, instruction text, logo, Close button and every
social network card carry [stable class
hooks](/docs/multiple-users/manage-user-profiles#css-class-hooks) so you can restyle the connect
buttons, style connected and unconnected cards differently, target a single network, or change
how the cards are laid out.
-
Customize the browser tab by adding your own [favicon and
title](/docs/multiple-users/manage-user-profiles#change-page-title-close-button-and-favicon) to
the social linking page.
-
Edit the ['Close' button text](/docs/multiple-users/manage-user-profiles#change-page-title-close-button-and-favicon) on
the social linking page.
-
Add [custom footer content](/docs/multiple-users/manage-user-profiles#footer-text) to the social
linking page using text or HTML - perfect for your copyright notice or website links.
-
Set up a staging server environment to test with live social accounts, up to your plan's User
Profile cap.
**Business Plan** and **Launch Plan** customers can purchase the [Max Pack](/docs/additional/maxpack) for
more customization options.
**Enterprise Plan** customers get
[advanced features](/docs/multiple-users/manage-user-profiles#enterprise-features).
# Airtable
Source: https://www.ayrshare.com/docs/packages-guides/airtable
Manage your users' social media accounts from Airtable
## Overview
[Airtable](https://www.airtable.com) is a versatile cloud-based platform that seamlessly blends the structure of a spreadsheet with the robust capabilities of a database.
By integrating Airtable's automation scripts - written in JavaScript - with Ayrshare's API, you can streamline your social media management directly within Airtable. This integration empowers you to post content, analyze performance metrics, and manage comments on behalf of your users, all from one centralized location.
In this guide, we'll walk you through the steps to set up the integration.
## Set Up
Running Airtable Automation Scripts requires a [paid](https://airtable.com/pricing) Airtable plan.
Please be sure your Airtable plan includes automations with scripts.
This guide shows you how to automatically post to linked social media accounts in Airtable via [Ayrshare](https://www.ayrshare.com).
You can post to a single company's social accounts or to your managed client's social media accounts. All the below code can be found at [GitHub](https://github.com/ayrshare/airtable-post-social-media/blob/main/script.js).
## Gather Your API Key
Start by getting your free or paid plan API Key in [Ayrshare Dashboard](https://www.ayrshare.com). The key will be used in the script below.
If you are on the Ayrshare [Launch Plan](/docs/multiple-users/business-launch-overview) or [Business Plan](https://www.ayrshare.com/business-plan-for-multiple-users/) and want to post on behalf of your clients, gather all your client's Profile Keys either via the /user or /create-profile endpoints or in the Ayrshare Dashboard.
Be sure you have linked a few social accounts in Ayrshare. Please verify in [Ayrshare Social
Linking page](https://app.ayrshare.com/social-accounts).
## Create an Airtable Workspace
In [Airtable](https://www.airtable.com), create a new workspace with the fields. Please be sure to name cell columns as below:
- `Post` as Long Text
-
`Platforms` as Multi Select with types: facebook, instagram, twitter, linkedin, reddit, and
telegram
- `Images` as Attachment
- `Profile Keys` as Single Line Text
- `Status` as Single Line Text.
- `Schedule Date` as Date with Local Format, Include Time Field, and Time Format 24 Hours
These fields will be used in the Airtable automation script we are about to build.
See a [live Airtable example](https://airtable.com/shrCWY0oA1ghB42tI/tblpnTEiPwyuViqBo).
See a live Airtable example
## Enter in Test Post Data
We need some sample data to test the post. Here is a suggestion:
- `Post`: Enter *Happy New Year 2025*
-
`Platforms`: select one or more networks you have linked. Please be sure the name is lowercase.
-
`Images`: Attach an image. We like this one you can download and attach:
[https://img.ayrshare.com/012/gb.jpg](https://img.ayrshare.com/012/gb.jpg)
-
`Profile Keys`: If you are on the Business Plan or Launch Plan and want to post to a client's profile, enter
their Profile Key. *Otherwise, leave blank.*
-
`Status`: Enter *pending*. The script only grabs records that are set to pending. Please be
sure "`pending` is lowercase.
-
`Schedule Date`: Leave blank since we'll just test immediate posting right now. Later you can
select a future date to schedule the post.
## Build an Automation Script with the Script Editor
We'll now build the Airtable automation script that reads your data from the table, creates a post, and send it to the social networks via Ayrshare. You will be using the Airtable script editor.
### Add Trigger
* In the workspace, click on *Automation* and then *+New automation.*
- Name the automation.
- Click *Choose a Trigger*.
- Select When a Record is Created.
- Select the table with the above fields.
- Click Done.
## Add Action
- Start by clicking *Add Action*.
- Select *Run Script*. You will be brought into the script editor.
**Delete** the line:
```javascript theme={"system"}
console.log(`Hello, ${base.name}!`);
```
And **copy and paste** into the script editor the following code:
```javascript theme={"system"}
const API_KEY = "Your API Key"; // Get a free key at app.ayrshare.com
console.log(`Starting Post ${base.name}!`);
const sendPost = async (data) => {
const { post, platforms, imageUrls, profileKeys, scheduleDate, shortenLinks } = data;
const body = Object.assign(
{},
post && { post },
platforms && { platforms },
profileKeys && { profileKeys: profileKeys.split(",") },
Array.isArray(imageUrls) &&
imageUrls.length > 0 && {
mediaUrls: imageUrls.map((image) => image.url)
},
scheduleDate && { scheduleDate },
shortenLinks !== undefined && shortenLinks !== null && { shortenLinks }
);
console.log("Posting JSON:", JSON.stringify(body, null, 2));
if (profileKeys) {
body.profileKeys = profileKeys.split(",");
}
const response = await fetch("https://api.ayrshare.com/api/post", {
method: "POST",
body: JSON.stringify(body),
headers: {
"Content-Type": "application/json",
Authorization: `Bearer ${API_KEY}`
}
}).then((res) => res.json());
return response;
};
const table = base.getTable("Posts");
const query = await table.selectRecordsAsync();
const filteredRecords = query.records.filter((record) => {
const status = record.getCellValue("Status");
return status === "pending";
});
for (let record of filteredRecords) {
const post = record.getCellValue("Post");
const images = record.getCellValue("Images");
const platforms = record.getCellValue("Platforms");
const profileKeys = record.getCellValue("Profile Keys");
const scheduleDate = record.getCellValue("Schedule Date");
const shortenLinks = false;
const response = await sendPost({
post,
platforms: platforms.map((x) => x.name),
imageUrls: images,
profileKeys,
scheduleDate,
shortenLinks
});
console.log(response);
if (response) {
let status;
if (Array.isArray(response)) {
status = response.map((x) => x.status).every((x) => x === "success") ? "success" : "error";
} else {
status = response.status;
}
await table.updateRecordAsync(record, {
Status: status
});
}
}
```
This code will read from your table and post to Ayrshare. However, you first need to add in your API Key (gathered from above).
Replace `Your API Key` with your real API key.
## Test the Script
In the script editor, press *>Test*
The script will run and output the response from the API call. If everything worked, you'll see a success message returned, the pending field in your records changed to success, and your post on the selected social network.
Once you create a new record in the table, the script will run and process pending records.
## Airtable Docs
If you want more information, see the [Airtable docs](https://www.airtable.com/developers).
They have details on how to use the Airtable script editor.
## Video Tutorial
Here is a great video tutorial from the team at Automate All The Things. This video walks through how to integrate Ayrshare into a live Airtable project.
Please see more [examples of integrating Airtable with social media](https://www.ayrshare.com/blog/automatically-post-to-social-media-from-airtable/).
## Questions
If you have any questions or comments, please reach out to us via [email](mailto:contact@ayrshare.com) or chat with us.
# Bubble.io
Source: https://www.ayrshare.com/docs/packages-guides/bubble
Use the Bubble Ayrshare plugin or API Connector to manage your users' social media accounts
## Overview
[Bubble.io](https://www.bubble.io), a popular no-code platform, enables you to build web and mobile apps without writing a single line of code.
By integrating Ayrshare's social media API, you can manage your users' social media accounts directly within your Bubble app.
There are two ways to achieve this:
-
**Bubble Ayrshare Plugin**: This user-friendly option requires minimal set up. However, it has
limited functionality compared to the Bubble API Connector.
-
**Bubble API Connector**: For greater flexibility and control, utilize the Bubble API Connector.
This approach allows you to directly interact with Ayrshare's API, enabling a wider range of
functionalities within your Bubble.io app.
This guide will walk you through both integration options.
## Quick Start: The Bubble.io Ayrshare Plugin
[Bubble is one of the most powerful no-code software development platforms](https://www.ayrshare.com/blog/the-definitive-bubble-review-a-flexible-no-code-app-builder-growing-over-50/). The simplest way to get started is with Ayrshare's [Bubble.io Plugin](https://bubble.io/plugin/ayrshare-social-media-api-1607956467620x490188301088063500). See below for a more [advanced Bubble integration](/docs/packages-guides/bubble#the-bubble-api-connector-plugin).
First create an account at [ayrshare.com](https://www.ayrshare.com). Then connect your social media accounts.
Once your accounts are connected you can navigate to the API Dashboard and copy your API key.
Remember that when you paste in your API key in your Bubble app, to include the word "Bearer" in front of your API key.
For example:
`Bearer bf55cc6f-76ac-46ce-b497-439d766f6c12`
Add the Ayrshare plugin via the Bubble plugin marketplace to your Bubble app. In the plugin field "API Key" enter your API Key.
Now you can send posts via your Bubble app to your social media accounts.
The image below is an example workflow call in Bubble to the plugin for an post with an image.
The video above explains this in more detail. Ensure that you are using the following parameter types:
- post: a text formatted as JSON-safe
-
platforms: a list of texts where each text has parenthesis around it, such as
`"facebook","instagram"`
- media: a text URL formatted as JSON-safe
- date: a date/time formatted as JSON-safe
The Ayrshare Plugin allows you to post and delete posts. To unlock the full power of Ayrshare, we recommend you use the Bubble API Connector Plugin and configure it with the endpoints that you need for your app.
## The Bubble API Connector Plugin
Alternatively, you can use the Bubble API Connector Plugin to access the full power of the Ayrshare API. Here is a video which will get you started using the Bubble API connector with Ayrshare and walks you through how to post multiple images per post.
Bubble's API Connector can sometimes be tricky where missing a single closing quote or space can
cause the connection to fail. We recommend watching the below videos carefully and re-reviewing if
something isn't working.
Below is another tutorial video showing how to get social profile analytics in Bubble.
## Post to Multiple Social Media Accounts
Here is a article with an overview:
## Validate Bubble Post Data
When posting to Bubble via the API Connector, it can be difficult to determine if you are sending valid JSON. Often if the JSON posted to Ayrshare is invalid the response will be HTML.
Ayrshare has a /validateJSON URL that allow you to post to instead of the typical /post endpoint. It will return "Valid" or "Not Valid". Be sure to set the Content-Type as `text/plain` instead of the typical `application/json`.
Click the Troubleshooting link for "Response Returns as Bad Request" to see the details.
## Upload Media Files in Bubble
Use Bubble's File Uploader to upload your media files. These files are stored on Amazon's S3. You will receive back a URL that can be used in the `mediaUrls` body parameter of the `/post` endpoint.
## Generate JWT Token in Bubble
To generate a JWT Token in Bubble, first you need to Stringify the private.key you send to the [/profiles/generateJWT](/docs/apis/profiles/generate-jwt) endpoint.
**Step 1:** Go to [https://onlinetexttools.com/json-stringify-text](https://onlinetexttools.com/json-stringify-text) and paste in your private.key in the left-hand input text section. Then copy the stringified text on the right side to your clipboard.
**Step 2:** In your Bubble app, create a new call with the API Connector as shown below. The text in the `privateKey` field in the Body area is the stringified text that you created in step 1 above.
Also include your provided `domain` and `profileKey` as shown below.
**Step 3:** Click the **Initialize call** button and save the response. The `url` field in the response is what your user will click to access the social media accounts linking page.
## Allow Users to Link Their Social Accounts
If you are using the Launch Plan, Business Plan, or Enterprise Plan, this video shows you how to set up Bubble to enable all your users to link their social accounts.
## Rewrite Text and Post to Social with AI in Bubble
How you can use Ayrshare and Bubble.io to build a rewriting and social posting app. The app takes some text, rewrites it 5 different ways, and posts it to your social accounts.
## Bubble API Connector
We recommend using the [Bubble API Connector](https://manual.bubble.io/account-and-marketplace/building-plugins/adding-api-connections) to make your Ayrshare API calls.
Please note that Bubble will time out all API calls after 150 seconds and then retry the call once more. Large video might take longer than 150 seconds, which will cause Bubble to automatically try the post once more and result in a duplicate post error. We recommend using a [schedule post](/docs/help-center/technical-support/response_bad_gateway_502_or_504_error) for larger videos.
## Useful Bubble Blog Articles
* [Build a Social Media Posting Mobile App with No Code](https://www.ayrshare.com/blog/build-a-social-media-posting-mobile-app-with-no-code/).
* [How to Create a Social Media Scheduling App with No Code.](https://www.ayrshare.com/blog/how-to-create-a-social-media-scheduling-app-with-no-code/)
# Flutter
Source: https://www.ayrshare.com/docs/packages-guides/flutter
Manage your users' social media accounts from Flutter using the Ayrshare Flutter SDK package
## Overview
[Flutter](https://flutter.dev) is Google's UI toolkit for building beautiful, natively compiled applications for mobile, web, and desktop from a single codebase.
The Ayrshare Flutter SDK package allows you to integrate Ayrshare's social media API with your Flutter apps.
## Installing
Install the package as a library in your app.
```shell theme={"system"}
$ flutter pub add ayrshare_flutter
```
Ayrshare Flutter SDK package
## Usage Example of Posting
This sample app creates a button which calls the post function. It posts a random quote and a random image to the linked Twitter and Facebook accounts. It prints the response which includes the URLs for the live posts on the social networks.
```dart theme={"system"}
import 'package:flutter/material.dart';
import 'ayrshare_flutter.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
home: PostingPage(),
);
}
}
class PostingPage extends StatelessWidget {
///TODO get your API key by signing up at ayrshare.com
final apiKey = '###-###-###-###';
@override
Widget build(BuildContext context) {
return Scaffold(
// appBar: null,
body: Center(
child: ElevatedButton(
onPressed: () async {
await post(
apiKey: apiKey,
body: {
'randomPost': true,
'platforms': ['twitter', 'facebook'],
'randomMediaUrl': true
},
).then((value) => print(value));
},
child: const Text('Post To Social'),
),
));
}
}
```
## More Information and Documentation
-
Launch the linking page (generateJWT) on [iOS with
Flutter](/docs/apis/profiles/generate-jwt#mobile-jwt-examples).
- [Github Repository](https://github.com/ayrshare/ayrshare_flutter)
- [Changelog](https://pub.dev/packages/ayrshare_flutter/changelog)
# FlutterFlow
Source: https://www.ayrshare.com/docs/packages-guides/flutterflow
Integrate the Ayrshare API into your FlutterFlow app
## Overview
[FlutterFlow](https://flutterflow.io) is a no-code development platform that allows you to build mobile and web apps.
The Ayrshare API can be integrated into your FlutterFlow app to manage your users' social media accounts.
## Tutorial
We've created a [great tutorial](https://www.ayrshare.com/blog/build-a-social-media-posting-app-in-no-code-platform-flutterflow/) on integrating the Ayrshare API using [FlutterFlow](https://flutterflow.io).
In this FlutterFlow tutorial, we will create a mobile application using FlutterFlow, a no-code development platform. The primary goal of the app is to enable users to post text and images simultaneously to multiple social media platforms, including Facebook, X/Twitter, and LinkedIn.
To achieve this, we will utilize the Ayrshare API, which simplifies the process of posting content to various social networks. By integrating Ayrshare into our FlutterFlow app, users will be able to connect their social media accounts and post updates across multiple platforms with ease.
Furthermore, we will expand the functionality of the app to allow all users of the FlutterFlow platform to post to their own social media accounts.
This will be accomplished by leveraging the Ayrshare Profile Key, a unique identifier that securely links a user's social media profiles to their Ayrshare account.
By the end of this tutorial, you will have a fully functional mobile app built with FlutterFlow that empowers users to seamlessly post content to Facebook, X/Twitter, LinkedIn, and other supported social networks, all from a single interface. The integration of Ayrshare and the utilization of Profile Keys will provide a streamlined and efficient way for users to manage their social media presence.
# Ayrshare SDKs & Integration Guides Overview | Documentation
Source: https://www.ayrshare.com/docs/packages-guides/overview
Explore Ayrshare's official SDKs and integration guides, including Node.js and Python, to connect the social media API to your app quickly and reliably.
## Ayrshare SDKs and Integration Guides
SDKs, packages, modules, and guides can help facilitate integration with Ayrshare.
Use an Airtable automation scripts to post to social media directly from Ayrshare
Integrate Ayrshare with Bubble.io using the Ayrshare Bubble plugin or the Bubble API Connector
Manage your users' social media accounts from Flutter using the Ayrshare Flutter SDK package
Integrate the Ayrshare API into your FlutterFlow app
Integrate the Ayrshare API into your Make app to manage your users' social media accounts
Connect n8n's AI Agent to the Ayrshare MCP Server to publish, schedule, and analyze across your social networks
Node.js NPM client package for Ayrshare
Integrate the Ayrshare API into your Notion app to manage your users' social media accounts
Python PyPI client package for Ayrshare
Integrate the Ayrshare API into your Retool app to manage your users' social media accounts
If there is a package or guide you are looking for, please [contact us](mailto:support@ayrshare.com).
# Update Archive
Source: https://www.ayrshare.com/docs/whatsnew/archive
What's New Archive
## Ayrshare Changelog
Follow us on Twitter, our Social Media API Podcast, or our Newsletter for the latest updates.
### December 2023
-
**Instagram Followers By Time**. Get detailed hourly breakdowns for when
your Instagram followers are online. This allows you to optimize posting for
maximum engagement, by determining the most popular times.
-
**Public Analytics Data**. The Brand endpoint is now available with the
Business Plan. Retrieve analytics data on all public social accounts. For
example, get social stats on @theRock or @taylorswift. This also allows the
lookup of Facebook Page IDs for tagging locations in Facebook and Instagram
posts.
-
**Reply to Comments**. Reply to comments (i.e. comment on comments) for
Facebook, Instagram, LinkedIn, TikTok, Twitter, and YouTube.
-
**Facebook History**. Facebook Groups history is now available for posts
made outside of Ayrshare.
-
**Media Metadata**. Get the metadata of a media file URL. For example, for a
video you can get the codec, duration, file size, resolution, and more.
-
**X/Twitter Analytics**. X/Twitter post analytics and get all history now
returns links to the video or animated GIF files.
### November 2023
-
**Facebook Stories**. Publish photos or videos as Facebook Stories. Stories
are a more immersive posting format that disappear after 24 hours.
- **YouTube Comments**. Get YouTube comments by the YouTube social ID.
-
**Instagram Analytics**. Instagram Reels Analytics have been enhanced to
include the average amount of time spent playing the reel and the total
amount of time the reel was played.
-
**Linkedin History**. The history endpoint for LinkedIn now returns all the
media images of a post.
-
**Reddit Flair**. Retrieve the flair of a Subreddit to add the flair to a
Reddit post. Some subreddits require specific flair categories to post.
-
**Social Linking**. Customize the modals on the social linking page for
Facebook Groups, Instagram, and Telegram. Add your own HTML including
images.
-
**Pinterest Image Carousel**. Now you can post up to five photos in a
carousel with links, titles, and descriptions. Users on Pinterest can swipe
through the carousel directly from the feed.
-
**Facebook Analytics**. New Facebook analytics data points on social
accounts available. New data includes video data and more detailed
impressions.
-
**Integration Package**. You can now download or reset your integration
package via the dashboard. The integration package includes important set up
and domain information, example endpoint calls, and more.
-
**Comment Deletion**. Delete Instagram and YouTube comments. Other social
networks where you can delete comments are Facebook, LinkedIn, Reddit, and
X/Twitter.
-
**YouTube Categories**. Look up and assign YouTube video categories. The
categories are an important input for discovery of your videos in the
YouTube algorithm.
-
**Reddit Comments**. Now you can add, get, and delete comments on Reddit.
-
**Staging Server**. Create a staging server environment in the dashboard. Go
to the User Profiles page and click on Settings to add this to your account.
This is a Max Pack feature.
### October 2023
-
**New Dashboard**. We released the new Ayrshare dashboard, which you can
access at app.ayrshare.com. It's now easier than ever to navigate with the
new design, based on Chakra UI, with many enhancements over the previous
developer dashboard.
-
Improved self service account management, such a subscribing to Max Pack.
-
Enhanced User Profile settings, such as upload your logo and set custom
CSS (Max Pack required).
- All new webhook logs with advanced search.
- More detailed API call tracking.
-
**Publish Documents to LinkedIn**. Use the API to post a document on
LinkedIn. Supported file formats include: PPT, PPTX, DOC, DOCX, and PDF.
-
**Webhooks Per User Profile**. Webhooks can now be registered per User
Profile. Set up a different webhook for each User Profile.
### September 2023
-
**Facebook Post Draft**. Now you can create a draft post or scheduled post
that appears in the Meta Business Suite Draft or the Meta Business Suite
Scheduled Posts tab.
-
**Notes on a Post**. Add reference notes to a post that can be retrieved via
the history endpoint. You can also update those notes later. A useful
complement to the post approval workflow.
-
**TikTok Comments**. TikTok comments now returns replies on comments in a
list with the associated metadata for each reply.
-
**Facebook and Instagram Comments**. Now you can get Facebook and Instagram
single comments and replies.
-
**Check if Uploaded URL Exists**. A new endpoint to check if a uploaded
media URL exists. Should be used in conjunction with the large media upload
URL.
-
**Linkedin History**. Get All History now returns the link to the image or
video attached to the LinkedIn post.
### August 2023
-
**TikTok Post Text**. TikTok post text now supports up to 2,200 characters.
This is an increase from the prior limit of 150 characters. Get increased
engagement on your videos since the TikTok algorithm uses this text to make
recommendations.
-
**X/Twitter Captions**. Add subtitles, also known as captions, to X/Twitter
video files. Uploading your own captions ensures that your videos are
transcribed correctly.
-
**Post to All Social**. There is a new "platforms": \["all"] parameter for
the /post endpoint. This allows you to automatically post to all linked
social accounts.
-
**Alt Text Generation**. Use the /generate endpoint to automatically
generate alt text for an image. This alt text description is usually not
visible to average users but is accessible to search engines and assistive
technologies like screen readers, used by visually impaired individuals.
### July 2023
-
**Announcing the Max Pack**. The Max Pack is a new add-on that provides
additional endpoints and other useful utilities for building your app or
platform. Includes all these great features for a single monthly fee.
- AI-Generated post creation, rewrite, and transcription.
- JWT longer expiration time with an account connection email link.
- New link shortener with analytics.
- Resize images for each social network with added effects options.
- Create images based on a template.
- Staging server.
- Advanced customizations for Business Plan linking page.
-
**Linkedin User Profile**. The /user endpoint now returns the LinkedIn
logged in username and the profileUrl with the company vanity URL. For
example the username "ayrshare" and the profileUrl
"[https://www.linkedin.com/company/ayrshare](https://www.linkedin.com/company/ayrshare)".
- **Linkedin Comments**. You can now delete comments on LinkedIn.
-
**YouTube Comments**. The /comments endpoint now returns all the replies to
YouTube comments.
### June 2023
-
**Facebook Analytics**. New data points were added for video content posted
to Facebook and Facebook Reels. The /analytics endpoint has a richer set of
data available.
-
**New Instagram Capabilities.**
-
Instagram now allows 50 published posts in a 24-hour period, up from 25.
- Now you can add a cover image to a Reels video by sending a URL.
- Tag a Reel with Instagram users.
- You can set the name of the audio when you post Instagram Reels.
### May 2023
-
**Instagram Stories**. Instagram just made available the publishing of
Instagram Stories - something we have all been waiting a long time for. You
can now post Instagram Stories via the Ayrshare API with an image and video.
Stories disappear after 24 hours.
-
**YouTube Analytics**. YouTube Live Broadcasts data was added the analytics.
When you have a live broadcast either current on-going or completed, you can
retrieve data such as the start and end times, number of current viewers,
and current status.
-
**Video Transcription**. The new /generate/transcription endpoint can
provide a transcription of a video file. This transcription can then be used
in the /generate/post to quickly create a social media summary of the video.
-
**Twitter Polls**. You can now create a Twitter poll by specifying the
answer choices and the duration. Also, analytics have been updated to return
poll data such as the results.
-
**Quote Tweet**. You can now quote another Tweet when you post a new Tweet
by including the Tweet id.
### April 2023
-
**TikTok Direct Publishing**. Ayrshare now offers direct publishing of
TikTok videos. There is no longer a requirement to approve the video in the
mobile app.
-
**TikTok Comments**. TikTok has been added as one of the social networks
where you can get, add, and delete comments.
-
**TiKTok Demographics**. Get demographic data for a user's TikTok account
including audience country and gender analytics.
-
**Facebook Reels**. Reels posting now supports videos up to 90 seconds.
-
**Hashtag Suggestions**. New endpoint to get recommended hashtags based on a
keyword. The suggestions are ranked by view count and sourced from TikTok.
-
**Validation**. Two new endpoints to help you validate your content. One
which will pre-validate a post before publishing, and the other will verify
your JSON formatting.
### March 2023
-
**AI Content Generation**. There are two new Generate endpoints. One allows
you to create text based on the text you send, and the other will rewrite
your post and give you several options to use. Powered by OpenAI ChatGPT
with GPT-4.
-
**Instagram Creator Accounts**. Ayrshare has added support for Instagram
Creator Accounts. You can get analytics for these accounts, but you cannot
post via the API.
-
**Comment Management**.
- Get, Post, and Delete comments on posts not sent via Ayrshare.
-
We have also added a new Delete Comments endpoint for Facebook and
Twitter posts sent via Ayrshare.
-
The limit of how many comments you can get for a post has been increased
to 500.
-
**Instagram Stories**. The All Post History endpoint now returns Instagram
Stories.
-
**Retries**. There is a new Retry endpoint which allows you to retry
publishing a failed post once.
-
**Telegram**. The Telegram username is now available in the User endpoint.
### February 2023
-
**Ayrshare Flutter Package**. The initial release of the official Ayrshare
Flutter package was released on pub.dev. It's now easier to integrate
Ayrshare into your iOS and Android apps.
-
**Easier Testing**. Send random post text, comment text, and images for
testing on the social networks. Remember that even your test posts have to
adhere to the guidelines of the social networks.
-
**LinkedIn Major Update**:
-
Now you can get the history of posts for LinkedIn, even if those posts
were not sent via Ayrshare.
-
Linkedin post analytics were enhanced to include reactions such as
"insightful" or "love" on a post, the count of video views, and now
supports Personal Page posts.
-
Get LinkedIn post analytics for posts that were not sent through
Ayrshare.
- Set your own thumbnail for an uploaded video.
- Add alternative text (alt text) for images and videos.
- Add title or media captions to LinkedIn images or videos.
-
Mention another LinkedIn organization handle by adding @handle in the
post text.
- Post up to 9 images on a LinkedIn post.
-
**Idempotent Posts**. Idempotency allows you to safely retry posts without
accidentally performing the same operation twice.
### January 2023
-
**YouTube Playlists Analytics**. Get analytics on your playlists including
average view duration, minutes watched, views, playlist starts, and more.
-
**Ayrlink**. The Ayrlink link in bio now automatically adds a default image
and your connected social accounts when you create a new page for a user.
-
**TikTok Webhook**. When the user publishes the video in the TikTok mobile
app, a "scheduled" webhook will be sent with the subAction:
"tikTokPublished".
-
**Notion Integration**. The new Notion integration allows you to post to
your social accounts directly from a Notion table.
-
**Retweet Analytics**. Now you can get analytics on retweets that you sent.
-
**Ayrshare System Status**. In addition to following @ayrshare on Twitter,
you can get status updates via email.
### December 2022 🦇
-
**Post Analytics**. Post Analytics now automatically returns analytics on
all the social networks where the post was sent. Previously you needed to
specify the list of social networks in the `platforms` parameter.
-
**LinkedIn Analytics**. New analytics data points added to LinkedIn Social
Analytics endpoint: `uniqueImpressionsCount`, `clickCount`, `engagement`,
`likeCount`, `commentCount`, `shareCount`, `commentMentionsCount`,
`impressionCount`, `shareMentionsCount`.
-
**Facebook Video**. Facebook video uploads are much faster 🏃. You should
see a decrease in the API call time.
-
**Single Sign On Take Base64**. The generateJWT endpoint now accepts the
private.key as a Base64 string. This makes it easier to manage the keys
including the complexity of newline characters.
-
**LinkedIn Get All Posts History**. The /history get all posts endpoint now
retrieves LinkedIn posts and analytics, even for posts that didn't originate
from Ayrshare.
### November 2022 🦉
-
**Ayrlink**. Create a customized Ayrlink personal bio page using the leading
social media API. Share products, websites, content, and more on Instagram,
Twitter, and TikTok.
-
**Google Business Profile Analytics**. Get analytics data like views and
action counts for Google Business Profile. Formerly known as Google My
Business.
-
**Reddit Analytics**. Get analytics data including Karma, profile image, and
page URL.
-
**Facebook Analytics**. The count for the number of times your Facebook post
was shared is now available on the analytics endpoint. The Facebook
reactions count has been extended to include the past two years of data.
-
**Bitly**. Business and Enterprise plans now support Bitly for link
shortening.
-
**Account Linking**. Change the subHeader on the Social Account linkage page
for a user profile.
-
**NPM Package**. The Ayrshare social-post-api NPM package was updated with
new functions and examples.
-
**User Data**. The /user endpoint now returns the profile urls and
usernames.
### October 2022 🦅
-
**Pinterest**. Add alternative text, also known as alt text, to a Pinterest
image or video. Pinterest alt text is an accessibility feature used for
additional user info and screen readers.
-
**Google Business Profile**. Formerly known as Google My Business. You can
specify a product category for an image or video so the media is categorized
in the "Photos" section of the GMB console. For example, if an image has the
category "product", it will appear under the "Product" tab in Photos.
-
**YouTube Posting**. The YouTube endpoint now supports notifying your
subscribers and setting a publish at time.
-
**Dashboard Improvements**. The Ayrshare web dashboard was updated with an
updated design with some new icons and colors. You can also reset your API
or Profile Key in the Dashboard.
-
**Image Generation API Beta**. The Ayrshare social image generation API lets
you specify visual elements to create infinite variations of graphics that
you can use with the social media platforms. Powerful and easy to use.
### September 2022 🦆
-
**Facebook Reels**. You can now post videos as Facebook Reels. Reels are
short video that are 3-60 seconds long with a 9x16 aspect ratio.
-
**Short Link Preview Metadata.** Set the title, description, and image of
the link preview.
-
**Twitter History**. The platform history endpoint has been enhanced for
Twitter. The response now includes links to the published videos and photos.
-
**Twitter Comments**. Comments on a Tweet now returns the comments for all
the posts in the thread.
-
**TikTok Analytics**. Post analytics for TikTok now includes the video
thumbnail and music link.
-
**Pinterest History**. Get all the historical Pinterest posts, even those
not posted via Ayrshare.
-
**Brand Monitoring**. The brand endpoint has been enhanced to include
YouTube users and channels.
-
**Deleted Posts**. Now you can retrieve deleted posts via the history
endpoint.
-
**Instagram Reels**. Get analytics data on Instagram Reels including comment
count, like count, play count, and more.
-
**Alternative Emails for Ayrshare Alerts**. Choose different email addresses
to deliver alerts, such as unlinked accounts.
### August 2022 🐥
-
**Facebook Page Analytics**. The post analytics endpoint was enhanced with
Facebook Page like and comment counts and the original post URL.
-
**Facebook Animated GIFs**. Posting to Facebook now supports animated GIFs.
-
**YouTube Video Visibility**. Update a YouTube video visibility as unlisted,
public, or private.
-
**YouTube Analytics**. The YouTube channel analytics has been enhanced with
additional metrics including estimated minutes watched and thumbnail URL.
-
**YouTube History**. The platform history endpoint was enhanced to return
YouTube posts.
-
**YouTube Post History**. Get the history data of any YouTube post, even
those not sent via Ayrshare, by the platform social ID:
- **YouTube Comments**: Now you can post top-level YouTube comments.
-
**LinkedIn Comments**. Get the comments for Linkedin posts sent via
Ayrshare.
### July 2022 🐧
-
**Webhook Tools in the Dashboard:** In the Ayrshare dashboard, you can see
all your registered webhooks, all the actions sent, and even replay the
webhook. Learn more about webhooks.
-
**Twitter Analytics Enhanced:** The Twitter analytics data set now includes
verified account, number of likes, number of lists added, and banner url.
-
**Pinterest Videos:** You can now post videos to Pinterest via video pins.
-
**Enhanced Facebook Social Analytics:** Get additional analytics and
demographics data on Facebook Pages.
-
**Video captions for LinkedIn:** You can add captions to videos uploaded to
Linkedin.
### June 2022 🐔
-
**Instagram Reels**: Post an Instagram Reel via the API. Reels are like
TikTok videos where you can share a 60-second video and do some cool
creative additions, such as stitch together and edit video clips, add music,
apply filters, write captions, insert interactive backgrounds, and add
stickers.
-
**More Data On Posts**: The Analytics, Comments, and History endpoints have
been enhanced to return data on posts that were not sent via Ayrshare. These
new enhancements are for Facebook, Instagram, and Twitter.
-
**Approval Workflows**: You may need an approval workflow to separate the
content creator and the content approver. This is common practice to avoid
mistakes, maintain consistency, and adhere to regulatory or compliance
requirements in some industries. The Ayrshare API now natively supports an
approval state for each post.
-
**Twitter Threads Images**: Twitter Threads now accepts multiple images per
Tweet in the Thread. You can also specify that specific Tweets in the Thread
will not have an image.
-
**Instagram Location Tag**: Add an Instagram locations tag with the Facebook
Page Name. You can also still use a Facebook Page ID in place of the Page
Name.
-
**Reactivate User Profiles**: Business and Enterprise Plan admins can
reactivate suspended user profiles in the dashboard.
### May 2022 🐵
-
**Facebook @mentions**: Now you can @mention another page with the page name
directly. Previously the endpoint needed the page ID, and now you can use
the page name, such as @Ayrshare.
-
**Improved Brand Data**: The brand endpoint now supports Facebook. Send a
Facebook page name to look up a user's or company's social media public
information, such as followers, profiles image, and websites. These users
and companies do not need to be a linked Ayrshare user.
-
**Help Docs**: Use your own help docs as the link on the Social Accounts
page on the Business Plan. Your users can now link to your own support
pages.
-
**Twitter Comments and Replies**: Now get and add Twitter comments and
replies on a post.
- **YouTube Comments**: Get comments on a YouTube video.
-
**RSS Feeds**: The feed endpoint was updated with new abilities to update
the feed and get all feeds.
-
**Delete User Profile Enhanced**: Now you can delete a user profile even if
you only have the title.
-
**New /post Endpoints**: The /post endpoints were enhanced to allow GET to
retrieve an individual post and the ability to update the schedule date of a
post.
-
**Alt Text**: Add alt text to Twitter images and Facebook images and videos.
Alt text is an accessibility feature used for additional user info and
screen readers.
-
**Twitter Thread Analytics**: Analytics now supports Twitter Threads. If
your Twitter post ID was sent as a thread, you will see an array of
analytics data for all of the posts in the thread.
### April 2022 🐸
-
**Web Dashboard Improved**: The Ayrshare web dashboard has been upgraded and
now is faster, more responsive, and with several UI improvements. And you
can now post Twitter Threads, a.k.a TweetStorms, via the dashboard.
-
**New Analytics Data**: New analytics data points available. Access
demographics data for Instagram and Facebook accounts. Access country, city,
age distribution, and language reach. In addition, Instagram analytics now
provides the total like and comment count.
-
**Instagram Comments**: Instagram comments now return the commenter's
username and number of likes.
-
**GZIP Support**: API responses now support optional gzip compression.
-
**Tweet History**: Get all Tweets in the history endpoint, even those not
sent via Ayrshare.
-
**Test Unique Content**: As part of your testing, always use unique content
when sending to a social network. Now the randomPost parameter of the /post
endpoint will generate a random quote.
### March 2022 🐷
-
Get **LinkedIn Company Page Analytics** such as followers, views, and
clicks.
-
Get **TikTok Post Analytics** such as views, likes, and comments on your
TikTok videos.
-
**Post Instagram carousels** with images. You can now post up to 10 images
in an Instagram carousel.
-
**Use your own link shortener**, such as Bit.ly. This allows you to use a
custom domain in place of the Ayrshare short URL when shortening the link.
-
**Send videos titles** when posting videos to Facebook Pages and Groups.
-
The **history** endpoint for Instagram and TikTok was enhanced. Now the
/history endpoint returns the video thumbnail image for Instagram and the
username for TikTok.
- A new **endpoint to unlink** a user profile's social accounts.
-
There is an **upcoming API change** to the /history endpoint. By default, it
will return the most recent 20 records. You can specify the "count"
parameter to retrieve up to 500 records.
### February 2022 🐮
-
Enhancements to the **Google My Business** capabilities now allow for
"What's New" posts that can include Call to Actions, such as Learn More
buttons, images, and text.
-
**Automatically create a Twitter Thread** aka Tweetstorm. Send your text of
any length and Ayrshare will break it up into appropriately sized Tweets
with numbering.
-
**Get your whole development team using Ayrshare** with their own logins.
You can now add team members in the Ayrshare dashboard. Just go to User
Profile and when creating a new profile check the *create as team member*
box.
-
If Twitter has approved your account for **longer videos**, you can now post
videos up to 10 minutes in length.
### January 2022 🦁
-
**TikTok profile analytics** summaries are available.See average video
duration plus like, views, and share totals across all TikTok shares.
-
Get all **TikTok post history and analytics**. Even posts and shares created
outside of Ayrshare.
-
**Pinterest post analytics** now available. See impressions, saves, pin
clicks, and other useful data points.
-
**Post YouTube Shorts** via the API. Shorts are videos up to 60 seconds long
and have new discovery placement within the YouTube apps.
- Post an image and add flair to **Reddit**.
-
There is a new release of the **Ayrshare mobile app** for both iOS and
Android. With the new apps, you can see the full json responses for errors
and tap successful posts to open the live posts.
### November / December 2021 🐯
-
Add a bit of spice to your posts with **rich text**. For example: "I want
this one **bold**, x₂ and *italic*." Check out which HTML elements are
supported in the docs.
-
**Post to any Pinterest board** connected with a user. Whether the user has
1 or 200 boards you can now specify the specific board to post to. Learn
more.
-
**Direct TikTok Posting** for Premium and Business Plan users. Now post
videos directly to the TikTok mobile app. See how the full flow works.
- We have updated the Node.js NPM and Python **packages**.
-
The /user endpoint was updated to now retrieve the **count of Instagram
posts** done over the past 24-hour rolling period.
-
The /profile endpoint was updated to allow filtering to **find the exact
user's profile** you need. Filter by user profile title or refId.
### October 2021 🐨
-
**Pinterest** is now available as a destination platform. Pinterest has over
400 million monthly active users, and 60% are women. 80% of Pinners have
discovered a new brand on Pinterest so it's a great platform even if you are
just starting out. Read more.
-
Now Business plan members can get **all past Instagram and Facebook posts**
plus the Analytic on each. Regardless if you created these posts via
Ayrshare or not. Learn more in the docs.
-
Sometimes you have an image that does not meet the strict image requirements
for Instagram. Now Ayrshare will **automatically resize your images for**
Instagram if you want via the /post endpoint. Learn more in the docs.
-
We have upgraded to **generateJWT** endpoint with a logout option and the
title of the user profile returned. Learn more in the docs.
-
**Our docs were updated**. Check out the new font and style. If you are
wondering, it is powered by GitBook.
-
The **post verification system** will now check URLs in post to make sure
they comply with the social networks' guidelines. This is a great addition
to the existing industry leading verification checks that protect your
user's social accounts. Learn more in the docs.
-
Posting to **YouTube** now has support for tags and the "made for kids" self
declaration. Learn more in the docs.
### September 2021 🐻❄️
-
**Facebook Groups** now available as a destination platform. Over 1.4
Billion people use Facebook Groups each month. Your users can now link a
Facebook Group where they are the owner or admin. Learn more in the docs.
-
**Automatically resize images for Instagram** photo dimensions. Just upload
a photo to Ayrshare and you'll get a resized image that works on Instagram.
Learn more in the docs.
-
**Google My Business** tooltip in the Developer Dashboard now displays the
linked account name.
- See a **visual graph of your API usage** in the Developer Dashboard.
-
One-click copy button for the request and response code in the Developer
Dashboard for the post history.
### August 2021 🐼
-
Get more detailed **Analytics** data. New data sets are now available at the
social network level, such as a Facebook Page or Instagram Account. Get the
number of followers, username, and more. Learn more in the docs.
-
The **Developer Dashboard** now lets you select the **timezone** of the
scheduled time for a scheduled post.
-
**Automated RSS Feed posting**, including Substack, now supports posting to
Instagram. Learn more in the docs.
-
The **RSS Feed endpoint** now allows you to automatically add hashtags and
post the image from your article. Learn more in the docs.
-
**Media uploading** now supports multipart form data. Learn more in the
docs.
-
**Facebook video posts** now support the ability to set a thumbnail image.
Learn more in the docs.
-
**Node.js NPM package** updated to support analytics and user profile
creation.
### July 2021 🐻
-
**Google My Business** is now a supported Ayrshare destination. Post images,
videos, events, offers, and call-to-actions. Read more in our blog post.
-
The **Developer Dashboard** on ayrshare.com has been updated to show the
full JSON for every request and response. The Dashboard now has the link to
every post on the social networks, allows you to view all your posts across
all profiles at the same time, and has a new filter by the post status.
-
The **History** endpoint now lets you filter by the status of the post. Get
only success, error, or pending posts. Learn more in the docs.
-
We have improved the speed and responsiveness of the **profile linkage
page**.
-
We have improved the **verification checks** for scheduled posts so you can
see errors when you create the posts. Learn more in the docs.
-
We have improved the **similarity checks** and some of the other
verification checks to better protect your accounts. Learn more in the docs.
-
The **NPM package** was updated with support for Analytics, Comments, Auto
Schedule and Google My Business. Learn more in the docs.
### June 2021 🐶
-
**Webhooks** are now available for Enterprise plan clients. Get
notifications when scheduled posts are published, users link or unlink
social network accounts, and new RSS articles are published. Learn more in
the docs.
-
**Analytics** enhanced with Instagram and Facebook insights. For Facebook,
get counts of unique impressions, engaged users, and unique clicks. For
Instagram, get counts of engagements, impressions, reach, and saved posts.
Learn more in the docs.
-
A new **History** endpoint call to get the history for a specific post ID.
Learn more in the docs.
-
We have improved the account **monitoring** for your Twitter accounts. Get
notifications and API call responses that explain that your account was
locked or suspended by Twitter.
-
New **Comments** API endpoint. Retrieve comments and create new comments for
Facebook and Instagram posts. Learn more in the docs.
-
Ayrshare Business clients can now manage the following for their users'
**profiles**:
- Customize the social account linkage page title
- The Done button wording and link on the social linkage page
- Set which social networks are available on the social linkage page
-
When creating a new profile, you receive back the **display name** or handle
the user has set at the social network.
-
When posting, you receive back the **public URL** to the post on the social
network.
-
Updated the Ayrshare Social Media API **Bubble** plugin to support
scheduling future posts and sending videos to YouTube. Learn more in the
tutorial article.
### May 2021 🐱
-
**Promote your Tweet** as an ad to increase its reach and help it find a
bigger audience. Ayrshare now allows you to easily promote a Tweet with a
single API call. You can promote a Tweet when you create it or any time
after. To add Promoted Tweets to your account, log in to the Ayrshare
dashboard and enable it on the Social Accounts page. Learn more in the docs.
- **Upload videos** to Instagram and Telegram.
-
See the **Status Page** for a real-time check on the status of the Ayrshare
services. Access it at status.ayrshare.com.
-
Business plan users can generate the **single-sign-on URL** via the API.
Learn more in the docs.
-
In the developer dashboard, you can set your **Tax ID** under account info.
- New **Airtable** integration guide. Learn more in the docs.
- Updated code examples in Node.js, PHP, C#, and Python.
### April 2021 🐭
-
**TikTok** integration is now available to Premium Plan users as early
access, meaning it is still under active development. Posting to TikTok
requires the Ayrshare iOS mobile app. Learn more in the docs.
-
**CSV** bulk upload of posts is now available. Learn more in the docs.
- Post images to **Telegram**.
-
Add user and locations tags to **Instagram** posts. Learn more in the docs.
-
New API endpoint to **auto-schedule** your posts. Set up an auto-post
schedule by providing times to send. Post will automatically be sent at the
next available time. If no more times are available today, the first
available time tomorrow will be used, and so on. Learn more in the docs.
-
Ayrshare paid users can now access **billing** information directly from the
web dashboard.
### March 2021 🐹
-
You can now post to **Instagram** via the Ayrshare API. After a detailed
review process, Ayrshare has been approved by Instagram for direct posting.
Learn more in our article.
-
**Auto repost** is now available via the Post endpoint. Automatically repost
n times every x days. Learn more in the docs.
-
Support for **Facebook carousel**. Learn more in our tutorial article.
-
Get **Analytics** for your posts and videos on Twitter, Linkedin, and
YouTube. Learn more in the docs.
### February 2021 🐰
-
You can now post videos to **YouTube** via the Ayrshare API. Learn more in
the article.
-
New **verification system** to make sure your social network accounts stay
in good standing. Learn more in the docs.
-
Updated the "social-post-api" Node.js **NPM** and Python **PyPI** packages
to support YouTube video posting. You can find it on NPM and PyPi.
### January 2021 🦊
-
Released the Ayrshare Social Media API **Bubble** plugin. Post to your
social media accounts with the Bubble no-code platform.
- Connect and post to **Reddit** and **Telegram.**
# Latest Updates
Source: https://www.ayrshare.com/docs/whatsnew/latest
Ayrshare changelog with the latest social media API updates, bug fixes, platform features, and improvements across Facebook, Instagram, TikTok, and X.
[Follow us on X](https://twitter.com/intent/user?screen_name=ayrshare), listen to our [Social Media API Podcast](https://ayrshare.podbean.com/), or sign up for our [Newsletter](https://dashboard.mailerlite.com/forms/42719/54642298519029076/share) for the latest updates.
## August 2026
-
August 11 - Custom CSS Control Over the Connect Accounts Card Layout. The white-labeled connect accounts page now carries two more class names your Max Pack custom CSS can select:
social-accounts-grid on the grid holding the network cards, and social-account-card-wrapper on the cell holding each card. Between them they control the spacing between cards and how many cards fit per row, neither of which had a selector before. If your stylesheet reached the card area by counting elements down from main-content, such as .main-content > div > div > div, those rules match a different element since the dashboard was rebuilt and can resize every card at once; rewrite them against the two names above. Your rules still need !important to override the page's generated styles. See Change the Card Layout for worked examples.
-
August 11 - Custom CSS Linking Pages Stay Light. A social linking page with your own CSS file now stays on the light color scheme, and your users are no longer shown the light/dark switch on it. Stylesheets are written against the light page, so a user who switched to dark kept your colors while the text colors around them changed, which could leave network names hard to read on your cards. Your stylesheet is now the only thing deciding how the page looks. Linking pages without a CSS file are unchanged and keep the switch.
-
August 11 - Streamlined Instagram Linking. Clicking Instagram on the linking page previously opened a dialog warning that only Instagram Business or Creator accounts are supported before the login began. Instagram's own login now offers to switch a personal account to a professional account during authorization, so that extra step is gone — clicking Instagram goes straight to the login flow: Instagram's own login or, if you have disabled Instagram Login, the Facebook login. If you have configured a custom Instagram modal for your linking page, your custom instructions still appear exactly as before.
-
August 10 - Custom CSS Class Hooks Restored on the Connect Accounts Page. The white-labeled connect accounts page again carries the stable class names your Max Pack custom CSS selects. When the page was rebuilt these class names were dropped, so an existing stylesheet still loaded but silently matched nothing: a rule that hid the page heading, restyled the Close button, or recolored the instruction text simply stopped taking effect, with no error anywhere. Restored on the page:
main-content, company-logo, heading-social-accounts, additional-info, additional-info\_\_body, additional-info-text, troubleshooting-guide and close-button. Restored on each network card: connected-card and click-to-link. Also new: social-account-card on every card, unlinked-card for the not-yet-connected state, and a data-platform attribute carrying the network key, so an unconnected card can be restyled as a button, which was previously impossible because a connected and an unconnected card were indistinguishable in CSS. Your rules need !important to override the page's generated styles. See CSS Class Hooks for the full list and a worked example.
- Check your stylesheet. Rules built on these class names work again with no change from you. Rules built on the page's own generated class names (anything you copied from browser developer tools, such as names beginning with
chakra-) cannot be restored and need rewriting against the documented selectors. See Updating an Older Stylesheet.
- One older class name is not coming back.
linked-tag is deliberately not part of the contract: a connected card can now show "Relink required" or "Identity check" too, so a rule hiding it would hide a warning your user needs to act on. Style connected-card instead. See Updating an Older Stylesheet.
-
August 10 - Improved LinkedIn Company Page Discovery. If you administer a large number of LinkedIn company pages, some of them could be missing when you connected or refreshed LinkedIn — those pages didn't appear for selection and couldn't be posted to. Company page discovery now reads past the point where it previously stopped short, so pages missed for this reason are available to select and publish to.
-
August 7 - Dashboard 3.0. The Ayrshare Dashboard has been rebuilt from the ground up with a modern design system, refreshed navigation, and a faster, cleaner workflow on every page.
- Dark mode & new design — dark mode by default with a one-click light/dark theme toggle in the sidebar, plus new typography, cards, and layouts across every page for better readability and information density.
- Billing, now in the dashboard — a new Billing section (replacing the old Account page) lets you manage your subscription without leaving the dashboard: view your current plan, next billing date, and payment method; change plans, view invoices, and update billing info; and enable or manage add-ons (Max Pack, Messaging, and Facebook Boost Ads) directly.
- Publish a Post — network toggles with a live selection count, Select all / Deselect all, and an "Only" shortcut to post to a single network; View API Code (formerly View JSON) shows the exact API request for your composed post; and a cleaner Additional Options panel that surfaces platform-specific settings (like Instagram Post Type) contextually.
- Post History — search your recent posts alongside the existing status filters (Success, Scheduled, Paused, Awaiting Approval, Error), media thumbnails on each post, and platform icons, status chips, copyable Post IDs, and a collapsible API Request & Response viewer on every card.
- User Profiles — redesigned profile cards with avatars and structured fields (Created, RefId, Accounts, Messaging), new role badges (Owner, Team Member, and Active profile), and an inline Messaging toggle on each card.
- Webhooks — a new Events tab to inspect webhook event logs alongside your registered webhooks.
-
August 6 - TikTok Video Visibility Fix. The
tikTokOptions.visibility option is now honored for video posts. Previously it only took effect on image posts — a video sent with visibility: "private", "followers", or "friends" published as Public with no error or warning. Videos now publish with the requested visibility, and the visibility parameter docs have been updated to reflect video support.
-
August 6 - Instagram AI Content Label. Instagram posts can now carry Instagram's AI info label by setting
isAIGenerated to true in instagramOptions. The self-disclosure applies to single images, single videos, Reels, Stories, and carousels — for a carousel the label applies to the whole carousel rather than individual items. Accepted values are true, "true", false, and "false"; any other value ("yes" or 1, for example) still publishes the post normally but without the label and returns a non-fatal warnings entry (code: 497, feature: "isAIGenerated") listing the accepted values. Omitting the parameter is unchanged and publishes with no label, and the label cannot be changed after a post publishes. The parameter matches the existing tikTokOptions.isAIGenerated, so the same flag name works on both networks. See Instagram AI Content Label.
-
August 4 - X "Made with AI" Label. X posts can now disclose AI-generated media with
twitterOptions.isAIGenerated, which applies X's native "Made with AI" label. See X posting options.
-
August 4 - LinkedIn Comment Replies on Organic Company-Page Posts. Replying to a LinkedIn comment by [Social Comment ID](/docs/apis/comments/overview#comments-with-social-comment-id) now works on organic company-page posts, which previously failed with
code: 215. In this mode (searchPlatformId: true), pass the full commentUrn returned by [get-comments](/docs/apis/comments/get-comments) rather than the bare commentId — for example urn:li:comment:(urn:li:activity:\,\). See the new commentUrn parameter on [Reply to a Comment](/docs/apis/comments/reply-to-comment).
## July 2026
-
July 31 - WhatsApp Messages in Private Beta. The Messaging API now supports WhatsApp in private beta. Approved accounts can link a WhatsApp Business Account through Meta's embedded signup flow, send free-form messages during Meta's 24-hour customer service window, receive incoming messages and media, and retrieve stored WhatsApp conversations. Email [lotty@ayrshare.com](mailto:lotty@ayrshare.com) to request access.
-
July 31 - Instagram Comment & Mention Webhooks No Longer Require Messaging. Instagram comments and mentions webhooks are now fully independent of the Messaging add-on. Registering a webhook with
action: "comments" or action: "mentions" subscribes the required Meta fields automatically using your existing linked accounts — no Messaging add-on and no relinking required (comment permissions are already part of the default grant). This works for every Instagram account type, including accounts linked through a Facebook Page, and disabling Messaging no longer disrupts an active comments or mentions webhook. This change applies to the Instagram scope; Facebook comment and mention events are not yet included. See the Webhooks overview to register a webhook.
-
July 31 - Batch Analytics Attribution Fix. In a multi-post post analytics request, a failing entry could cause subsequent results in the same batch to be recorded under the wrong post ID. Results are now always attributed to the correct post, even when some entries in the batch fail.
-
July 31 - Instagram Analytics Post-ID Validation. Invalid Instagram post IDs sent to post analytics are now rejected locally before any call is made to Meta, so malformed IDs no longer cost a Meta Graph API call — matching the protection already in place for Facebook, Threads, and X/Twitter. Numeric post IDs are also handled gracefully: an all-digit numeric
id validates normally, and values that can't form a valid ID return a clean code: 186 error instead of an unhandled failure. Valid string IDs behave exactly as before.
-
July 31 - n8n Starter Workflow Refresh. The downloadable n8n MCP starter workflow has been updated: the suggested first prompt now targets LinkedIn and Facebook only (the previous prompt included Instagram, which requires media and caused first-run validation to fail), and the workflow's chat model is now
claude-sonnet-5 with version-agnostic setup instructions.
-
July 29 - Instagram Comment Automations Now Use Private Replies. Comment-triggered automations (
comment\_keyword) now deliver their DM through Instagram private replies, anchored to the comment's own 7-day window. This removes the requirement for a prior conversation, so an automation can now reach a commenter you have never messaged before — the rejection that previously blocked cold commenters. The comment's own 7-day window still applies: a reply to a comment older than that fails with 491. Note that delivery is still ultimately dictated by the recipient's Instagram Message requests setting: a DM can be accepted by Instagram (activity status: "sent") and then silently dropped, with no signal on any API surface. Accordingly, sent means Instagram accepted the message, never that the recipient received it. New failure reasons surface on actionResults\[].errorDetails with dedicated error codes 490–495. See the new Automation DM Sent but Not Delivered troubleshooting guide.
-
July 23 - Post-Quantum Ready Encryption (PQC). The Ayrshare API now supports post-quantum cryptography at the TLS layer. We've enabled the
X25519MLKEM768 hybrid key exchange on our global SSL policy, adding a quantum-safe (ML-KEM) algorithm alongside classical ECDHE in the TLS 1.3 handshake. This protects your API traffic against "harvest now, decrypt later" attacks — where an adversary records encrypted traffic today to decrypt once quantum computers mature. The change is fully backward compatible: because it's a hybrid negotiation, a connection only upgrades to PQC when the client requests it, and every other client continues to connect normally over standard ECDHE. And since 74% of our API traffic is already on TLS 1.3, most integrations get post-quantum protection right now with no code changes — as long as your HTTP/TLS library supports the X25519MLKEM768 group (OpenSSL 3.5+ and other modern TLS stacks already do), it's negotiated automatically.
-
July 15 - Instagram Reels Aspect-Ratio Validation Fix. Tall and narrow Instagram Reels are no longer falsely rejected before reaching Meta. Ayrshare's pre-flight video check was applying the Instagram image aspect rules (4:5 to 1.91:1, plus a 9:16 portrait exception) to Reels, so a valid portrait Reel (for example 886 x 1920, a 0.46:1 width-to-height ratio) was blocked locally with
code: 182 even though Instagram would accept it. Reel videos are now validated against the documented Reel range of 0.01:1 to 10:1 (9:16 still recommended to avoid cropping), matching Meta's own specification and the Instagram media guidelines. The code: 182 message for aspect-ratio failures has also been corrected — it previously read "Video does not meet duration requirement." No API changes are required.
-
July 14 - Partial Success on Multiplatform Comments & Analytics Reads. A multiplatform get-comments or post analytics read (one Ayrshare Post ID spanning several platforms) no longer collapses the whole response to an error when a single platform's leg fails. When at least one leg succeeds and at least one fails, the response returns HTTP
200 with status: "partial", preserving healthy platform data and listing each failed leg in top-level errors\[]. All-success responses are unchanged. All-fail responses retain status: "error" and map the representative top-level error code to its configured HTTP status; code 485 maps to HTTP 404. Code 485 identifies expired or unavailable Instagram/Facebook Story comments and Instagram Story analytics when comments or insights cannot be retrieved; Facebook Story analytics remain unavailable and are not included. Clients should inspect errors\[] and match the numeric code, not exact message text.
-
July 8 - Faster API Response Times. We've shipped a round of backend performance work that meaningfully cuts latency across some of our most popular endpoints. Average and 95th-percentile (p95) response times are both down substantially, with the largest gains showing up when under heavy load. The biggest wins are on profiles and analytics. No API changes are required; every request is now faster automatically.
| Endpoint | Faster Avg | Faster p95 |
| ---------------- | ---------- | ---------- |
| `GET /profiles` | **-71.6%** | **-88.7%** |
| `GET /analytics` | **-59.5%** | **-75.0%** |
| `GET /user` | **-51.0%** | **-48.6%** |
| `GET /post` | **-47.6%** | **-63.1%** |
| `GET /messages` | **-40.5%** | **-59.4%** |
-
July 7 - Per-Session Instagram Link Method on generateJWT. The generateJWT endpoint now accepts an optional
instagramLinkMethod body parameter that overrides your account-wide Instagram Login setting for a single linking session. Send "instagram" to start direct Instagram Login (no Facebook Page required) or "facebook" to link via a connected Facebook Page when the user clicks the Instagram button on the social linking page. The override applies only to the linking page opened from the returned JWT URL — it persists across the authorization redirect but never changes your account-wide setting, and omitting the parameter keeps the existing behavior. Invalid values return a 400 listing the valid options. See the new Instagram Link Method section for details, including the feature differences between the two flows.
-
July 3 - Clearer Error When Meta Can't Fetch Your Media. Media-fetch / crawler-block failures (Meta subcode
2207052) that previously returned the generic, retryable code: 440 now return a dedicated, non-retryable code: 479 (HTTP 400) — returned when Meta cannot fetch the media even after Ayrshare re-hosts it on its own CDN. The message names the likely cause (the host blocking Meta's crawlers facebookexternalhit / Facebot via robots.txt or CDN/WAF rules) and the fix (allow the crawlers, or serve the media from a Meta-reachable host). Genuinely transient ingestion failures (subcodes 2207032 / 2207003) keep code: 440 with its retry guidance. See Meta Media Crawler Blocked and the error codes reference.
## June 2026
-
June 24 - n8n Integration. Connect n8n to the Ayrshare MCP Server using n8n's built-in MCP Client Tool node, with no custom code and no community node to install. See the new n8n integration page for an overview, and the full n8n guide for setup, three worked examples, multi-tenant profiles, X BYO, and a downloadable starter workflow (Chat Trigger to AI Agent to the Ayrshare MCP node). See also Connect & Setup and the Tool Catalog.
-
June 17 - Facebook Analytics: Meta Retired Reach & 3-Second Video Metrics. Meta removed the unique-impression and 3-second video-view Insights metrics across all Graph API versions (effective June 15, 2026). Facebook post analytics no longer return
impressionsUnique, impressionsFanUnique, impressionsOrganicUnique, impressionsPaidUnique, or videoViewsUnique, and social analytics no longer return the pagePostsImpressions\* family (including pagePostsServedImpressionsOrganicUnique). The still-supported fields (reactionsByType, videoViews, mediaView, pagePostEngagements, pageVideoViews) are unaffected. Use mediaView / pageMediaView for reach; a Total Unique Media Views successor is planned. Reference: Meta Graph API v25 changelog.
-
June 15 - Facebook Account Restriction Error Code 476. Facebook posts that fail because Meta has placed a restriction on the account (Meta subcodes
2424009 and 1404078, or Meta's restriction wording when no subcode is present) now return a dedicated, non-retryable code: 476 (HTTP 400) instead of the generic retryable code: 108. The account stays linked — resolve the restriction via Meta's Account Status page (Facebook → profile picture → Help → Account Status), which surfaces the specific reason and an appeal flow that the API can't return. See Facebook Account Restriction for details.
-
June 10 - LinkedIn Personal Profile Analytics. Personal (member) LinkedIn profiles now return an expanded analytics matrix. Post analytics include
impressionCount, uniqueImpressionsCount (members reached), likeCount, commentCount, shareCount, engagement, reactions, and — for video posts — videoViews, videoViewers, and videoWatchTimeMs. Social analytics add lifetime followersCount, daily followersDaily growth, and aggregate post metrics. Aggregate reshare/reaction/comment counts are best-effort and may differ slightly from the LinkedIn UI. Existing linked accounts must re-link their LinkedIn profile on the Social Accounts page to grant the new analytics scopes — until then, analytics return code: 475 ("re-link your LinkedIn profile to enable analytics"). Posting is unaffected.
-
June 10 - TikTok First Comments Now Event-Driven. A first comment on a TikTok post is no longer attempted on a fixed timed wait. Because TikTok processes videos asynchronously, the
/post response now returns the TikTok first comment with status: "pending", and the comment is posted automatically once TikTok finishes processing and the tikTokPublished webhook resolves the real video id. The video visibility must be public, otherwise a clear comment error is returned. Separately, get-comments on a still-processing TikTok post now returns code: 288 instead of a generic failure.
-
June 8 - Webhook Signing-Secret Rotation. You can now safely rotate your webhook signing secret from the [Webhooks dashboard](https://app.ayrshare.com/webhooks) in 2 clicks, or via the new [
POST /hook/webhook/secret](/docs/apis/webhooks/rotate-signing-secret) endpoint with a secret body parameter. After a rotation, deliveries are signed with both your previous and new secret for a 24-hour grace window via the new X-Authorization-Content-SHA256-V2 header (v1=\,v1=\, current first), so you can update your receiver with zero dropped or rejected deliveries. The existing X-Authorization-Content-SHA256 header is unchanged. The signing secret is profile-wide (one per User Profile, signing every action on that profile). See [Rotate Signing Secret](/docs/apis/webhooks/rotate-signing-secret) for the safe rotation procedure and a receiver verification example.
-
June 8 - YouTube Thumbnail Failures Now Surfaced. When a YouTube video posts but its custom thumbnail fails to apply, the YouTube result now keeps
status: "success" (the video stays live) and adds a warnings array (feature: "thumbnail", code: 307) describing the failure — previously the failure was buried in the thumbNail sub-object, which is still retained for backward compatibility. The misleading 403 guidance has been corrected to lead with channel **phone verification** at [https://www.youtube.com/verify](https://www.youtube.com/verify) (an unverified channel is the dominant cause), with OAuth re-link as a secondary step. New **pre-publish validation** also catches thumbnails that are not PNG/JPG, are over 2MB, or are unreachable before upload and skips them, so the video still posts with the reason reported in `warnings` (a thumbnail problem never fails the post). See the [YouTube Post API](/docs/apis/post/social-networks/youtube#youtube-thumbnails) and the new [YouTube Thumbnail Not Applied (Unverified Channel)](/docs/help-center/technical-support/youtube_thumbnail_unverified_channel) troubleshooting guide.
-
June 8 - X BYOK Analytics Now Returns Code 416 on Depleted Credits. When an X/Twitter BYOK account's enrolled X Developer account is out of API credits, the analytics and user-lookup paths now return
code: 416 (HTTP 402, X CreditsDepleted) with the enrolled account id in the detail — previously these were masked as code: 294 (HTTP 400, "Unable to get X User"). The fix is to top up credits in the X Developer Portal. This aligns the analytics/lookup surface with the publish path (which already returns 416). If your integration branches on 294 from analytics to detect a bad handle, add handling for 416.
-
June 4 - MCP Server & Claude Code plugin. AI agents can now drive the Ayrshare API through the new MCP Server (
[https://api.ayrshare.com/mcp](https://api.ayrshare.com/mcp)), including the Claude Code plugin. See Connect & Setup and the Tool Catalog. The existing docs-search MCP is now Documentation MCP.
## May 2026
-
May 22 - Bulk Post Profile-Key Routing Fix.
POST /post/bulk now honors the Profile-Key header, so CSV rows publish to the resolved User Profile instead of the Primary Profile. Previously bulk uploads sent with a Profile-Key were silently routed to the Primary Profile's social accounts. See Bulk Post.
-
May 21 - TikTok DELETE /comments scope clarified. Updated the [Delete Comments](/docs/apis/comments/delete-comments) and [Comments Overview](/docs/apis/comments/overview) pages to document that
DELETE /comments on TikTok only succeeds for comments authored by the authenticated TikTok account itself (your own replies). Attempting to delete a third-party comment returns Ayrshare code: 328. Customers who need to moderate third-party comments on their own TikTok videos should contact support. No API behavior change; documentation only.
-
May 21 - Hide TikTok Comments. DELETE /comments now supports hiding a TikTok comment from public viewers via
hide=true together with videoId. The success response returns action: "hide" and echoes the comment text; sending hide=true without videoId is rejected with a 400. Hidden comments remain visible to the video owner in TikTok Studio.
-
May 20 - Node SDK v1.3.0 — X/Twitter BYO support. The official Node SDK now exposes
setTwitterByo(apiKey, apiSecret) and clearTwitterByo() for X/Twitter Bring-Your-Own-Keys. Once set, every SDK request includes the required X-Twitter-OAuth1-Api-Key and X-Twitter-OAuth1-Api-Secret headers — required for X/Twitter operations now that Ayrshare's BYO requirement is enforced (as of March 31, 2026). Install via npm install social-media-api\@1.3.0; release notes on npm and GitHub.
-
May 20 - Messaging Metered Pricing. Business Messaging is now billed via Stripe metered pricing at
$0.09 per active conversation on Launch and Business plans (Premium remains a flat $49/month add-on), with up to 1,000 active conversations per billing cycle. See Messaging pricing.
-
May 20 - Instagram Analytics No Longer Unlinks on Permission Errors. When Instagram analytics hits a missing-permission error (Meta
errCode 10), the account is no longer automatically unlinked. Previously a scope/permission issue was treated like a revoked token and silently disconnected the account even though posting still worked. Ayrshare now keeps the account linked and surfaces a permission-scope error instead.
-
May 19 - Per-profile hideLogo. New
hideLogo boolean on [Create Profile](/docs/apis/profiles/create-profile) and [Update Profile](/docs/apis/profiles/update-profile) suppresses the account-wide logo on an individual User Profile's social linking page. Useful for white-labeling individual partner profiles.
-
May 19 - Facebook Boost Ad Set Budget Sharing. The [Boost endpoint](/docs/apis/ads/facebook/boost-post) now accepts a new optional
adSetBudgetSharingEnabled boolean (default false). Meta now requires this wire field on every campaign created without a campaign-level budget, and Ayrshare sends it on every request — defaulting to false preserves prior behavior with no caller changes needed. Set it to true to enable Meta's cross-ad-set optimization, which can shift up to \~20% of an ad set's budget to other ad sets in the same campaign for better overall performance.
-
May 19 - Reddit Banned-Subreddit Error. Posting to a subreddit you are banned from now returns a distinct, non-retry-safe error instead of the generic retry-safe
code 121. This stops schedulers from retrying a permanently rejected post in a loop. See Ayrshare error codes.
-
May 19 - Bluesky Video Size Limit. The maximum Bluesky video upload size is now 100 MB (previously advertised as 1 GB) to match Bluesky's platform cap. Files above 100 MB are now rejected up front rather than failing late at upload. See the Bluesky media guidelines.
-
May 19 - Dashboard X/Twitter Messaging for BYO Keys. The Ayrshare dashboard Messaging page now supports X/Twitter direct messages for Bring-Your-Own-Keys (BYO) accounts. Your X consumer key and secret are collected in the browser for the session and threaded through send, refresh, and image-fetch actions — no keys are stored. Required now that X/Twitter is BYO-only on Ayrshare.
-
May 19 - Facebook Ads Cities Targeting Fix. The Facebook Ads Cities endpoint (
GET /ads/facebook/cities) now correctly resolves cities and their associated region data. Each result includes region, regionId, and supportsRegion so you can target a city's region when available. Use the search query parameter with a partial or full city name.
-
May 18 - YouTube Status Field Controls. Three new optional parameters on the YouTube Post API
youTubeOptions: license ("youtube" or "creativeCommon"), embeddable (boolean), and publicStatsViewable (boolean — controls the extended statistics panel on the watch page; basic view and like counts remain public regardless). The /history/youtube response now also returns these fields. Two new validation error codes — 455 (invalid license) and 456 (invalid embeddable or publicStatsViewable) — reject malformed requests at the Ayrshare edge. Monetization toggles (enabling/disabling ads) are not included; those require YouTube CMS credentials and are not available via the standard YouTube API.
-
May 18 - GMB First Comment No Longer Masks Post Success. Fixed an issue where including
firstComment on a Google Business Profile post returned code: 163 with no postIds even though the post succeeded. Google Business Profile does not support post comments, so firstComment is now skipped for GMB and the successful post result is returned normally.
-
May 14 - Preventing Account Unlinking. Social networks have been quietly rolling out stricter anti-bot controls, which were causing an unusually high number of user accounts to get unlinked. We've rolled out several backend improvements to reduce unlinks and clarify error messages, and updated the account linking page to make the UI much clearer for users — including a new "Action required" state for Meta networks (Facebook, Instagram, FB Groups, Threads, Messenger) when an account hits identity-verification limbo, with a "Resolve with Meta" link and a "Check again" probe so users can fix the issue without unlinking and relinking.
-
May 12 - Instagram Engagement Automations (Beta). New Automations API lets your users automatically react to Instagram engagement — fire a DM, webhook, or email when an end user comments on a post, replies to a story, sends a DM, or reacts to a DM. Four trigger types (
comment\_keyword, story\_reply, dm\_reaction, dm\_keyword) and three action types (send\_dm, fire\_webhook, send\_email) — up to 50 of each per rule. Includes per-action 7-day dedup (configurable per action via dedupWindowMinutes), daily DM caps (1,000 Business / 5,000 Enterprise), and a cursor-paginated activity log. Available on Business and Enterprise plans. New error codes 462–472 cover validation, tier gating, the active-automation cap, missing linked accounts, and feature-flag opt-in. Beta — we are actively collecting feedback; please send bug reports and feature requests to support.
-
May 12 - Scheduled Post Throughput Improvements. We've added more hardware for processing scheduled posts which is dramatically improving throughput and performance. We'll be adding more platform specific hardware for YouTube and TikTok soon as well.
-
May 12 - Instagram Relink Hint for Account-State Errors. Certain Instagram account-state failures (Meta
error\_subcode 2207085, previously surfaced as a generic code: 258 with no guidance) now return relink: true and retryAvailable: true with a remediation message instructing the user to unlink and relink the Instagram account granting all permissions. See error codes.
-
May 11 - YouTube transient error codes.
YouTube uploads that fail due to transient upstream issues now return new
error codes
453 (HTTP 504, Google ingest timeout) and
454 (HTTP 503, service unavailable) with a
retryAvailable: true flag your integration can use to retry
automatically. See [error codes](/docs/errors/errors-ayrshare) for details.
-
May 11 - X/Twitter Analytics & Lookups Open to All BYO Users. The legacy X add-on gate has been removed from /analytics/social and
/lookups/x. Any X/Twitter Bring-Your-Own-Keys customer can now look up analytics for arbitrary handles and use the X lookups endpoint without hitting code: 3. Calls are signed with your own X Developer App credentials and count against your own X rate limits.
-
May 8 - Python SDK v1.3.0 — X/Twitter BYO support. The official Python SDK now exposes
set\_twitter\_byo(api\_key, api\_secret) and clear\_twitter\_byo() for X/Twitter Bring-Your-Own-Keys. Once set, every SDK request includes the required X-Twitter-OAuth1-Api-Key and X-Twitter-OAuth1-Api-Secret headers — required for X/Twitter operations now that Ayrshare's BYO requirement is enforced (as of March 31, 2026). Install via pip install --upgrade social-post-api; release notes on GitHub and PyPI.
-
May 4 - Automatic Image Format Conversion. WebP, HEIC, and AVIF images are now automatically converted to JPEG before posting to platforms that don't accept them. WebP conversion applies to Instagram, LinkedIn, TikTok, Google My Business, Threads, and Snapchat. HEIC and AVIF are converted across all supported platforms. No API changes needed; conversion runs transparently at send time. New error codes
450 (conversion failure), 451 (source download failure), and 452 (converted-image upload failure) surface when conversion can't complete.
-
May 4 - Instagram errors now include Meta's raw message. Instagram media-status failures now surface Meta's underlying error text in the
details field alongside the Ayrshare error code, so callers can distinguish causes (for example, robots.txt/crawler issues vs. token problems) without guessing from the generic code. See the [Instagram Post API](/docs/apis/post/social-networks/instagram) and [error codes](/docs/errors/errors-ayrshare).
## April 2026
-
April 30 - X/Twitter BYOK in the API Explorer. The Ayrshare API Explorer now includes a collapsible X/Twitter BYOK (Bring Your Own Keys) section so you can paste your X API Key and API Secret once and have them attached as
X-Twitter-OAuth1-Api-Key and X-Twitter-OAuth1-Api-Secret headers on every outgoing request — no more dropping to curl or Postman to test BYOK from the Explorer. Values are scoped to the current browser tab via sessionStorage, masked by default with a reveal toggle, and cleared with one click. See the X BYO Key Setup Guide for how to obtain your credentials.
-
April 28 - Social Analytics Enhancements (rolling out). The Social Analytics endpoint is gaining Instagram
shareCount (total shares aggregated over the 90-day rolling window) and YouTube lifetimeLikes (opt-in via youtube: \{ lifetime: true }); the new fields will appear in responses as the deployment reaches your account. Documentation corrections included in this update: Instagram viewsCount is a 90-day rolling window (not 180 days), mediaCount is always lifetime, YouTube likes is scoped by quarters, and TikTok profile-level metrics are capped at 60 days with per-post lifetime semantics when quarters is used.
-
April 28 - Instagram Trial Reels. The /post endpoint now supports publishing Instagram Trial Reels — Reels visible only to non-followers when first published. Set
instagramOptions.trialParams.graduationStrategy to "MANUAL" (graduate from inside the Instagram app) or "SS\_PERFORMANCE" (Meta auto-graduates based on early performance). Three new validation error codes — 447, 448, 449 — reject invalid trial-reel requests at the Ayrshare edge.
-
April 24 - Instagram Posting Reliability. Expanded automated retry handling for Instagram during busy times and improved error messages across the board. Instead of generic errors, you'll now receive specific error codes for rate limits (
code: 435) and media processing timeouts (code: 436) — making it easier to diagnose issues and build smarter retry logic in your integrations.
-
April 23 - Facebook Analytics Rate Limit Error Code 444. Facebook Page per-Page analytics throttles (Meta error
80001) now return code: 444 (HTTP 429) on post and social analytics responses. Previously these throttles were misclassified as code: 161 ("relink your account"). If your integration branches on 161 to trigger a relink flow, update it to recognize 444 and retry with backoff instead. See Facebook Analytics Rate Limit for details.
-
April 23 - Meta Media Crawler Troubleshooting. New help-center guide on fixing error
code: 440 ("social network could not download media from this URL") and the related Instagram code: 138 / Threads code: 379, all caused by robots.txt or bot rules blocking Meta's publishing crawler. See Meta Media Crawler Blocked.
-
April 21 - Moderation input errors now return 400. POST /validate/moderation now returns new error
code 438 (HTTP 400) for caller-input problems (e.g. an unsupported file as imageUrl, or an unreachable/malformed URL) instead of a misleading 500 with retry guidance. Genuine processing failures still return code 331 (HTTP 500). See [error codes](/docs/errors/errors-ayrshare).
-
April 20 - Caption Enhancement Error Code 441. The Post endpoint now returns error
code: 441 (HTTP 502) when a caption enhancement such as shortenLinks fails. When the failure affects only some platforms, the successful platforms still post and appear in postIds alongside a top-level status: "error" and per-platform entries in errors\[]. See Caption Enhancement Errors for details.
-
April 15 - Instagram dead-token detection. Instagram posts that fail because of an invalid/expired OAuth token — or a page-role/permission error (Meta subcode 492) — now return Ayrshare
code 161 (authorization error) and automatically unlink the affected account so the user is notified to relink, instead of the misleading generic code 138 "please try again" response that previously masked these cases. See [error codes](/docs/errors/errors-ayrshare) and the [Instagram Post API](/docs/apis/post/social-networks/instagram).
-
April 9 - Instagram & TikTok Analytics All-Time Data & Date Filtering. The social analytics endpoint now returns all-time Instagram and TikTok data when neither
daily nor quarters is specified. Use quarters (1–4, where 1 = 90 days) or daily=true to filter by date range — now supported on TikTok as well. When active, TikTok comment, share, and view period labels and totals reflect the filtered date range.
-
April 9 - Analytics Reliability and Recovery. The Social Analytics and Post Analytics endpoints now automatically backfill cumulative metrics (followers, likes, views) from stored data when the social network temporarily returns zeros. Two new optional response fields,
backfilledFrom and recoveredFrom, indicate when stored data was used. Additionally, requesting analytics when no platforms return data now returns a 400 error (code: 187) instead of an empty success response.
-
April 1 - generateJWT Header-Based X Credentials. The Generate JWT endpoint now accepts
X-Twitter-OAuth1-Api-Key and X-Twitter-OAuth1-Api-Secret headers for passing your X consumer keys — consistent with all other X/Twitter endpoints. Body parameters remain supported for backward compatibility.
## March 2026
-
March 30 - X Credit-Depletion Errors Surfaced. When a BYOK X/Twitter Developer account runs out of API credits, posts that previously got stuck in
processing with no error now correctly fail with code: 416 (X Credits Depleted, HTTP 402). Detection for code: 416 has been broadened to also catch X's HTTP 429 responses that mention credits. See error codes for details.
-
March 28 - Instagram Post Null Response Fixed. Resolved an edge case where an Instagram post would succeed on the platform but the /post response returned
null instead of the normal success body with postIds and id. Successful Instagram posts now always return a valid response your integration can parse.
-
March 26 - Instagram Daily Reach Fix. Fixed an issue where Instagram Social Analytics omitted daily reach data when
daily=true was set. The response now returns a nested reach object (with period and a values time-series) in daily mode; the scalar reachCount is still returned in non-daily mode and is preserved as a fallback when daily data is temporarily unavailable.
-
March 26 - X/Twitter BYOK Enforcement Error Codes. With the [Bring Your Own Keys](/docs/dashboard/connect-social-accounts/x-twitter-byo-keys) requirement now enforced, X/Twitter requests return specific error codes you can branch on:
419 (HTTP 400, missing X-Twitter-OAuth1-Api-Key/Secret headers), 416 (HTTP 402, X Developer account out of credits), and 417 (HTTP 403, OAuth 1.0a app permissions not set to Read/Write/DM). See error codes for messages and resolutions.
-
March 23 - Keyword Search on X. New keyword search endpoint for BYOK customers. Search X/Twitter for tweets matching keywords, hashtags, and advanced search operators. Supports pagination, filtering by language and location, and returns normalized tweet data.
-
March 23 - Listening Section. A new Listening section has been added, expanding on the Brand endpoints with new features like keyword search.
-
March 19 - @Mentions in Comments. Added documentation for @mention support in the
comment text string on the [Post a Comment](/docs/apis/comments/post-comment) and [Reply to a Comment](/docs/apis/comments/reply-to-comment) endpoints. Includes LinkedIn server-side resolution details and links to platform-specific mention syntax.
-
X/Twitter Paginated Messages. The [Get Messages](/docs/apis/messages/get-messages) endpoint now supports a
limit query parameter for X/Twitter, allowing you to fetch only the latest N messages (1–100) without a full history sync. Combined with cursor-based pagination via the next parameter, this enables efficient polling — fetch a small batch, check if you already have them, and only page further if needed.
-
Increased Video Size Limits. With so much of social publishing now focused on video content, we increased our video upload limits across multiple platforms: LinkedIn (200 MB → 500 MB), TikTok (1 GB → 10 GB), X Premium long video (1 GB → 16 GB), and added larger content-type-specific limits for Facebook (Reels 2 GB, Stories 4 GB, Feed 10 GB) and Pinterest (2 GB). See the [Media Guidelines](/docs/media-guidelines/overview) for full details.
-
X/Twitter Messages BYO Key Support. [Get Messages](/docs/apis/messages/get-messages) and [Send Message](/docs/apis/messages/send-message) endpoints now support BYO (Bring Your Own) X/Twitter API credentials. Real-time DM notifications via webhooks are not available for BYO users; use polling via the GET Messages endpoint instead.
-
Bring Your Own Keys on X. A major change to how X/Twitter accounts are connected. The new [Bring Your Own Keys](/docs/apis/post/social-networks/x-twitter) approach gives you more control of your account, better data portability, and a branded OAuth flow. All users need to make the transition by March 31, 2026.
-
Editable Short Links. You can now [update short links](/docs/apis/links/update-short-link) after they've been published.
-
Scheduled Post Processing Reliability. Resolved an issue where the scheduled post processing job could run out of memory and return 503 errors. Increased resource allocation, added paginated query processing, and introduced a distributed application lock to prevent duplicate execution — ensuring single, reliable runs for all scheduled post processing.
-
Facebook & Instagram History Improvements. Improved the [/history/facebook](/docs/apis/history/history-platform) and [/history/instagram](/docs/apis/history/history-platform) endpoints: for Facebook, expired/archived Stories are now filtered out by default so only active Stories appear alongside regular posts, and new
since and until query parameters allow time-based filtering with ISO UTC date strings. For both Facebook and Instagram, a new dataType parameter lets you request only posts, only stories, or both (default).
-
X Rate Limits Removed. As part of the [X/Twitter BYO Keys migration](/docs/dashboard/connect-social-accounts/x-twitter-byo-keys), Ayrshare no longer enforces monthly or daily rate limits on X analytics. Your usage is now governed by your own X Developer account limits.
## February 2026
-
February 25 - X/Twitter Video Titles & Descriptions. Videos posted to X/Twitter now support setting a
videoTitle and videoDescription (sent on the twitterOptions object of the X Post API) for media uploaded to X Media Studio. These accompany the existing thumbNail support for richer video metadata.
-
Batch Analytics. Added support for batch analytics of social post IDs, allowing up to 100 posts per analytics call using the new
postIds parameter. Read about it on our [Analytics on a Post by Social ID](/docs/apis/analytics/social-by-id) endpoint.
-
History Pagination. Added pagination support to the [posts history for a platform](/docs/apis/history/history-platform) API for Threads and X/Twitter. No more 500 post limit — you can now pull longer history using pagination, and split calls into smaller chunks for faster, more efficient responses.
-
Free Trial Enhancements. Free trial users can now test the [Messaging API](/docs/apis/messages/overview) and [Max Pack](/docs/additional/maxpack) — you won't be charged until the end of the free trial period.
-
Improved Error Messages. Added additional detail to [X/Twitter](/docs/apis/post/social-networks/x-twitter) and [LinkedIn](/docs/apis/post/social-networks/linkedin) error messages, making it easier to diagnose issues with your API calls.
-
Instagram Comments Fix. Fixed an issue where top-level Instagram comments with nested replies were not being returned correctly from the [Get Comments](/docs/apis/comments/get-comments) endpoint.
-
Python SDK. Updated our [Python SDK](https://pypi.org/project/social-post-api/) with the latest features and improvements.
-
X/Twitter Webhook URL. A new
ayrshareUrl field is now included in [Direct Message Event webhook](/docs/apis/webhooks/actions#new-message-events) payload, providing an unauthenticated URL for convenience.
-
Status Page Slack Integration. You can link updates from our [Status Page](https://status.ayrshare.com) into Slack automatically. Just click "Get Updates" in the upper right and select the Slack option.
## January 2026
-
January 21 - Link Analytics Custom Domain Fix. The [Link Analytics](/docs/apis/links/link-analytics) endpoint (
GET /links/:id) now returns short links using your configured custom domain instead of the default Ayrshare domain. If you use a custom short-link domain (Business/Enterprise), analytics URLs now match your live links.
-
January 15 - Instagram Outbound Message Deletion Sync. When an Instagram outbound (sent) message is deleted in the native Instagram app, it is now correctly marked as deleted in Ayrshare's [Messages](/docs/apis/messages/get-messages) data — matching the existing behavior for inbound messages. Conversation history now stays accurate for both directions.
-
MCP Server. Back by popular demand — we've relaunched our [MCP Server](/docs/additional/mcp-server)! Connect your AI tools directly to the Ayrshare API.
-
Self-Serve Signup. Added a new [self-serve signup](https://www.ayrshare.com/pricing/) for the Business Plan and Launch Plan. New customers can now access a 14-day free trial of the Launch Plan to test the Ayrshare platform.
-
X/Twitter Video Thumbnails. [X/Twitter video posts](/docs/apis/post/social-networks/x-twitter#video-thumbnail) now support including a thumbnail preview image (as a URL). This is sent as part of the metadata when uploading a video.
-
Instagram Hashtag Limit. Changed the hashtag limit on [Instagram posts](/docs/apis/post/social-networks/instagram) to 5 to align with new guidelines published by Instagram.
-
Bluesky Video Duration. Bluesky video media duration limit has been adjusted to [three minutes](/docs/media-guidelines/bluesky#video) to be in line with Bluesky API requirements.
## December 2025
We're ending this year focused on transparency and reliability, with a ton of new feature releases planned in Q1 2026.
-
December 23 - X/Twitter URL Entities in Response. X/Twitter post and [history](/docs/apis/history/history-platform) responses now include URL entity data for links in a tweet's body: a top-level
urls array carrying X's raw fields (display\_url, expanded\_url) plus a camelCased entities object where the same links appear as entities.urls\[].displayUrl / expandedUrl — making it easier to render link previews and detect outbound links in your integration.
-
X/Twitter Entities. The [post analytics](/docs/apis/analytics/post) and [platform history](/docs/apis/history/history-platform) endpoints for X/Twitter now return parsed entities from the tweet text, including URLs, mentions, hashtags, and cashtags with their positions and display URLs.
-
Facebook Post Analytics. New metrics added to [Facebook post analytics](/docs/apis/analytics/post) including
mediaView, mediaViewIsFromAds, and mediaViewIsFromFollowers to replace [deprecated impression metrics](/docs/whatsnew/upcoming-api-changes#november-14%2C-2025).
-
Bluesky Comments. Improved support for [Bluesky comment retrieval](/docs/apis/comments/get-comments) with proper handling of AT Protocol-style post and comment IDs.
-
Threads Linking. Enhanced [Threads account linking](/docs/dashboard/connect-social-accounts/threads) to handle cases where the name or username fields are not present on the account.
-
24/7 Monitoring. Onboarded a dedicated DevOps team to monitor the platform around the clock for improved reliability.
-
Monthly Receipts. Automatic monthly receipts are now emailed to the primary account holder, providing better transparency around pricing and payments.
## November 2025
-
Instagram Token Refresh. Added automated refresh for long-life Instagram tokens for users who link to Instagram using direct IG login (without Facebook Page).
-
Facebook Analytics Updates. [Facebook post analytics](/docs/apis/analytics/post) now returns enhanced impression metrics including
post\_impressions\_paid\_unique, post\_impressions\_fan\_unique, post\_impressions\_organic\_unique, and post\_impressions\_unique.
-
Facebook Page Insights. New [Facebook social analytics](/docs/apis/analytics/social) fields added:
pageFollows, pageMediaView, pageMediaViewIsFromAds, and pageMediaViewIsFromFollowers with both aggregate and daily breakdown support.
-
Instagram Analytics. [Instagram social analytics](/docs/apis/analytics/social)
viewsCount and reachCount metrics are now supported with both direct Instagram Login and Facebook-linked accounts.
-
LinkedIn Mentions. Fixed handling of [LinkedIn mentions](/docs/apis/post/social-networks/linkedin#linkedin-mentions) to properly distinguish between mentioning organizations versus individuals.
-
Dashboard Improvements. The [Ayrshare web dashboard](https://app.ayrshare.com) API page has been refactored with improved performance and a better organized messaging usage card.
-
Team Expansion. Expanding the development team to speed up support and feature development.
## October 2025
-
Ayrshare Acquired by Saas.group. Ayrshare has been acquired by Saas.group. The team is expanding to deliver faster feature development and better customer support.
-
Webhook History. New endpoint to [get webhook history](/docs/apis/webhooks/history) per action for the past 6 months.
-
Facebook Ads Location Targeting. In addition to country targeting, you can now [specify a region or city](/docs/apis/ads/facebook/boost-post#param-locations) when boosting Facebook posts.
-
LinkedIn Video Thumbnails. The [LinkedIn history endpoint](/docs/apis/history/history-platform) now returns the
thumbnailUrl for video posts, making it easier to display video previews in your application.
-
Reddit Post Analytics. [Reddit post analytics](/docs/apis/analytics/post) reliability has been improved with enhanced authentication handling to avoid rate limiting issues.
-
Instagram History. Improved handling of large result sets in [Instagram post history](/docs/apis/history/history-platform) for accounts with many posts.
-
Facebook Ads. The [Facebook ads history endpoint](/docs/apis/ads/facebook/get-ad-history) now includes clarification on which ads are returned based on the campaign structure.
-
Instagram Collaboration. Added documentation clarifying that [accepted collaboration posts](/docs/apis/history/history-platform) may not return from the platform history endpoint due to Instagram API limitations.
## September 2025
-
TikTok Drafts. [Sending a post to TikTok drafts](/docs/apis/post/social-networks/tiktok#param-draft) now supports images as well as videos.
-
Facebook Ads. As part of the requirements set forth by the
European Union Digital Services Act (DSA), Facebook requires ads targeting any
part of the EU to provide values defining the beneficiary and payor of the ad
being created. You can now [look up the DSA
recommendations](/docs/apis/ads/facebook/get-dsa-recommendations) and add it to the
ad.
-
Media Management. The [GET media
endpoint](/docs/apis/media/get-media-in-gallery) has been enhanced to include large
media files uploaded, and now shows the
expireAt field.
-
Threads Posting. Easily create a [thread on
Threads](/docs/apis/post/social-networks/threads#thread) (aka threadstorms), which
is a series of connected posts on Meta Threads.
-
Direct Messaging. Facebook and Instagram Messaging now
support [sending audio files](/docs/apis/messages/send-message#param-media-urls)
(AAC or WAV).
## August 2025
-
Reddit Analytics. New [Reddit social analytics data](/docs/apis/analytics/social) on a user. This includes friend count, follower acceptance, suspension expiration date if the account was suspended, and more.
-
Threads Analytics. New [Threads social analytics
data](/docs/apis/analytics/social) on a user. This includes bio, geo restriction
eligibility, username, and more.
-
Threads Geo Restrictions. On Threads, you can [set geographic
restrictions](/docs/apis/post/social-networks/threads#geo-restrictions) to only
allow posts to show in certain countries.
-
LinkedIn Distribution. [Disable the ability for other users
to re-share your LinkedIn
posts](/docs/apis/post/social-networks/linkedin#disable-share).
-
Ayrshare Status. In addition to email alerts, you can get the
[social network and Ayrshare system status via an
endpoint](/docs/additional/status).
-
YouTube Watermark. Set a [watermark image on your YouTube channel](/docs/apis/utils/set-youtube-watermark) that will appear on all your videos. The watermark can be configured to appear at specific times during video playback.
## July 2025
-
Instagram Login. The [Instagram Login](/docs/multiple-users/manage-user-profiles#instagram-login) feature is generally available on July 6, 2025.
All new Instagram connections will use the new Instagram Login feature. Current connections will not be affected.
If you don't want to use the new Instagram Login feature, you can disable it in your account settings.
-
LinkedIn Mentions. You can now [mention another LinkedIn
profile](/docs/apis/post/social-networks/linkedin#member-profiles) either by their
vanity name or actual name.
-
LinkedIn Search. [Search for LinkedIn companies or people
based on a search query.](/docs/apis/listen/search/linkedin-search) This endpoint is
commonly used for typeahead mention completion in social media posts.
-
LinkedIn Videos. [LinkedIn now accepts video files up to 500
MB](/docs/media-guidelines/linkedin#video) in size, up from 200 MB previously.
-
X Account Activity. Get the full account activity from X via
a webhook including posts, likes, mentions, DMs, and more. The X Account
Activity feature must be enabled for your linked X account to receive these
webhooks. Please contact your account representative to enable this feature.
-
X Geographic Restrictions. [Set allowed and blocked
countries](/docs/apis/post/social-networks/x-twitter#geo-restrictions) for your X
media.
-
X Posts Limited to Subscribers. You can set a [X post to only
be visible to
subscribers](/docs/apis/post/social-networks/x-twitter#subscribers-only).
-
X Reply Settings. On X, you can allow only [certain types of
users to reply to your
post](/docs/apis/post/social-networks/x-twitter#reply-settings). You can choose
either followers, mentioned, subscribers, or verified users.
-
TikTok Thumbnail. Set a [custom thumbnail for
TikTok](/docs/apis/post/social-networks/tiktok#thumbnail-url) videos.
-
Instagram Analytics. Instagram analytics on a post now
[includes the direct link to the media](/docs/apis/analytics/post).
-
Developer Dashboard. You can now [register Webhooks directly
in the Ayrshare dashboard](/docs/apis/webhooks/overview#register-a-webhook).
-
Skip Pre-Validation. There is now an option to [skip
pre-validation on scheduled](/docs/apis/post/post#param-validate-scheduled) posts.
-
Premium Plan History. Premium plans now have access to the
[history by platform](/docs/apis/history/history-platform) to get all posts, even
those not sent via Ayrshare.
-
Auto Repost. You can now [get post history by auto repost ID](/docs/apis/history/get-history). When creating an [auto repost](/docs/apis/post/overview#auto-repost), an ID is assigned to track that series of posts. You can now retrieve the auto repost either by the ID or by getting all.
## June 2025
-
Instagram Login (coming soon). [Enable or disable Instagram
Login](/docs/multiple-users/manage-user-profiles#instagram-login) on the social
linking page. Instagram Login will be enabled by default in the coming weeks.
If you require the advanced features listed including hashtag search,
collaborations, location tagging, or brand data, you must manually disable
this option to use Facebook Page authentication instead. We recommend most
clients use the new direct Instagram Login since it is a simpler work flow and
does not require a Facebook Page.
-
Introducing Snapchat. Ayrshare now supports
[Snapchat](/docs/dashboard/connect-social-accounts/snapchat). The Snapchat API
enables direct publishing of content to both Stories and Spotlight, and
getting analytics and history. Stories are temporary posts that disappear
after 24 hours, while Spotlight posts are permanent and can help creators and
businesses reach a wider audience.
-
MCP Server. Connect the [Ayrshare API Docs MCP
server](/docs/additional/mcp-server) with your AI agent. By connecting the Ayrshare
API documentation MCP server to your AI development tools like Cursor or
Claude Desktop, you can give your AI agent direct access to Ayrshare’s
documentation.
-
Copy a Post. [Copy an existing post](/docs/apis/post/copy-post) to
another platform. This new endpoint allows you to reuse successful posts
across different platforms or with different configurations.
-
Developer Dashboard. Two new improvements in the posting flow
in the [developer dashboard](https://app.ayrshare.com). In addition to
uploading media files, you can now also use URLs to post your media. And you
can now view the JSON used to publish your post which helps verify the
correctness of your JSON.
-
User Management. The [User
endpoint](/docs/multiple-users/manage-user-profiles#get-user-profile) now returns
the real-time state of connected social networks, automatically updating
whenever users connect or disconnect their social media accounts.
-
YouTube. Publishing a video on YouTube now allows disclosure
of realistic Altered or Synthetic (A/S) content by setting the
`containsSyntheticMedia` parameter. [View
docs](/docs/apis/post/social-networks/youtube).
-
Facebook. [Getting comments on
Facebook](/docs/apis/comments/get-comments) now returns the direct URL to the
specific comment.
## May 2025
-
Introducing Threads. Ayrshare now supports [posting and
scheduling to
Threads](https://www.ayrshare.com/docs/dashboard/connect-social-accounts/threads),
getting analytics, managing comments, and retrieving history.
-
Messaging. [Messaging is now a standard
feature](https://www.ayrshare.com/docs/apis/messages/overview) included in the
Business Plan. Key features include managing your users’ conversations with
correspondents, sending text, image, video, and emoji messages, setting up
automated message responses, and webhooks.
-
X Analytics. X [comment
analytics](https://www.ayrshare.com/docs/apis/comments/get-comments) and [post
analytics](https://www.ayrshare.com/docs/apis/analytics/post) now include
impression, quote, and bookmark count.
-
Linking Page Languages. You can now [set the language for the
social linking
page](https://www.ayrshare.com/docs/multiple-users/manage-user-profiles#set-language-for-social-linking).
Currently supported languages include English, Chinese (Simplified), French,
German, and Spanish.
-
LinkedIn Posting. Set the [LinkedIn post
visibility](https://www.ayrshare.com/docs/apis/post/social-networks/linkedin#post-visibility)
to public, 1st degree connections, or logged-in user.
-
LinkedIn Posting. You can now [include media in the LinkedIn
first
comment](https://www.ayrshare.com/docs/apis/post/overview#first-comment).
-
Instagram Hashtag Search. [Search the most popular or recent
Instagram posts](/docs/apis/hashtags/search-hashtags)
for a given hashtag to inform your content strategy and identify trending
topics.
## April 2025
-
Facebook Ads. [Boost Facebook Posts as
Ads.](/docs/apis/ads/overview) The Ayrshare Ads API includes boosting posts,
managing ads, tracking performance, and analyzing ad spend.
-
User Profile Management. Get a [historical log of created and
deleted user profiles](/docs/apis/profiles/get-profiles#param-action-log).
-
User Profile Management. In the User Profile section of the
web dashboard, if a User Profile is suspended you can now click the
“Suspended” badge to get the reason.
-
Post History. The [history
endpoint](/docs/apis/history/get-history) now allows you to filter by start and end
dates.
-
Social Linking. We introduced an upgraded X authentication
linking. This is a better experience for you and your users.
-
Social Linking. [Specify the allowed social
networks](/docs/apis/profiles/generate-jwt#param-allowed-social) directly when
creating the Business Plan linking page using the
allowedSocial
parameter.
-
Instagram Posting. [Instagram
images](/docs/apis/post/social-networks/instagram#alternative-text) now support alt
text.
-
Bluesky Posting. [Bluesky image and video
posting](/docs/apis/post/social-networks/bluesky#alternative-text) now support alt
text.
-
Pinterest. Add a private note to a [Pinterest
Pin](/docs/apis/post/social-networks/pinterest#posting-an-image-pin-to-pinterest).
-
YouTube Shorts. [YouTube
Shorts](/docs/apis/post/social-networks/youtube#youtube-shorts) now can be up to 3
minutes long, an increase from the prior limit of 60 seconds.
## March 2025
-
X Analytics. New [X social analytics
data](/docs/apis/analytics/social) including like count, add to list count, profile
banner image, and more.
-
X Rate Limits. The [monthly call limits for
X](/docs/errors/errors-http#x%2Ftwitter-analytics-rate-limits) have been increased
to 100,000 for the Business Plan and 5,000 for the Premium Plan.
-
LinkedIn Analytics. [LinkedIn personal
pages](/docs/apis/analytics/social) now return a basic set of data including the
website url and profile image.
-
Facebook Reels. You can now add a thumbnail which is a [cover
image for a reel video](/docs/apis/post/social-networks/facebook#facebook-reels).
-
Linking Page. You can [set the image height of your custom
logo](/docs/multiple-users/manage-user-profiles#update-logo-on-social-linking-page)
on the social linking page. Specify the height in pixels in your account
settings in the web dashboard.
-
Linking Page. When linking Facebook and Instagram pages, long
lists of pages now have a search field that allows you to filter by the page
name or location.
-
Team Member Management. Individual team members can now be
[restricted from accessing other user
profiles](/docs/multiple-users/manage-user-profiles#restrict-team-member-access).
-
Media. The [upload media endpoint](/docs/apis/media/upload-media)
now supports uploads of images and videos up to 30 MB.
-
Media. [Google Drive and Dropbox share URLs can now be
used](/docs/apis/post/overview#valid-url) directly in the `mediaUrls` post
parameter, eliminating the need to create a separate download URL.
## February 2025
-
**TikTok Posting**. [Create a draft video
post](/docs/apis/post/social-networks/tiktok#tiktok-video-draft-post) in the TikTok
app. The draft video will be in the notification Inbox in the app, and the
user can edit the video before publishing.
-
**TikTok Analytics**. Additional [TikTok analytics data fields were
added](/docs/apis/analytics/social), including demographics such as audience cities
and gender. Other new profile fields include profile views and email, address,
and bio link clicks.
-
**Instagram Collaboration**. In addition to images and Reels, users can now
[add collaborators to
carousels](/docs/apis/post/social-networks/instagram#collaboration).
-
**Instagram Analytics**. [Instagram post analytics](/docs/apis/analytics/post) now
includes the view count, which is the total number of times your post has been
seen.
-
**Instagram Details**. Get [additional Instagram
details](/docs/apis/user/profile-details) for a user profile, such as used quota
and whether the account type is Creator or Business.
-
**Compression**. [Compression now supports Brotli](/docs/apis/overview#compression)
for all endpoints, which is faster and offers better compression.
-
**LinkedIn Comments**. [LinkedIn comments and replies to
comments](/docs/apis/comments/post-comment) now support images.
-
**Reddit Mentions**. Reddit posts now [support mentions of other users or
subreddits](/docs/apis/post/social-networks/reddit#reddit-mentions).
-
**Bluesky Posting**. [Link previews are now supported in
Bluesky](/docs/apis/post/social-networks/bluesky#bluesky-supported-features) posts.
Include a link in a post, and a preview will automatically be generated.
-
**Max Pack**. Image resizing and conversion now supports [converting to
WebP](/docs/apis/media/resize#convert-to-a-jpg-or-webp).
-
**Max Pack**. Image resizing and
[watermarking](/docs/apis/media/resize#watermark-position) now support positioning
the watermark, such as the northeast corner.
-
**Dashboard**. The [Ayrshare web dashboard](https://app.ayrshare.com) has been
refreshed with a new color scheme, enhanced alerts, and improved workflows for
a smoother user experience.
## January 2025
-
**Bluesky API**. [Bluesky social media management](/docs/apis/post/social-networks/bluesky) is now available as the 11th social network that Ayrshare supports.
-
**LinkedIn Targeting**. LinkedIn allows you to [target your organic posts to
specific groups of
users](/docs/apis/post/social-networks/linkedin#linkedin-audience-targeting). You
can target by countries, industry, job title, and more.
-
**YouTube Targeting**. [Block or allow countries and
regions](/docs/apis/post/social-networks/youtube#location-targeting) for a YouTube
video.
-
**Auto Schedule**. Reset an auto-schedule to start scheduling from the current
time. This is accomplished by [deleting the last scheduled
date](/docs/apis/auto-schedule/delete-schedule).
-
**TikTok Analytics**. TikTok social network analytics on a user profile is now
available as a historical [daily time
series](/docs/apis/analytics/social#param-daily).
-
**TikTok Posting**. If the post is completely or mostly created with AI, you
can label the post as [“Creator labeled as
AI-generated”](/docs/apis/post/social-networks/tiktok#available-tiktok-options).
-
**X Posting**. X now supports [up to 4 videos in a single Tweet](/docs/media-guidelines/x_twitter).
## December 2024
-
**Dashboard**. The User Profiles page performance in the web dashboard has
been optimized. You will now get a smooth scrolling and loading experience
regardless of how many user profiles you have in your account.
-
**Dashboard**. The Posts page in the web dashboard now allows you to include
deleted posts in your history timeline. This lets you access, filter, and
search deleted posts in the same way as successful posts.
-
**Deleted Posts**. If you or your users have manually deleted a post on a
social network, you can [mark it as manually
deleted](/docs/apis/post/delete-post#body-parameters) in Ayrshare. This will
prevent Ayrshare from trying to delete the post in the future and allow you to
access a more accurate post history.
-
**Webhooks**. You can now [get all the registered webhooks for all your user
profiles](/docs/apis/webhooks/list) in a single call.
-
**Analytics**. [Instagram post analytics](/docs/apis/analytics/post) now includes
share, followers gained, profile visits, and profile activity counts.
-
**Comments**. [TikTok comments](/docs/apis/comments/get-comments) now return the
name of the person who made the comment.
-
**Comments**. [X comments](/docs/apis/comments/get-comments) now return the ID of
the Tweet the comment was replied to.
## November 2024
-
**All New Docs**. Check out the [new Ayrshare docs](/docs/introduction). We migrated to a more advanced
Documentation platform with many user experience improvements versus the
prior version.
- **Instagram Analytics**. [Instagram post analytics](/docs/apis/analytics/post) now includes the metrics for how many times your reel replayed after the first time and how total times your reel played after the first impression.
- **Hashtags**. The [hashtags endpoint](/docs/apis/hashtags/auto-hashtags) now allows you to specify a language hint to keep the hashtags in the same language as the post.
- **X Analytics**. [X/Twitter Social analytics](/docs/apis/analytics/social) now returns the most recent Tweet and the Pinned Tweet, if a pinned Tweet has been set.
- **Dashboard**. In the developer dashboard, Auto-Scheduled Posts are now tagged as “Auto-Schedule”.
- **Auto-Schedule**. Get all the [pending Auto-Scheduled Posts](/docs/apis/auto-schedule/pending-auto-schedule) via the API. This returns the list of posts that have been scheduled but not yet published.
- **TikTok**. You can [check if a linked TikTok account is a business account](/docs/apis/analytics/social) with the Social Analytics endpoint.
- **Instagram Comments**. The [comments endpoint](/docs/apis/comments/get-comments) now returns the Instagram top-level post ID to identify the original post.
- **History**. The [history endpoint](/docs/apis/history/get-history) now returns “paused” scheduled posts. In addition the number of past posts returned was increased to 1000.
- **Linking Page**. [Add a footer and copyright info](/docs/multiple-users/manage-user-profiles#footer-text) on the user profile social linking page. Max Pack required.
- **Image Conversion**. The image resizing endpoint can now [convert a PNG or other image type to a JPG](/docs/apis/media/resize#convert-to-jpg) as part of the conversion process. Max Pack required.
## October 2024
-
**First Comment**. [Automatically add a first comment](/docs/apis/post/overview#first-comment) to
your published social media posts. The first social media posts. The first comment is a great
feature that allows you to add more details and context, boost engagement, and set the tone of
the conversation.
-
**Comment Errors**. [Comment errors also are returned in an errors array
field](/docs/apis/comments/post-comment) to align with how post errors are
returned. how post errors are returned.
-
**X/Twitter Comments**. You can now [add media to X/Twitter
comments](/docs/apis/comments/post-comment) and comment replies, which includes
both images and videos.
-
**Pinterest Analytics**. [Pinterest metrics were
enhanced](/docs/apis/analytics/post) and now include one full year of analytics
data, lifetime now include one full year of analytics data, lifetime comments,
and reactions for both images and videos.
-
**RSS Feeds**. When [adding an RSS feed](/docs/apis/feeds/add-feed) you can now
select which social networks the article is published. This is available both
on the dashboard and via the API.
-
**Dashboard**. In the Ayrshare Dashboard API page there is a new Monthly API Calls overview,
which now includes comment API calls as well as post API calls.
-
**PyPi Package**. The [Python PyPi
package](https://pypi.org/project/social-post-api/1.2.1/) has been updated
with new endpoints.
## September 2024
-
**Facebook Analytics**. The [History Get All Posts](/docs/apis/history/history-platform) and
[Analytics](/docs/apis/analytics/post) endpoints now return the users who liked a Facebook post. For
each user, you can get the user name and the user ID.
-
**Content Moderation**. There is a new [Moderation](/docs/apis/validate/moderation)
endpoint which checks if the content is harmful or inappropriate. This
endpoint supports both text and images.
-
**LinkedIn Linking**. Connecting LinkedIn company pages previously required
the user to be a Super Admin on the page. Now Content Admins who manage the
LinkedIn company page can connect, allowing them to post, get analytics, and
manage comments.
-
**User Management**. The [User endpoint](/docs/apis/user/profile-details) now
returns both the Page ID and User ID for Facebook and Instagram.
-
**Dashboard**. The web dashboard Post page now shows an icon indicator if the
post was published from an rss feed.
-
**Facebook Reviews**. [Facebook Reviews](/docs/apis/reviews/get-reviews) now return
the profile picture of the reviewer.
-
**Google Reviews**. [Google Business Profile Reviews ](/docs/apis/reviews/get-reviews)now return all
your reviews, even if there are thousands.
## August 2024
-
**LinkedIn History**. Now you can get the [post history for LinkedIn personal
pages](/docs/apis/history/history-platform). Previously only LinkedIn company pages returned history.
Requires relinking of LinkedIn with Ayrshare.
-
**LinkedIn Analytics**. There are new [data points available for
LinkedIn](/docs/apis/analytics/social) personal and company pages including
`likedBy` and `comment` details.
-
**LinkedIn Lookup**. The [brand endpoint](/docs/apis/listen/brand-user) now allows
you to look up a person or company. This is useful to see details of who liked
one of your posts.
-
**Facebook History**. You can limit the results for a [Facebook Page
history](/docs/apis/history/history-platform) to only show posts that were
published by the page itself. This will filter out all the content that was
not published by the page.
-
**User Profile**. The [user endpoint](/docs/apis/user/overview) now returns a new
field with the timestamp of the last time that an API call was made for this
user profile.
-
**X Long Posts**. You can publish [long posts to Premium X
Accounts](/docs/apis/post/social-networks/x-twitter). Long posts can be up to
25,000 characters long. You can also now [get full long Post
data](/docs/apis/history/history-platform) including the full body and URL in the
long Post body when calling analytics or history.
-
**Web Dashboard**. The post page design was improved and several new content types were added.
You can now post Facebook and Instagram Reels or Stories or YouTube Shorts directly from the
dashboard.
-
**Team Management**. When you [invite a team
member](/docs/multiple-users/manage-user-profiles#team-member-status) you can now see if they
accepted the invite or resend the invite from the Dashboard User Profiles page.
-
**AI Video Titles**. The [video transcripts](/docs/apis/generate/transcribe-video)
now include a suggested title. This is useful for posting to YouTube which
requires a title for every video upload. (Max Pack Required)
-
**Pausing Posts**. You can [pause and unpause scheduled
posts](/docs/apis/post/overview#pause-scheduled-posts) with the post endpoint.
-
**Sentiment Analysis**. The [generate endpoint](/docs/apis/generate/sentiment) now
can generate sentiment analysis for a post or comment to understand if it is
negative, positive, or neutral. The result also includes recommendations on
how to improve.
-
**Instagram Analytics**. [Instagram analytics](/docs/apis/analytics/social) has
been enhanced to return additional demographic data on the engaged audience.
-
**TikTok Photos**. You can now[ post to TikTok with a
photo](/docs/apis/post/social-networks/tiktok#tiktok-image-post). Previously a video was required.
## July 2024
-
**Post History.** [Filter the history endpoint](/docs/apis/history/get-history) based on the social
network platform, whether the post was immediate or scheduled, and the status.
-
**Web Dashboard.** The list of user profiles can now be sorted by title or
create date and the scheduling modal for posts has been improved.
-
**Webhooks.** [Webhooks now automatically
retry](/docs/apis/webhooks/overview#webhook-retries) two times with the same hookId
if the initial webhook does not get a success response.
-
**Reddit.** [Check if a subreddit exists](/docs/apis/validate/check-subreddit)
based on the subreddit name.
-
**Facebook Stories.** A [Facebook Story returned via the history
endpoint](/docs/apis/history/history-platform) now includes the cover image and
direct url to the video.
-
**Cropping Images.** There are new "[crop" mode options for resizing an
image](/docs/apis/media/overview). Now you can specify the dimensions and starting
coordinates to crop an image.
-
**Demo Social Media Posting App.** We released the code for a [demo React +
Node.js web application](https://github.com/ayrshare/social-api-demo) that
allows users to compose, schedule, and post content to multiple social media
platforms simultaneously.
-
**Multi-Platform Posts.** The post endpoint was enhanced to allow you to
[customize your post content and media for different social
networks](/docs/apis/post/overview#multi-platform-posts-and-media) in a single API
call.
-
**Instagram Analytics.** Instagram profile analytics are now available in a
[daily historical time-series](/docs/apis/analytics/social).
-
**Linkedin Comments.** Getting [comments from Linkedin](/docs/apis/comments/get-comments)
now return the comment media link for images or videos.
## June 2024
-
**Ayrshare Messaging API**. The [Ayrshare Messaging
Add-On](https://www.ayrshare.com/social-media-messenger-apis/) is an optional paid add-on that
allows your platform to manage the direct messaging for your users including Facebook Messenger,
Instagram Messaging, and X/Twitter Messaging.
-
**YouTube Comments**. You can now [delete comments on
YouTube](/docs/apis/comments/delete-comments) by using the YouTube comment ID.
-
**Auto Hashtags**. Introducing the new fully rebuilt [auto-hashtag
system](/docs/apis/hashtags/auto-hashtags) with more relevant hashtags and no limit
on post length. The amount of hashtags has also been increased to allow up to
10 hashtags per post.
-
**Web Dashboard**. The dashboard UI has been updated with the ability to
remove all the target social networks in the post page with a single click,
and a new code example section in the API Key page.
-
**User Profile Management**. The [Profiles endpoint has been
enhanced](/docs/apis/profiles/get-profiles) to allow you to filter the results to profiles that have
active social accounts or contain certain platforms.
## May 2024
-
**Google Business**. You can now [update your Google Business Profile
location](/docs/apis/user/update-user) data including phone numbers, website URL, map location, and
more.
-
**History Search**. With the History endpoint you can now [search post
IDs](/docs/apis/history/get-history-id) across all your user profiles. This is
useful if you have a post ID and do not know which user profile posted it.
-
**User Profile Tags**. [Add your own tags to a user
profile](/docs/apis/profiles/create-profile) so you can better organize and manage
profiles. The web dashboard also allows you to see the tags assigned and
search for tags in the User Profiles page.
-
**YouTube Captions**. [Add your own custom
captions](/docs/apis/post/social-networks/youtube#subtitles-captions-for-videos) to
a YouTube video with a SRT or SVB file.
-
**NPM Package**. An updated Node.js [NPM
package](https://www.npmjs.com/package/social-media-api) was released with new
endpoints and more detailed documentation. The package was also renamed to
social-media-api.
-
**Facebook Comments**. You can now [add an image as part of your
comment](/docs/apis/comments/post-comment) on Facebook.
-
**Linkedin Comments**. Linkedin Comments now return the [like count for that
specific comment](/docs/apis/comments/get-comments).
-
**Linkedin Brands**. The Brands endpoint for [Linkedin
data](/docs/apis/listen/brand-user) was enhanced with the localized name of the
account, company specialities, and company description.
-
**Disable Comments**. You can [disable comments on a
post](/docs/apis/comments/overview#disable-comments) on Instagram, LinkedIn, and
TikTok. This works on new posts or already published posts.
-
**Historical Posts**. [Get historical post data from
TikTok](/docs/apis/history/get-history-id) on posts that were not posted via
Ayrshare.
-
**Instagram Analytics**. New data points available for [Instagram
Stories](/docs/apis/analytics/post) including replies, shares, and exit counts.
-
**AI Generate**. [Generate social media post](/docs/apis/generate/post-text) text
with AI based on one or more images. This can also be used to write an image
caption.
-
**Web Dashboard**. For each user profile listed in the dashboard, you can see
the connected social networks. Each social network icon can be hovered to see
the name on the social network.
-
**Social Linking**. In the web dashboard and in your social linking page, there are now profile
images shown next to the page or company name.
## April 2024
-
**Auto-Schedule**. Enhanced to allow selection of the days of the week for [auto-schedule
publishing](/docs/apis/auto-schedule/set-schedule) or select specific dates to exclude.
-
**Facebook Analytics**. [Facebook Post analytics](/docs/apis/analytics/social) now
includes impressions.
-
**Instagram Comments**. [Instagram Get comments](/docs/apis/comments/get-comments)
response now include additional reply information, such as the username, like
count, and hidden status.
-
**Facebook Page Location**. You can now tag a post with a [Facebook Page
Location](/docs/apis/post/social-networks/facebook#location-tagging).
-
**Facebook Audience Targeting**. When creating a Page post on Facebook, you
have the option to [limit its visibility to a specific
audience](/docs/apis/post/social-networks/facebook#audience-targeting) using
different demographic factors such as age, county, education, and others.
-
**Linkedin Comments**. [LinkedIn comments](/docs/apis/comments/get-comments) from a
company now have additional fields including organization type, company
website, and the company description.
-
**Instagram History**. The history for Instagram now returns all the [images
and videos in a carousel](/docs/apis/history/history-platform).
-
**YouTube Analytics**. Get a [daily breakdown of YouTube analytics](/docs/apis/analytics/social) at
the channel level.
## March 2024
-
**Instagram Collaborators**. Instagram collaboration allows you to co-author content with other
accounts. The public original author can tag another private or public account as a
collaborator. [Add Instagram collaborators to media
posts](/docs/apis/utils/instagram-get-collaborator).
-
**Google Business Profile**. Additional data on [Google Business
Profile](/docs/apis/user/profile-details) is now available including links to the
reviews and map, place Id, and other data. Getting this additional data
requires relinking of the Google Business Profile.
-
**Facebook Page, Instagram, Google Profile Location**. On the page linking
screen, [you can now display the page
location](/docs/multiple-users/manage-user-profiles#display-page-location) for a
Facebook Page, Instagram account, and Google Business profile.
-
**Facebook Profile Analytics**. [Facebook Social Profile
Analytics](/docs/apis/analytics/social-by-id) now returns up to 4 quarters of data.
You can set the data to be returned either aggregated or daily.
-
**Facebook History**. Facebook Stories now returned in the [Get All History
endpoint](/docs/apis/history/history-platform).
-
**Social Linking Page**. The Ayrshare Social Linking page now [supports
redirecting](/docs/multiple-users/api-integration-business#opening-and-closing-the-social-linking-url)
to the origin opening tab or window.
-
**Facebook Reviews**. You can now [reply to a review on
Facebook](/docs/apis/reviews/reply-review).
-
**Instagram Followers**. [Instagram Get Followers
Online](/docs/apis/analytics/instagram-follower-count) has an enhanced UTC Format.
This data returns the total historical count of your Instagram followers
online per hour, which allows you to optimize posting for maximum engagement.
-
**Instagram Carousel**. Now publish both videos and images in an [Instagram
carousel](/docs/apis/post/social-networks/instagram#carousel-of-images-and-videos).
Up to a combined 10 media items can be included.
- **TikTok**. TikTok captions now support line breaks with the "\n" character.
## February 2024
-
**Reviews**. Get, reply, and delete reviews on Google Business Profile and Facebook Pages using
the new [/reviews](/docs/apis/reviews/get-reviews) endpoint.
-
**Linkedin Comments**. Get [LinkedIn comments](/docs/apis/comments/get-comments) by
comment ID for comments done outside of Ayrshare.
-
**Linkedin Mentions**. [Linkedin
mentions](/docs/apis/post/social-networks/linkedin#linkedin-mentions) in comments
and reply to comments now resolve to the referenced organization handle.
-
**Public Profile Data**. Now you can search for Facebook Pages and Linkedin
names in the [brand endpoint](/docs/apis/listen/search/fb-page-search). Look up
users' or companies' social media public information, such as followers,
profile image, and websites. These users and companies do not need to be a
linked Ayrshare user.
-
**Facebook Comments**. The comments endpoint API for [Facebook
Comments](/docs/apis/comments/get-comments) now returns replies directly in the
response body.
-
**Instagram Banned Hashtags**. Check for banned hashtags by using the new [API
endpoint](/docs/apis/hashtags/check-hashtags) or the new [web
tool](https://app.ayrshare.com/instagram-banned-hashtag-checker). This is
helpful to keep your accounts safe from suspensions or shadow banning.
-
**Facebook Groups**. Facebook has announced that they will be removing API access to Facebook
Groups. [Learn
more](https://www.ayrshare.com/blog/facebook-removes-groups-api-access-impact-and-implications/).
## January 2024
-
**Longer Instagram Videos**. [Instagram Video posts](/docs/media-guidelines/instagram) now
support up to 15 minute lengths and 1 GB. This is an increase from the prior 60 seconds and 100
MB.
-
**Translate Post Text**. Choose over 100 different languages to [translate
your post text](/docs/apis/generate/translate-post). For example, translate English
to French or Spanish to German. The source language is automatically detected.
-
**Error Translation**. Error messages can be [automatically
translated](/docs/errors/errors-ayrshare#error-message-translation) to the language
of your choice. This is useful if you want to display the error directly to
your user in their preferred language.
-
**Pinterest Analytics**. Additional [Pinterest data
points](/docs/apis/history/history-platform) are available for get all history
including post title, notes, and board id.
-
**Check Post Length**. The [Check Post Length
endpoint](/docs/apis/validate/check-post-length) now includes validations for
Facebook, Google Business Profile, LinkedIn, Pinterest, and YouTube.
-
**New User Batch Endpoints**. When you need a large data set, the batch
endpoints are a great option. You can use the batch endpoints to [get json
files](/docs/apis/user/batch-all-users) for all your user profiles and then use the
[webhook to let you know when the file is
ready](/docs/apis/webhooks/actions#batch-action).
-
**Linkedin Historical Posts**. Get [historical data for a Linkedin
post](/docs/apis/history/history-social-id) published outside of Ayrshare.
-
**Linkedin Posts Reactions**. The [Get All Post
endpoint](/docs/apis/history/history-platform) for LinkedIn now returns reactions
for the post, such as Likes, Praise, Maybe, and Appreciation.
-
**Last API Call Time**. Access the time that you last used the API key in the
web dashboard in the API Key section.
-
**Ayrshare Dashboard History**. The web dashboard now allows you to load all
your historical posts or webhook logs with a new "Load more" button.
-
**Webhook Errors**. View the [error rate of your webhooks](/docs/apis/webhooks/overview#webhook-logs)
to see the percentage of success vs error responses.
## Older Updates
Check the [Update Archive](/docs/whatsnew/archive) to see older updates.
# Upcoming API Changes
Source: https://www.ayrshare.com/docs/whatsnew/upcoming-api-changes
Changes to the API that may impact your integration
The following changes to the API will be effective on the date specified.
Please review carefully for any potentially breaking changes.
See [What's New](/docs/whatsnew/latest) for all new features.
-
**Facebook: Meta retired unique-impression (reach) and 3-second video-view Insights metrics.** Meta removed these metrics across all Graph API versions, so the affected fields are no longer returned. See the [Meta Graph API v25 changelog](https://developers.facebook.com/blog/post/2026/02/18/introducing-graph-api-v25-and-marketing-api-v25/) for details.
-
[GET analytics/post](/docs/apis/analytics/post) no longer returns the following Facebook fields:
- impressionsUnique → migrate to `mediaView`
- impressionsFanUnique → migrate to `mediaView`
- impressionsOrganicUnique → migrate to `mediaView`
- impressionsPaidUnique → migrate to `mediaViewIsFromAds`
- videoViewsUnique → use `videoViews` for non-unique 3-second views
- The `totalVideoViews*Unique` and `totalVideoImpressions*` families (e.g. `totalVideoViewsOrganicUnique`, `totalVideoViewsPaidUnique`, `totalVideoViewsUnique`)
-
[GET analytics/social](/docs/apis/analytics/social) no longer returns the following Facebook fields:
- The `pagePostsImpressions*` family (`pagePostsImpressions`, `pagePostsImpressionsPaid`, `pagePostsImpressionsUnique`, `pagePostsImpressionsOrganicUnique`, `pagePostsImpressionsViral*`, `pagePostsImpressionsNonviral*`) → migrate to `pageMediaView`
- pagePostsServedImpressionsOrganicUnique → migrate to `pageMediaView`
- pageVideoViewsUnique → use `pageVideoViews` for non-unique 3-second views
-
Use `mediaView` / `pageMediaView` for reach. A Total Unique Media Views successor metric is planned. Still-supported fields such as `reactionsByType`, `videoViews`, `mediaView`, `pagePostEngagements`, `pageVideoViews`, and `pageVideoViewsPaid` are unaffected.
-
**YouTube transient failures now return HTTP 503/504 instead of 500:** Some YouTube upload failures previously surfacing as HTTP 500 (`code: 176`) now return HTTP 503 (`code: 454`) or HTTP 504 (`code: 453`). Both responses include `retryAvailable: true`. Customer integrations that filter on HTTP 500 to retry YouTube uploads should switch to filtering on the `retryAvailable` field on the response body. See [error codes](/docs/errors/errors-ayrshare) for details.
-
**Empty Analytics Returns Error 187:** Requesting [Social Analytics](/docs/apis/analytics/social) or [Post Analytics](/docs/apis/analytics/post) when no platforms return data now returns `{ "status": "error", "code": 187 }` instead of `{ "status": "success" }`. Update any client code that relies on the previous empty-success behavior.
-
**X/Twitter BYO Key Requirement:** All X/Twitter operations through Ayrshare will require your own API credentials. After linking your X account via OAuth, include 2 headers in every X/Twitter request: `X-Twitter-OAuth1-Api-Key` and `X-Twitter-OAuth1-Api-Secret`. Requests without valid credentials will be rejected. See the [X BYO Key Setup Guide](/docs/dashboard/connect-social-accounts/x-twitter-byo-keys) for instructions.
-
**RSS-to-X Deprecated:** RSS auto-posting to X/Twitter will no longer be supported after March 31, 2026. RSS feeds run on a schedule without per-request credentials, which is incompatible with the BYO key model. RSS auto-posting to all other platforms is unaffected.
-
**X Account Activity Webhook Deprecated:** The X Account Activity webhook action (`accountActivity`) will no longer be available after March 31, 2026. This includes all real-time event notifications for linked X accounts (posts, mentions, DMs, likes, follows, blocks, etc.).
-
Starting November 14, 2025, Facebook will be deprecating the following fields for [GET analytics/social](/docs/apis/analytics/social):
- pageFans
- pageFansCity
- pageFansLocale
- pageFansCountry
- pageFansAdds
- pageFanAddsUnique
- pageFanRemoves
- pageFanRemovesUnique
- pageImpressions → migrate to `pageMediaView`
- pageImpressionsPaidUnique → migrate to `pageMediaViewIsFromAds`
- pageImpressionsUnique
- pageImpressionsViral
- pageImpressionsViralUnique
- pageImpressionsPaid → migrate to `pageMediaViewIsFromAds`
-
Starting November 14, 2025, Facebook will be deprecating the following fields for [GET analytics/post](/docs/apis/analytics/post):
- impressions and impressionsFanPaidUnique → migrate to `mediaView`. Granular breakdowns available via `mediaViewIsFromAds` (ad-attributed views) and `mediaViewIsFromFollowers` (follower-attributed views).
- postImpressionsUnique (Reels) → use `blueReelsPlayCount` for reel play count or `postVideoViewTime` for total watch time.
-
Starting September 1, 2025, the [get comments](/docs/apis/comments/get-comments) endpoint for
Instagram will no longer include the `text` field in reply objects. Use the `comment` field
instead to access reply content.
-
X (Twitter) [get comments](/docs/apis/comments/get-comments) endpoint will move the user public
metrics to the new `publicMetrics` object. The following fields will be moved from the top
level to the `publicMetrics` object:
- followersCount
- followingCount
- tweetCount
- listedCount
- mediaCount
-
Facebook will be deprecating the following fields for [GET
analytics/social](/docs/apis/analytics/social):
- pageVideoViews10S
- pageVideoViews10SAutoplayed
- pageVideoViews10SClickToPlay
- pageVideoViews10SOrganic
- pageVideoViews10SPaid
- pageVideoViews10SRepeat
- pageVideoViews10SUnique
-
YouTube has deprecated the setting allowed and blocked regions. You can still add in the
allowed and blocked regions to the post endpoint, but they will be ignored.
-
The following metrics for [Instagram post analytics](/docs/apis/analytics/post) will be deprecated:
REELS:
-
playsCount
-
clipsReplaysCount
-
igReelsAggregatedAllPlaysCount
FEED/STORY:
-
The [history endpoint](/docs/apis/history/get-history) will enforce the cache for 1 minute if the `limit` is greater than the default value of 25.
The [get comments](/docs/apis/comments/get-comments) endpoint for TikTok will standardize field names
to match other social networks.
-
The field `replyList` will be renamed to `replies` and `profileImage` will be renamed to
`profileImageUrl`.
- Both new field names are already available and can be used in your integration.
-
TikTok as the following updates:
-
[social analytics](/docs/apis/analytics/social) endpoint: The following changes are coming: •
The `durationAverage` field will be deprecated and removed. • Due to TikTok API
limitations, the fields `shareCountTotal`, `viewCountTotal` and `commentCountTotal` will
now only return totals for the past 60 days instead of all-time totals. • To start using
the 60-day totals now, add `period60Days: true` to your API request body Note: Using this
parameter will significantly improve response times.
-
[history platform](/docs/apis/history/history-platform) and [post
analytics](/docs/apis/analytics/post) endpoints: The undocumented fields `caption`, `comments`,
`shares`, `likes`, `shareUrl`, and `itemsId` will be removed - the fields `post`,
`commentsCount`, `sharesCount`, `likesCount`, `postUrl`, and `id` should be used instead.
The [/user](/docs/apis/user/profile-details) endpoint is changing how it reports API usage:
-
The `monthlyApiCalls` field will be expanded to count all API calls (posts, comments,
analytics, etc.).
- For post-specific counts, use the new `monthlyPostCount` field.
-
The `monthlyApiCallsQuota` field will be deprecated and replaced by the new `monthlyPostQuota`
field.
-
Meta is deprecating the `videoViews` field on the Instagram [post analytics
endpoint](/docs/apis/analytics/post).
-
Additionally, the `emailContactsCount`, `getDirectionClicks`, `profileViewsCount`,
`textMessageClicks`, `websiteClicksCount`, and `phoneCallClicksCount` fields will be removed
from the Instagram [social analytics](/docs/apis/analytics/social) endpoint.
- These fields will be removed on January 5, 2025.
-
For enhanced security, we will prevent Profile Keys from being used as API Keys. If you
attempt to use a Profile Key in place of the API Key, the system will return an error. [See
here](/docs/apis/overview#authorization) on how to properly use a Profile Key.
-
We've updated how errors for TikTok scheduled webhooks are reported. These errors will now
appear in the errors array, consistent with our error handling for other scheduled webhook
types. Note, the current top-level errors will still be returned, but we encourage use of the
errors array.
-
The history endpoint will now return responses as objects by default. The objResponse
parameter will be set to true automatically.
-
Get All History LinkedIn will return an array for the mediaUrls object. Previously an object
was returned if only one media item and an array if multiple media items. Now an array will
always be returned even if only a single media item. If you need the previous behavior, you
can use the `objResponse: false` query parameter.
-
The media endpoint will no longer return url\_1080. If you do need to resize an image, please
see the [resize endpoint](/docs/apis/media/resize).
-
**Update September 25, 2024**: Meta (Facebook) has released the fields deprecation, so the
removal of the fields are in effect. Please see the updated returned in [social
analytics](/docs/apis/analytics/social).
-
Facebook will be [deprecating several
fields](https://developers.facebook.com/docs/pages-api/changelog/). The [social analytics
endpoint](/docs/apis/analytics/social-by-id) will no longer return these fields after September 16,
2024\.
-
The [new linked shortener](/docs/apis/links/overview) system will replace the shortener endpoint,
which has been deprecated by Google. The new link shortener requires the add-on [Max
Pack](/docs/additional/maxpack).
-
Link shortening will be off (`false`) by default. To automatically shorten links use
`shortenLinks: true` in the post endpoint call, which uses the new[ link
endpoint](/docs/apis/links/overview).
-
Meta will be deprecating their Facebook Groups API. Please see the
[announcement](https://www.ayrshare.com/blog/facebook-removes-groups-api-access-impact-and-implications/).
-
Instagram has clarified the time period of the online followers data set. Please see here for
[details](/docs/apis/analytics/instagram-follower-count).
-
[Reply to comment with comment ID](/docs/apis/comments/reply-to-comment) default response will be
an object as listed in the docs instead of an Array. You may use the objResponse parameter set
to boolean `false` if wish to keep an Array response.
-
The [retry post endpoint](/docs/apis/post/retry-post) will return a status of "pending" instead of
"success" to better reflect the status of the retry.
-
The [API changes on scheduleDate and
createDate](/docs/whatsnew/upcoming-api-changes#changes-in-effect-june-17-2022) will be released.
-
The `/history/instagram` endpoint fields `caption`, `message`, `createdTime` and `timestamp`
fields were deprecated on April 1, 2023 and will be removed. Please use the `post` and
`created` fields.
-
The `/history/linkedin` endpoint field `mediaUrls` will be returned as an array instead of an
object to support multiple images. You can force the array being returned now by including the
LinkedIn query parameter `?multiMedia=true`. Please note, before December 1, 2023 the
`multiMedia` query parameter must be used to return media with multiple images. After December
1, 2023 multiple images will be returned by default.
-
The Scheduled Action TikTok webhook will have the String `platform` deprecated. Please use the
`platforms` array field as is done for other Scheduled Action webhooks.
- The delete comment docs have been corrected to align with the correct return.
-
The TikTok commentId field will be replaced with the id field to align with the standard
comment delete format.
-
The Twitter delete comment return will no longer contain a `posts` array so the return aligns
with the standard comment delete format. The new return will be as follows:
-
The following [social analytics endpoint](/docs/apis/analytics/social) YouTube fields will be
returned as numeric instead of String values.
-
We have upgrade to Twitter's new API version 2. Twitter has deprecated a few fields in Version
2, which affects the /analytics/social and getAllHistory endpoints. These following fields
will still be returned until September 1, 2023, but will have a zero or empty string value.
-
We're excited to launch [TikTok direct publishing](/docs/apis/post/social-networks/tiktok), comment
management, and advanced analytics. Your users will no longer need to open their TikTok mobile
app to post and enter caption text. Now after sending via Ayrshare, the TikTok video and
caption is directly published.
-
We're also introducing adding, getting, and deleting TikTok comments + demographic analytics
data.
-
Your user will need to unlink and relink their TikTok account to enable direct publishing.
Existing connections will continue with the indirect method and require the TikTok mobile app
to publish.
-
Google Business Profile has changed the available social analytics data available. The new
fields available are the following. Previous fields will still be present, but with a zero
value and fully removed on March 17, 2023.
- Get All Posts descriptions, text, message fields standardized to `post` field.
- TikTok fields deprecated: `shareUrl`. Use `postUrl` instead.
-
For all history endpoints the fields `createdAt`, `createdTime`, and `timestamp` will be
replaced by the `created` field which returns the creation time in UTC format.
-
The `scheduleDate` field will no longer return an Object by a String containing the schedule
time in UTC format.
-
The undocumented `created_date` field on /history will be removed. Use `created` instead.
-
Analytics on a [Facebook post](/docs/apis/analytics/post) returns `reactions` as an object in the
following format.
-
History by default will return the last 20 posts. Up to 500 can be returned with the
`lastRecords` parameter.
# System Status
Source: https://www.ayrshare.com/docs/additional/status
Social network and Ayrshare API system status
See the current system status of the social networks and Ayrshare APIs.
Click the button below to view the status page and sign up for email alerts.
You can also stay informed by following us on X [@ayrshare](https://x.com/intent/user?screen_name=ayrshare) or [Bluesky](https://bsky.app/profile/ayrshare.com).
### API and Social Network Status
Call the status endpoint directly:
```
https://status.ayrshare.com/summary.json
```
# Do I need a credit card to start Ayrshare?
Source: https://www.ayrshare.com/docs/help-center/account/do_i_need_to_enter_a_credit_card_to_get_started
Starting the Launch Plan 28-day free trial requires a credit card or Stripe Link at checkout. Learn what the trial includes and how to cancel.
Yes. Starting the 28-day free trial of the [Launch Plan](/docs/multiple-users/business-launch-overview) requires a payment method. When you begin the trial from the [pricing page](https://www.ayrshare.com/pricing/), checkout collects a payment method (a credit card or Stripe Link) before the trial starts.
The trial is free for the full 28 days, and you can cancel anytime before it renews so you are not charged.
For ongoing use, the [Launch Plan](/docs/multiple-users/business-launch-overview) is the entry-tier multi-user plan (capped at 10 user profiles), and the full [Business Plan](/docs/multiple-users/business-plan-overview) is for scaling beyond that.
# How to change or cancel your Ayrshare subscription
Source: https://www.ayrshare.com/docs/help-center/account/how_do_i_change_or_cancel_my_subscription
Upgrade, downgrade, or cancel your Ayrshare subscription from the dashboard, and see which plan changes are self-serve versus support-only.
If you have a paid subscription, follow these steps to view your billing information or make changes to your subscription, such as adding a tax id, update billing information, or canceling your subscription:
1. Sign in to your [Ayrshare dashboard](https://app.ayrshare.com).
2. If you have a Business Plan or Launch Plan, make sure you are switched to your Primary Profile.
3. Navigate to the "Account" page.
4. On the "Account" page, you will find your billing details and options to modify or cancel your subscription.
**Note on Plan Upgrades**
-
Self-serve: On the free Basic Plan, you can upgrade to any
plan yourself from the [pricing page](https://www.ayrshare.com/pricing/).
Within the multi-user plans, a monthly Launch Plan can upgrade to the full
Business Plan directly from the [dashboard](https://app.ayrshare.com).
-
Support-only (for now): Moving from the paid Premium Plan
to a multi-user plan (the Launch Plan or Business Plan), or from an annual
Launch Plan to the Business Plan, isn't self-serve yet — for now, email
[support@ayrshare.com](mailto:support@ayrshare.com) and we'll handle the
migration. Your connected social accounts, API keys, and settings carry over.
Please note the following important information regarding cancellations:
**All Account Types**
-
Upon cancellation, all posts will be removed from the Ayrshare systems.
However, they will still remain visible on the respective social media
platforms where they were originally posted.
-
When you cancel your subscription, all information associated with your User
Profiles will be permanently deleted from our system.
**Business and Premium Plus Plans**
-
When you cancel your subscription, it will remain active until the end of
your current billing cycle.
-
You will be charged one final time on the cancellation date, as charges are
processed at the end of each billing period.
-
For more details, please refer to our [terms of
use](https://www.ayrshare.com/terms/).
**Delete Account**
Ayrshare accounts in good standing can be deleted by using the "Delete Account" button in the "Account" page.
# How to Reset Your Ayrshare Password | Help Center
Source: https://www.ayrshare.com/docs/help-center/account/how_do_i_reset_my_password
Reset your Ayrshare account password in a few quick steps. Follow this guide to request a reset link and regain access if you have forgotten your password.
If you registered with an email and forgot your password, you can change it by:
1. Go to the [Ayrshare Dashboard](https://app.ayrshare.com) and the login screen. You may need to first logout.
2. Click "Forgot Password".
3. Enter your email address.
4. An email from Ayrshare Support will be sent to your inbox with a link to reset your password. Please be sure to check your spam or other sorting folders if you don't see it.
If you registered with Google or Github, please change your password at their site.
# How Ayrshare Secures & Protects Your Account | API Docs
Source: https://www.ayrshare.com/docs/help-center/account/how_does_ayrshare_secure_and_protect_my_account
Learn how Ayrshare keeps your account and connected social media data secure, including the authentication and data-protection measures the platform uses.
## Security
We take security very seriously. You have full control over the connection between Ayrshare and your social media accounts.
All the data you upload to Ayrshare is securely stored on the secure-by-design global cloud infrastructure.
-
All stored data is encrypted in transit and [at
rest](https://cloud.google.com/docs/security/encryption/default-encryption). Every object's data
and metadata is encrypted under the [Advanced Encryption
Standard](https://en.wikipedia.org/wiki/Advanced_Encryption_Standard), and each encryption key
is itself encrypted with a regularly rotated set of master keys.
-
API traffic is protected in transit with **TLS 1.3**, including **post-quantum ready** encryption
via the `X25519MLKEM768` hybrid key exchange. This adds a quantum-safe
([ML-KEM](https://en.wikipedia.org/wiki/Kyber)) algorithm alongside classical ECDHE to defend
against "harvest now, decrypt later" attacks, and is fully backward compatible — connections
upgrade to post-quantum protection only when the client supports it.
-
All social networks keys are stored in a secure [secret
manager](https://cloud.google.com/secret-manager) vault.
-
Authentication is handled by Google with top-level security. Even we can't access your
passwords.
-
When you delete a social network linkage we delete all information about that network. If you
need to restore the link you need to re-authorize the network.
- All payment information is handled by Stripe, who are fully PCI compliant.
We also maintain controls to restrict our employees' access to your data.
If you have any questions please [contact us](mailto:support@ayrshare.com).
## Data Encryption
The Google Cloud handles all data storage:
-
Google uses several layers of encryption to protect customer data at rest in Google Cloud
products.
-
Google Cloud encrypts all customer content stored at rest, without any action required from the
customer, using one or more encryption mechanisms.
-
Data for storage is split into chunks, and each chunk is encrypted with a unique data encryption
key. These data encryption keys are stored with the data, encrypted with ("wrapped" by) key
encryption keys that are exclusively stored and used inside Google's central Key Management
Service. Google's Key Management Service is redundant and globally distributed.
-
All data stored in Google Cloud is encrypted at the storage level using AES256, with the
exception of a small number of Persistent Disks created before 2015 that use AES128.
-
Google uses a common cryptographic library, Tink, which incorporates a FIPS 140-2 Level 1
validated module, BoringCrypto, to implement encryption consistently across almost all Google
Cloud products. Consistent use of a common library means that only a small team of
cryptographers needs to implement and maintain this tightly controlled and reviewed code.
## GDPR Data Protection Agreement
Please see our [DPA](https://www.ayrshare.com/data-processing-agreement/) for details on GDPR compliance.
## Privacy Policy & Terms of Service
For comprehensive information on data handling practices, please review our [Privacy Policy](https://www.ayrshare.com/privacy/) which details how we collect, use, and protect your information.
Additionally, our [Terms of Service](https://www.ayrshare.com/terms/) outlines the rules and guidelines governing the use of our platform and services.
## Post Verification
Ayrshare has a verification system that analyzes your posts for compliance with the social networks' guidelines. If there is an issue we'll let you know before sending the post. This helps prevent your social account from being locked or shadow banned.
See here more for information:
# How to view your invoices - Ayrshare API Documentation
Source: https://www.ayrshare.com/docs/help-center/account/how_to_view_your_invoices
Find and download your Ayrshare billing invoices from the dashboard. This guide shows where to view payment history and access invoices for your records.
You can access your invoices in the Dashboard Account page.
If you have a paid account, please go to the [dashboard](https://app.ayrshare.com), switch to your **Primary Profile** if you have a Business Plan or Launch Plan in the "User Profiles" page, and go to the "Account" page.
On the Account page click "View ->" to access your past invoices, see your upcoming invoice, update your tax ID for future invoices, or update your billing details.
Due to audit compliance requirements, our payment provider does not allow modifications to invoices that have already been completed and processed.
Any changes to your billing details will be reflected on your next invoice.
For information on how your invoice is calculated, please see the bottom of your invoice for details.
# Ayrshare Help Center: Guides, FAQs & Support | API Docs
Source: https://www.ayrshare.com/docs/help-center/overview
Browse the Ayrshare Help Center for setup guides, account and billing FAQs, troubleshooting tips, and answers to the most common social media API questions.
Welcome to the Ayrshare Help Center!
We've organized everything into three easy-to-navigate sections to help you find the information you need.
## Account
This section helps you understand everything about managing your Ayrshare account.
You'll find detailed information on subscription management, invoicing, and account set up.
## Product
This section helps you understand everything about getting the most value from the platform.
You'll find detailed information about how Ayrshare works, how to use the API, and how to get the most out of your social media.
## Technical Support
When you need hands-on help with implementation or troubleshooting, the technical support section provides practical solutions for common challenges.
This section is particularly valuable for developers and social media managers who are actively using the platform.
# Are Social Networks' Apps & APIs at Parity? | Ayrshare Docs
Source: https://www.ayrshare.com/docs/help-center/product/are_social_networks_native_apps_and_the_apis_at_parity
Understand how social network APIs compare with their native apps, which features reach parity, and what the differences mean when posting through Ayrshare.
The social networks do not generally allow the same feature set via their API as they do within their own native app. Often a feature will exist in the native app that is not available via the API.
The social networks are continually enhancing their offerings as is Ayrshare, so keep an eye out on our [latest releases](/docs/whatsnew/latest).
# Give Users Dashboard Access | Ayrshare Documentation
Source: https://www.ayrshare.com/docs/help-center/product/can_i_give_my_users_the_dashboard
Learn whether you can give your own users access to the Ayrshare Dashboard, how user profiles and shared access work, and how to manage accounts for clients.
The Ayrshare Dashboard is designed to give you, the account owner, full access to your Launch Plan, Business Plan, or Enterprise Plan account and it is meant for your internal use only.
You should **never give your users or clients access to the dashboard** as it will give them the ability to make changes to your account.
Ayrshare is an API-first service and does not offer a white-label client facing GUI, except for [linking social accounts](/docs/multiple-users/api-integration-business).
You design and build the best front-end GUI solutions for your users and we'll handle all the social media complexity on the back-end.
If you need to give another user access to your account, you can invite them to be a [Team
Member](/docs/multiple-users/manage-user-profiles#invite-a-team-member) in your account. Team Members
have the ability to post on your behalf using the Ayrshare API. You can also restrict the team
member's access by [locking the Primary
Profile](/docs/multiple-users/manage-user-profiles#primary-profile-lock).
# Ayrshare SDK Packages | Help Documentation
Source: https://www.ayrshare.com/docs/help-center/product/do_you_have_sdk_packages_to_make_my_life_easier
See which official Ayrshare SDKs and packages are available, such as Node.js and Python, to integrate the social media API faster in your own tech stack.
We certainly do. We have [Node.js](/docs/packages-guides/nodejs) and [Python](/docs/packages-guides/python) packages available.
We also have a [Bubble.io](/docs/packages-guides/bubble) plugin, [Airtable](/docs/packages-guides/airtable), [Make](/docs/packages-guides/make), [Notion](/docs/packages-guides/notion), [Flutter](/docs/packages-guides/flutter), and [Retool](/docs/packages-guides/retool) guides.
# Does an API Affect Post Views or Engagement? | Ayrshare Docs
Source: https://www.ayrshare.com/docs/help-center/product/does_using_an_api_affect_post_views_or_engagement
Find out whether publishing through a social media API like Ayrshare affects your reach, views, or engagement compared with posting natively in each app.
You may wonder if using an API to publish content to social networks affects their post performance or engagement. Based on real-world social media usage of our clients and other companies, and third party research, we know that using an API versus a native social network app does not impact the performance of posts.
**Summary:** The social media networks do not penalize or favor one posting method over another,
so using the social network's native app, or via API in a third-party social media publishing
platform, or through direct API calls will not impact post performance.
### API Posting is the Standard for Professional and Business Content
Our analysis of client conversations and industry usage trends confirms that the vast majority of professional social media content is published via APIs.
We find that over 80% of small businesses and professional creators and just about 100% of medium and large businesses post their content to social networks via an API.
If a company or brand employs an agency or uses one of the [hundreds of social media management platforms](https://www.g2.com/categories/social-media-mgmt), then they are posting via API.
All third-party software designed for social media publishing integrates directly with the APIs provided by social networks, making API-based posting the industry standard.
Think of any major brand or company that you know. Chances are, they are using an API to publish their content to social networks.
### Third Party Research
There are multiple published data-driven studies \[1, 2, 3], which conclude that the method of posting - whether directly on the social network's native app, a third-party social media publishing platform, or through an API - does not impact performance including post views, reach, and engagement rates.
## Understanding Performance Variations
While the API itself doesn't affect post performance, you may notice differences between API and manual posts.
These engagement variations typically stem from several key factors rather than the posting method:
### Algorithms Change
What drives engagement on social networks today may not yield the same results tomorrow. Social media algorithms are dynamic, constantly adapting to various factors, and their exact workings cannot be fully reverse-engineered. Platforms frequently update their ranking criteria, impacting content visibility in unpredictable ways.
For instance, Facebook has alternately prioritized and deprioritized news content over time, meaning publishers posting news regularly may experience significant fluctuations in reach. Similarly, X modified its algorithm to downrank posts containing links to third-party sites, directly affecting the performance of link-based content.
### Algorithm Learning Patterns
Social media algorithms, particularly Meta's Facebook, also learn from your own historical post performance. If your past content has consistently performed well, the algorithm is more likely to prioritize similar posts in the future. However, any change in wording, tone, content type, AI involvement, or other factors can rapidly shift how favorably the algorithm ranks your posts. And always [avoid duplicate posts](/docs/testing/post-verification#duplicate-and-similar-posts) - the social networks will penalize you for posting the same content multiple times.
### Timing Sensitivity
Social media algorithms are highly sensitive to timing.
Even a *30-minute difference* during peak hours can significantly impact reach and engagement.
What might appear as an API-related issue is often a timing difference.
[Research shows](https://www.ayrshare.com/blog/best-times-frequency-to-post-on-social-media-networks/) that each social network has unique peak engagement windows, and your specific audience may have different active hours than the general population.
## What Actually Drives Social Media Engagement?
The performance success of your social media posts depends on three key factors:
### 1. Content Quality and Relevance
High-performing posts share common characteristics regardless of how they're published:
- Unique content that resonates with your specific audience's interests.
- Clear, compelling messaging that encourages interaction.
- High-quality media assets (images, videos) that capture attention.
- Strong calls-to-action that drive engagement.
### 2. Strategic Timing
Understanding and leveraging publishing timing is crucial for maximizing engagement:
- Maintain consistency in your posting schedule to build regular engagement.
-
Consider time zones - post when your target audience is online. For example, using the [count of
Instagram followers
online](/docs/apis/analytics/instagram-follower-count#count-of-instagram-followers-online) to
determine the best time to post.
-
Test different posting times to identify your [optimal publishing
windows](https://www.ayrshare.com/blog/best-times-frequency-to-post-on-social-media-networks/).
- Use analytics to track when your content performs best.
### 3. Optimal Posting Frequency
Finding the right cadence is crucial for maintaining engagement.
[Review our recommended posting limits](/docs/testing/post-verification#recommended-posting-limits) to optimize your strategy.
Over-posting can lead to audience fatigue and reduced engagement, while under-posting may result in decreased visibility.
The key is finding and maintaining a consistent schedule your audience can rely on.
## Optimizing Your API Posting Strategy
If you notice engagement differences between API and manual posts, try these optimization steps:
1. **Analyze Your Timing**
Track when your highest-performing posts occur and adjust your API posting schedule accordingly.
Compare posts made at the same time through different methods to isolate timing effects from posting method effects.
2. **Monitor Performance Metrics**
Keep detailed metrics of your posts, including:
- Engagement rates across different posting times.
- Reach and impression data.
- Audience activity patterns.
- Content type performance.
3. **Refine Your Approach**
Use the data you gather to continuously optimize your strategy.
If certain content types or posting times consistently perform better, adjust your API posting schedule to align with these insights.
## References
1.
Impact on Facebook Reach
2.
Third-Party Social Media Tools Study
3.
Analysis of Third-Party Posting Tools
# How to Submit a Feature Request | Ayrshare Documentation
Source: https://www.ayrshare.com/docs/help-center/product/how_do_i_submit_a_feature_request
Learn how to submit a feature request to the Ayrshare team, where to share product feedback, and how new social media API features get reviewed and prioritized.
Do you have an idea for a feature or capability that's not currently available on our platform? We'd love to hear from you! Many of our features were developed based on feedback from users like you.
Use our [feature request form](https://www.ayrshare.com/feature-request) to share your suggestions.
Our team will review all recommendations. To see if your suggestion is implemented, keep an eye on our [What's New at Ayrshare](https://www.ayrshare.com) page.
# How do you pronounce Ayrshare? - Ayrshare API Documentation
Source: https://www.ayrshare.com/docs/help-center/product/how_do_you_pronounce_ayrshare
Ayrshare is pronounced "air-share." Learn the origin of the name and the correct way to say it when talking about the Ayrshare social media API.
Ayrshare is pronounced as "Air Share". Sharing over the social air!
# How Does Ayrshare Integrate With Social Networks?
Source: https://www.ayrshare.com/docs/help-center/product/how_does_ayrshare_integrate_with_the_social_networks
Learn how Ayrshare connects to social networks through their official APIs, how authentication works, and what that means for posting and analytics at scale.
Ayrshare integrates directly with each social network's official APIs and partnership programs.
This ensures our platform delivers the most reliable, secure, and current social media management features available, all while maintaining compliance with each network's policies and best practices.
For more information on security and compliance, please see our [security](/docs/help-center/account/how_does_ayrshare_secure_and_protect_my_account) page.
# How Many Posts & API Calls Can I Make? | Ayrshare Docs
Source: https://www.ayrshare.com/docs/help-center/product/how_many_posts_and_api_calls_can_i_make
Understand how Ayrshare's posting and API call limits work across plans, how usage is counted, and how to pick the right plan for your social media volume.
Ayrshare generally does not impose limits on posting beyond the social networks' requirements. For example, LinkedIn limits 150 posts per day and Instagram 50 posts every 24 hours.
We recommend limiting daily posts to maximize views and engagement.
Please see our [recommended posting limits](https://ayrshare.mintlify.app/testing/post-verification#recommended-posting-limits).
All posts and API calls are subject to Ayrshare's fair use policy to prevent abuse of the social networks' services. Please review the [terms of service](https://www.ayrshare.com/terms/) and [rate limits](/docs/errors/errors-http#429-rate-limit) for details.
# How Many Social Accounts Can I Connect? | Ayrshare Docs
Source: https://www.ayrshare.com/docs/help-center/product/how_many_social_accounts_can_i_connect
Learn how many social media accounts you can connect to Ayrshare, how user profiles let you scale to many accounts, and which plans support the most accounts.
Each user (also known as a user profile) in Ayrshare has one set of social accounts, e.g. one connection to each of our 13 available social networks.
For example, a user can have one Bluesky, Facebook Page, Google Business Profile, Instagram, LinkedIn, Pinterest, Reddit, Snapchat, Telegram, Threads, TikTok, Twitter, and YouTube connection for a total of 13 connections.
A Premium account is considered one user with one set of social accounts.
If you have multiple users, see the [Launch Plan](/docs/multiple-users/business-launch-overview) (entry tier, up to 10 user profiles) or [Business Plan](https://www.ayrshare.com/business-plan-for-multiple-users/) for larger scale.
# Premium Plan vs. Business Plan: Which to Choose? | Ayrshare
Source: https://www.ayrshare.com/docs/help-center/product/premium_plan_vs_business_plan_which_fits_your_social_media_needs
Compare Ayrshare's Premium and Business plans across features, user profiles, and API access to pick the one that fits your posting and integration needs.
Ayrshare offers different plans to cater to various social media management needs. The **Premium**, **Launch**, and **Business** plans each serve distinct user groups. Here's a breakdown of who these plans are best suited for:
## Ayrshare Premium Plan
-
Ideal for: Individuals or companies managing their own social media
presence.
-
Use case: Publishing posts and obtaining analytics for their own social
accounts.
-
Best for: Those who directly manage a single set of social media accounts.
## Ayrshare Launch Plan
-
Ideal for: Early-stage SaaS platforms, small agencies, or pilots that need
multi-user APIs but only manage a small number of client or end-user
accounts.
-
Use case: Same as the Business plan: letting your users securely connect
their social accounts so you can post, fetch analytics, and manage comments
and DMs on their behalf, capped at 10 User Profiles.
-
Best for: Teams launching multi-user social functionality who want the full
Business API at a lower starting price, with a 28-day free trial.
## Ayrshare Business Plan
-
Ideal for: Companies, agencies, or platforms that need to manage social
media on behalf of their users or clients at scale.
-
Use case: Allowing users to securely connect their social accounts, then
managing those accounts by: 1. Pushing posts 2. Obtaining analytics 3.
Managing comments 4. Handling direct messages (DMs)
-
Best for: Platforms, agencies, or businesses operating many external social
media accounts at scale, beyond the 10-profile cap of the Launch Plan.
## Quick Comparison
| | Premium | Launch | Business |
| --------------------------------------------- | ------- | -------- | ------------ |
| Manage your own social accounts | Yes | Yes | Yes |
| Manage your users' / clients' social accounts | No | Yes | Yes |
| User Profile cap | N/A | Up to 10 | 30+ (scales) |
| Max Pack add-on | Yes | Yes | Yes |
For current pricing, see the [Ayrshare pricing page](https://www.ayrshare.com/pricing/).
Learn more:
# What Features Does Ayrshare Offer? | Social Media API
Source: https://www.ayrshare.com/docs/help-center/product/what_features_does_ayrshare_offer
Discover Ayrshare's core features: multi-platform posting, scheduling, analytics, auto-hashtags, media management, and a social media API built for developers.
The key Ayrshare API features are:
Manage all your users' social accounts right from your product. Post, Auto
Schedule, and Analytics with the Business Plan or Launch Plan via
the API or the Ayrshare Dashboard.
Create a post with text, images, or videos and send it immediately or
schedule it for a future date or time.
Simply send the post ID to the delete endpoint to delete your post from all
of the social media networks.
Get history and status of the posts you sent via Ayrshare, with detailed
metadata for each post.
Get advanced analytics for your users and post links including likes,
retweets, and clicks.
Manage your user's direct messages, via the Messages API, to those who
contact them across their preferred channels, allowing them to provide a
seamless customer experience.
Upload your image or videos directly to Ayrshare and get a URL to post with.
No need for a separate image/video hosting service.
Submit a URL and get a short URL to save characters in your posts.
Retrieve, post, and manage comments on a post. Never miss an opportunity to
increase engagement.
Automatically add hashtags to your posts based on the most relevant key
words. Takes into account real-time hashtag popularity.
Retrieve, reply, or delete replies of reviews on Google Business Profile and
Facebook pages.
Save your team's time by connecting with one of the Ayrshare integrations,
such as Notion, Airtable, Make, Retool, and Bubble.
Create or rewrite social posts, transcribe videos, and more using AI.
Register webhooks to receive asynchronous updates on events including scheduled posts, messages, and social account linking.
# What Is Ayrshare? The Social Media API Explained
Source: https://www.ayrshare.com/docs/help-center/product/what_is_ayrshare_and_the_social_media_api
Ayrshare is a social media API that lets developers and businesses post, schedule, and analyze content across all major networks from one integration.
Take a look at this quick video on how Ayrshare integrates with your platform and can power your social media via an API.
# What Is the Basic Plan Post Limit? | Ayrshare
Source: https://www.ayrshare.com/docs/help-center/product/what_is_the_basic_plan_post_limit
Learn how the post limit works on Ayrshare's Basic plan, how posts are counted across platforms, and when to upgrade for higher social media posting volume.
The Basic Plan, which included 20 posts per month, is no longer available to new sign-ups. If you are already on the Basic Plan, your existing plan continues. Check your [dashboard](https://app.ayrshare.com) for your current post quota.
For new accounts, the entry tiers are the **Premium Plan** for single-user use and **Launch Plan** for multi-user use (capped at 10 user profiles). To try Ayrshare for free, start a 28-day free trial of the Launch Plan on the [pricing page](https://www.ayrshare.com/pricing/).
# What Kind of Support Does Ayrshare Offer? | Help Docs
Source: https://www.ayrshare.com/docs/help-center/product/what_kind_of_support_does_ayrshare_offer
See the support options Ayrshare offers, including documentation, help center, email, and developer resources to help you build and troubleshoot the API.
Ayrshare offers comprehensive support via the web chat interface and [email](mailto:support@ayrshare.com).
Most support tickets are quickly addressed within hours, general expectations for ticket responses from the support team are as follows:
| Plan | Support Response Times |
| :--------- | :--------------------- |
| Enterprise | 2 business days |
| Business | 5 business days |
| Premium | 10 business days |
For security, only [registered team members](/docs/multiple-users/manage-user-profiles#team-members-contacting-support) may contact support on behalf of a business.
If your business requires a higher level of support, please contact your account representative to learn more about the Enterprise plans.
# What Social Networks Does Ayrshare Support? | Docs
Source: https://www.ayrshare.com/docs/help-center/product/what_social_networks_are_supported
Ayrshare supports Bluesky, Facebook, Google Business Profile, Instagram, LinkedIn, Pinterest, Reddit, Telegram, TikTok, X (Twitter), and YouTube.
Ayrshare supports twelve social networks: Bluesky, Facebook, Google Business Profile, Instagram, LinkedIn, Pinterest, Reddit, Snapchat, Telegram, Threads, TikTok, X/Twitter, and YouTube.
# Why Use Ayrshare Over Other Social Scheduling Tools?
Source: https://www.ayrshare.com/docs/help-center/product/why_should_i_use_ayrshare_rather_than_the_other_social_scheduling_tools
Learn what sets Ayrshare apart from other social media scheduling tools: an API-first approach, multi-account scaling, and developer-friendly integration.
There are dozens of great products out there like Buffer, Hootsuite, etc. that help you manually manage and post to your social media accounts via a GUI.
However, only Ayrshare is focused on giving developers an API-first solution. The Ayrshare API gives you the power to programmatically post or schedule content, get analytics, or create comments directly from your platform or website.
# Automation DM Sent but Not Delivered | Ayrshare Docs
Source: https://www.ayrshare.com/docs/help-center/technical-support/automation_dm_sent_but_not_delivered
Why an Instagram automation can report a DM as sent while the recipient never receives it — the recipient's Message requests setting, private-reply mechanics, and what you can and cannot do about it.
If a [comment-triggered automation](/docs/apis/automations/overview) reports an activity `status: "sent"` but the person who commented says they never got the DM, this is almost always the recipient's Instagram privacy settings — **not** a bug in your automation or in Ayrshare.
**`sent` means Instagram accepted the message, not that it was delivered.** Instagram does not expose message delivery on any API surface. Ayrshare marks a `send_dm` action `sent` the instant Instagram accepts it; whether it actually reaches the recipient is decided by settings Ayrshare cannot read or change.
## The recipient's "Message requests" setting decides delivery
Every Instagram user controls who may send them a message request under **Settings and activity → Messages and story replies → Message requests**. The options are roughly "Everyone", "Your followers", and "No one".
When your automation sends a DM to someone who has restricted message requests, Meta accepts the request, returns a **success response with a message ID**, and then **silently drops the message**. There is no error, no failure webhook, and no delivery/read signal — the drop is invisible at every API layer. Meta knows the message is undeliverable (its own app UI shows *"This account can't receive your message because they don't allow new message requests from everyone"*), but it does not expose that on the API.
| Recipient's Message requests setting | What happens |
| ------------------------------------------------------------- | ---------------------------------------------------------------------- |
| Everyone | Delivered — arrives as a **message request** the recipient must accept |
| Your followers (and the recipient does not follow the sender) | Accepted by Meta, then silently dropped |
| No one | Accepted by Meta, then silently dropped |
## An existing conversation overrides the setting
If the sender and recipient **already have a message thread** (for example, the recipient has DMed the account before), that existing conversation overrides the Message requests setting and the automation DM is delivered into the existing thread rather than as a new request. This is why the same automation can reach some commenters and not others, and why a recipient who messages the account first will then reliably receive automation DMs.
## How to recognize this
- The activity row shows
status: "sent" with no errorDetails.
- The recipient reports no DM (and it is not sitting in their message-requests folder).
- It is intermittent across recipients — some receive the DM, others do not — with no pattern in your configuration.
This is a delivery outcome, not a failure state, so it will never appear as `failed`. A `failed` row means Instagram *rejected* the send and the reason is on `actionResults[].errorDetails` — that is a different situation (see [error codes](/docs/errors/errors-ayrshare)).
## What you can do
There is **no programmatic workaround** — no API, scope, or send shape can bypass a recipient's Message requests setting. What you can do:
- Set expectations up front: a comment-triggered DM only reaches people whose Instagram settings allow message requests, or who already have a conversation with your account.
- Encourage commenters to DM your account (or turn on message requests) if they want the follow-up — an inbound message opens the thread permanently.
- Consider a public reply to the comment as a fallback path for reaching everyone.
## How comment-triggered DMs are sent (private replies)
Comment-triggered automations deliver the DM through Instagram **private replies**, anchored to the comment itself. This is what lets the automation message a commenter you have never messaged before. The mechanics — and their limits — are worth knowing:
- Comment-anchored 7-day window. The reply must be sent within 7 days of the comment. After that the window closes and the send fails with
code: 491.
- One reply per comment, ever. Instagram allows only a single private reply per comment. A second attempt fails with
code: 491 — Instagram reports "already replied" through the same shared error it uses for a closed window, so check errorDetails for which it was.
- Arrives as a message request. Even a successfully delivered private reply lands in the recipient's message-requests folder and must be accepted — unless a conversation already exists.
- Delivery still depends on the recipient's settings. Private replies remove the "must have messaged first" requirement, but they do not override the recipient's Message requests setting, which is the limitation described above.
## Related
# Social Media Character Limits by Platform | Ayrshare Docs
Source: https://www.ayrshare.com/docs/help-center/technical-support/character_limits
Reference post character limits for each social network: Facebook, Instagram, X, LinkedIn, TikTok, and more, when publishing through the Ayrshare API.
# Social Media Character Limits Reference
This comprehensive guide provides character limits for all supported social media platforms when posting through Ayrshare. Understanding these limits helps ensure your content is properly formatted and doesn't get truncated or rejected.
## Platform-Specific Character Limits
### Bluesky Character Limits
| Property | Description |
| -------- | ---------------------- |
| post | 300 characters maximum |
See [Bluesky Publishing Options](/docs/apis/post/social-networks/bluesky) for more information.
### Facebook Character Limits
| Property | Description |
| -------- | -------------------------------------------------------- |
| post | 63,206 characters maximum |
| title | reels title - 255 characters maximum (truncated if over) |
See [Facebook Publishing Options](/docs/apis/post/social-networks/facebook) for more information.
### Google Business Profile Character Limits
| Property | Description |
| ----------- | ------------------------ |
| post | 1,500 characters maximum |
| Event Title | 58 characters maximum |
| Coupon Code | 58 characters maximum |
See [Google Business Profile Publishing Options](/docs/apis/post/social-networks/google) for more information.
### Instagram Character Limits
| Property | Description |
| -------- | ---------------------------------- |
| post | 2,200 characters maximum |
| altText | 1,000 characters maximum per image |
| comment | 2,196 characters maximum |
See [Instagram Publishing Options](/docs/apis/post/social-networks/instagram) for more information.
### LinkedIn Character Limits
| Property | Description |
| -------- | ------------------------ |
| post | 3,000 characters maximum |
| title | 400 characters maximum |
| comment | 1,250 characters maximum |
See [LinkedIn Publishing Options](/docs/apis/post/social-networks/linkedin) for more information.
### Pinterest Character Limits
| Property | Description |
| -------- | ------------------------ |
| post | 500 characters maximum |
| title | 100 characters maximum |
| link | 2,048 characters maximum |
| altText | 500 characters maximum |
See [Pinterest Publishing Options](/docs/apis/post/social-networks/pinterest) for more information.
### Reddit Character Limits
| Property | Description |
| -------- | ------------------------- |
| post | 5,000 characters maximum |
| title | 300 characters maximum |
| comment | 10,000 characters maximum |
See [Reddit Publishing Options](/docs/apis/post/social-networks/reddit) for more information.
### Snapchat Character Limits
| Property | Description |
| -------- | ------------------------------------------------------ |
| post | 500 characters maximum |
| post | spotlight - 160 characters maximum (truncated if over) |
See [Snapchat Publishing Options](/docs/apis/post/social-networks/snapchat) for more information.
### Telegram Character Limits
| Property | Description |
| -------- | -------------------------------------------- |
| post | 1,024 characters maximum (truncated if over) |
See [Telegram Publishing Options](/docs/apis/post/social-networks/telegram) for more information.
### Threads Character Limits
| Property | Description |
| -------- | ---------------------- |
| post | 500 characters maximum |
See [Threads Publishing Options](/docs/apis/post/social-networks/threads) for more information.
### TikTok Character Limits
| Property | Description |
| -------- | ------------------------ |
| post | 2,200 characters maximum |
See [TikTok Publishing Options](/docs/apis/post/social-networks/tiktok) for more information.
### X/Twitter Character Limits
| Property | Description |
| ------------ | ------------------------------------------------------------------------------ |
| post | 280 characters maximum |
| post | 25,000 characters maximum (Premium X accounts such as Premium or Premium Plus) |
| altText | 1,000 characters maximum per image |
| subTitleName | 150 characters maximum |
See [X/Twitter Publishing Options](/docs/apis/post/social-networks/x-twitter) for more information.
### YouTube Character Limits
| Property | Description |
| ----------------------------- | ---------------------------------------- |
| post | 5,000 characters maximum |
| youTubeOptions > title | 100 characters maximum |
| youTubeOptions > tags | 500 characters total, 2+ characters each |
| youTubeOptions > subTitleName | 150 characters maximum |
See [YouTube Publishing Options](/docs/apis/post/social-networks/youtube) for more information.
## API Considerations
When using the Ayrshare API:
* Posts exceeding character limits will be rejected with an error
* Some platforms may truncate content rather than reject it (Telegram, Snapchat Spotlight)
* Consider using `shortenLinks: true` for platforms with tight limits
## Updates and Changes
Social media platforms do update their character limits. This guide is current as of the last update, but we recommend:
* Using our API error responses to identify limit issues
* Checking the Ayrshare [Latest Updates page](/docs/whatsnew/latest) for platform updates
# Choosing Between Different Meta Accounts | Ayrshare Docs
Source: https://www.ayrshare.com/docs/help-center/technical-support/choosing_different_meta_accounts
Learn how to select the correct Facebook or Instagram (Meta) account when linking to Ayrshare, and how to fix issues when multiple Meta accounts appear.
## How to Link a Different Meta Account to Ayrshare
If you have previously linked a Meta account, such as Facebook or Instagram, to Ayrshare, you may notice that Facebook will not ask you to login again.
If you want to link a different Instagram or Facebook account to Ayrshare, you can do so by logging out of Facebook/Instagram in the browser - just open facebook.com/instagram.com in a different tab and logout - and then relinking with Ayrshare again.
Meta will ask you to login again and you can then choose the account you want to link to Ayrshare.
This also works for choosing a different X (Twitter) or TikTok account to link to Ayrshare - just
log out of the social network in a different browser tab and then relink with Ayrshare.
# Commenting on Other Users' Social Posts | Ayrshare Docs
Source: https://www.ayrshare.com/docs/help-center/technical-support/commenting_on_another_user_post
Learn how to post comments on other users' social media posts with the Ayrshare API, including the supported platforms and the parameters you'll need.
Social networks have restrictions on commenting functionality to prevent spam and abuse. Here's what you need to know:
1. You can only comment on posts that belong to your own social media accounts/pages. These can be posts you or others published on your account/page.
2. You cannot comment on posts from on users' accounts or pages. Again, the social networks have this restriction to prevent spam and abuse.
3. This is a limitation enforced by the social networks themselves (especially Meta platforms like Facebook and Instagram) through their official APIs.
4. Even if you try to cross-post a comment, e.g. on Instagram, it will only appear under your own posts, not other users' posts.
These restrictions are security measures implemented by social networks to prevent automated spam commenting through APIs.
Please see the [Comments API documentation](/docs/apis/comments/overview) for more information on how to comment on a post.
# How to Deal With Duplicate Posts | Ayrshare Documentation
Source: https://www.ayrshare.com/docs/help-center/technical-support/dealing_with_duplicate_posts
Find out why duplicate social media posts happen when using an API and how to prevent and resolve them with Ayrshare's duplicate-post safeguards.
If you see duplicate posts and there are two post IDs, the likely cause is you've accidentally made two of the same API post requests.
Our system checks for duplicate posts, so the second post should be blocked.
However, if the posts are made at the exact same time, both may be published.
If you need to find the duplicate post, you can use the [details in the publish post response](/docs/help-center/technical-support/dealing_with_duplicate_posts#find-the-duplicate-post).
There are a few things you can do to verify that two post calls were made.
## Check Your System Logs
The best place to start is your own system logs and code.
- Look for the API post request and response in the logs to see if there are two requests.
-
Verify that the post request doesn't have unintended automatics retries. For example, if the
request took over 30 seconds to respond, the system automatically retried the request -
sometimes larger images or videos take longer for the social platforms to process.
## Use the Ayrshare Dashboard
Go to the Ayrshare Dashboard and switch to the relevant User Profile. Next, search for the post IDs in the search box. Only the last 100 posts are loaded, so you may need to load more to find the posts IDs.
Open the *API Request & Response* accordion and in the Request section is the request create time.
Compare the times of the two posts to see if they were sent at different moments.
The different Post IDs is also an indication two different API requests were made.
These steps should help you in determining the cause of the duplicate posts. Please let us know if you need any help on this.
## Find the Duplicate Post
The publish post response contains the details of the found duplicate post.
For example:
```json Duplicate Post Details theme={"system"}
{
"errors": [
{
"action": "post",
"status": "error",
"code": 137,
"message": "Duplicate or similar content posted within the same two day period. The social networks prohibit duplicate content and ban accounts that do not comply. https://www.ayrshare.com/docs/help-center/technical-support/dealing_with_duplicate_posts#dealing-with-duplicate-posts",
"details": "Duplicate found in user profile: John Profile, post id: pRo7vkM1vYVMJu8sJa, and refId: ace4bcd07336582e2fd9",
"platform": "facebook"
}
]
}
```
You can use the `post id` and `refId` to find the duplicate post in the Ayrshare Dashboard - be sure to switch to the User Profile first - or using the [history API endpoint](/docs/apis/history/get-history-id).
## More Information on Duplicate Posts
See [Duplicate and Similar Posts](/docs/testing/post-verification#duplicate-and-similar-posts) for more information.
# Fix Errors Linking Google Business Profile | Ayrshare
Source: https://www.ayrshare.com/docs/help-center/technical-support/errors_linking_google_business_profile
Troubleshoot common errors when connecting your Google Business Profile to Ayrshare, including permission, location, and authorization issues, with clear fixes.
You must [claim your Google Business Profile](https://support.google.com/business/answer/2911778) page before linking it with Ayrshare.
Be sure to choose the Google account that is an admin of your Google Business Profile page during link authorization.
See our article to learn more about [setting up a Google Business Profile](https://www.ayrshare.com/blog/google-my-business-what-is-gmb-why-you-need-it-and-how-to-use-it/).
# Troubleshooting API Request Errors | Ayrshare Documentation
Source: https://www.ayrshare.com/docs/help-center/technical-support/errors_making_requests_with_the_api
Diagnose and fix common errors when making requests to the Ayrshare API, including authentication, parameters, and response codes, with practical steps.
A few things to check to verify you have all the required information to successfully post, or call any API endpoint.
1. Verify you are sending the API\*KEY, found in the Ayrshare GUI dashboard under API Dashboard, in the header as an [Authorization Bearer](/docs/apis/overview#authorization) token. Also the proper [Content Type](/docs/apis/overview#content-type) must be set.
2. For POST calls, validate properly formatted JSON is being sent in the body. Online tools can assist such as [https://jsonlint.com/](https://jsonlint.com/)
3. If sending media via an external URL, make sure the proper [MIME type](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types) is set for the image or video.
4. Review the required endpoint's required parameters to be sure they are included and have the proper format.
# How to Fix the "Facebook Login Disabled" Error | Ayrshare
Source: https://www.ayrshare.com/docs/help-center/technical-support/facebook_login_disabled
Learn what causes the "Facebook Login Disabled" error in Ayrshare and how to re-enable login and reconnect your Facebook account so posting works again.
If you try to link your Facebook or Instagram account on an Android device and receive:
"For your account security, logging in to Facebook from an embedded browser is disabled. To continue, download and log in to the Facebook app on your device and try again."
You will need to allow external links in your Facebook app.
Fix the issue by opening your Android Facebook app, going to settings, tap on “Media”, and then enable “Links open externally”. You can then try linking your Facebook or Instagram account once more.
Unfortunately, there is currently no work-around for iOS devices.
# Facebook or Instagram Account Restricted? | Ayrshare
Source: https://www.ayrshare.com/docs/help-center/technical-support/facebook_or_instagram_account_restricted
Find out why your Facebook or Instagram account may be restricted, how it affects posting through Ayrshare, and the steps to resolve the restriction.
## Why Does Facebook Suspend Accounts or report the Content Violated Community Standards
Facebook suspends accounts or marks posts as violating their community standards when their security AI is triggered. The reasons are often unknown, but can occur when the user changes their password at Facebook, posts a message manually to their feed or Facebook Messenger, or the security AI sees suspicious activity on the Facebook account. Sometimes posts are flagged by Facebook even when the post is seemingly innocuous, but the security AI sees the post as spam or other users have flagged similar post.
These issues typically occur with posts that did not go through Ayrshare.
Please see [Facebook's Post Blocking Guide](https://www.facebook.com/help/116393198446749).
Steps that we recommend:
1. Review your recent posts to ensure they aren't spammy, political, repetitive, or posted too frequently.
2. Double-check any URLs you've included, as Facebook often flags posts with suspicious links. For example, if you are using your own link shortener that might cause issues.
3. Don't include HTML in the post.
4. Check your server logs for any error messages returned from /post.
5. Have the user log into Facebook and check if Facebook asks them to take any actions or provide more information. If everything looks ok, the user can try relinking Facebook with Ayrshare and posting again.
6. If the user was suspended by Ayrshare, [re-activate the user profile](/docs/multiple-users/manage-user-profiles#reactivate-a-suspended-user-profile) in the Ayrshare Dashboard.
## Facebook Message: "We limit how often you can post, comment or do other things in a given amount of time in order to help protect the community from spam. You can try again later."
If you encounter at facebook.com the message "*We limit how often you can post, comment or do other things in a given amount of time in order to help protect the community from spam. You can try again later*" this might mean you posted or liked too frequently, invited too many people to a Page, messaged too frequently on Facebook Messenger, or Facebook made a mistake.
[Facebook flagged your account](https://www.facebook.com/help/116393198446749?helpref=faq_content) a potential spammer or a bot. While there is no guaranteed remedy, we recommend decreasing your post, commenting, liking, and messaging frequency for *several days*.
See our [recommended social posting limits.](/docs/testing/post-verification#recommended-posting-limits)
## Instagram Account Restricted
Your Instagram account may be marked as inactive, checkpointed, or restricted by Meta. This can occur for various reasons such as a security issue occurred or Instagram needs you to take an action in the app. Please sign in to the Instagram app and complete any actions the app requires to re-enable the account.
If there is no action to take in the Instagram app, the issue may be resolved if you set the "minimum age restriction" to off or by country in the Instagram app settings. Please see here for detailed instructions on how to [change the Instagram minimum age restrictions](https://help.instagram.com/853772598370828).
***
Security violations from the social networks should be taken seriously and resolved as soon as possible.
Repeated violations may result in a permanent suspension of the social media account or Ayrshare account.
Social networks and their partners enforce these measures to maintain a safe experience for all users and a healthy social media ecosystem.
# Fix Facebook/Instagram "Unsupported Request" Error | Ayrshare
Source: https://www.ayrshare.com/docs/help-center/technical-support/facebook_or_instagram_error_unsupported_request
Resolve the Facebook or Instagram "Unsupported Request" error in Ayrshare with steps to fix the permissions, tokens, and account settings behind the message.
If you receive an Instagram or Facebook error: "Unsupported request - method type: post" this could be due to a bug at Facebook. A possible fix is enabling the Facebook **Off-Facebook Activity** feature and then reconnect Ayrshare with Facebook.
The Off-Facebook permission allows other websites to publish on your or your users' behalf.
Please see the following steps to correct.
1. On a desktop login to [facebook.com.](http://facebook.com/) Mobile not supported.
2. Review your "Future Off-Facebook Activity" by going [here](https://www.facebook.com/off_facebook_activity) and selecting "**Manage your off-facebook activity**". If you're already connected you'll only see "**Disconnect future activity**".
3. Verify off-facebook is toggled **on.** If off, please turn on. Otherwise, if on please toggle off and then back on.
4. After toggling off-facebook to **on**, reset your Facebook connection and relink with Ayrshare: [Trouble Posting to Facebook](/docs/help-center/technical-support/facebook_posting_issues).
5. When relinking, be sure **all** permissions are granted.
# Fix Facebook or Instagram Linking Issues | Ayrshare
Source: https://www.ayrshare.com/docs/help-center/technical-support/facebook_or_instagram_linking_issues
Troubleshoot problems linking your Facebook or Instagram account to Ayrshare, from permission errors to missing pages, with step-by-step solutions.
If you're having issues linking your Facebook or Instagram accounts, a few potential issues might be the cause.
## Top Linking Issues
### 400: Session Invalid
You may receive this error when attempting to link your Instagram account using
direct login. This occurs because your Instagram account has already been
authorized with the Ayrshare app. Please follow these instructions:
- Navigate to your Instagram settings in your mobile app or from [Settings](https://www.instagram.com/accounts/edit/) in your browser.
- Click **Website permissions** under **Your app and media**.
- Click on **Apps and websites**.
-
Click the **Remove** button next to the Ayrshare app.
- Relink your Instagram account in the Ayrshare dashboard or from the social linking page via [JWT URL](/docs/apis/profiles/generate-jwt).
If all else fails and you are on a business account, you can [turn off Instagram Login](/docs/multiple-users/manage-user-profiles#instagram-login) and use Facebook Page authentication instead.
### Recently Created Accounts
You might get this error on recently created Facebook or Instagram accounts:
*Ayrshare could not be linked to Facebook. Maybe you're out of network connection or we couldn't establish a connection to our server. Check your connection and try again later.*
Facebook and Instagram try to prevent spam and new accounts are considered higher risk. We suggest only linking Facebook and Instagram accounts that are at least **7 days old**.
See [New Account Error](/docs/help-center/technical-support/facebook_or_instagram_linking_issues#facebook-or-instagram-account-is-new) for more information.
### No Facebook Pages / Zero Pages
- As mentioned above, Facebook Pages must be at least 7 days old.
-
Only Facebook Business Pages will show. Facebook does not allow Personal Pages to be linked.
- Verify you are the admin of the Pages you want to connect.
-
Please see here for additional information on [missing Facebook
Pages](/docs/help-center/technical-support/facebook_or_instagram_linking_issues#missing-facebook-pages).
### Grant All Permissions
Grant all permissions Ayrshare requests during authorization. Removing permissions may cause unintended issues at the social networks or Ayrshare's APIs. Also allow pop-ups in your browser.
### Facebook Page Admin Rights
-
Your personal Facebook profile must have an admin role for that Page you wish to connect,
including when [connecting an Instagram account](/docs/dashboard/connect-social-accounts/instagram).
-
Admin rights through inheritance from a parent Page cannot be connected. You may verify by going
to facebook.com => settings -> Page Roles and seeing the section labeled "Admin (inherited from
parent Page)".
-
If you have the correct permission, but do not see the Page listed when connecting either
Facebook or Instagram, it means the permissions have not been fully granted.
-
[Edit Facebook
Permissions](/docs/help-center/technical-support/facebook_or_instagram_linking_issues#missing-facebook-pages)
- [Reauthorize Facebook Access](/docs/help-center/technical-support/facebook_posting_issues)
### Switched Instagram Profiles
-
Switching from Business or Creator Profiles to Personal unlinks the Facebook Page connection.
The Facebook-Instagram connection must be
[re-established](/docs/dashboard/connect-social-accounts/instagram).
-
Verify that your Instagram account is a [Business or Creator
profile](/docs/help-center/technical-support/facebook_or_instagram_linking_issues#check-if-your-account-is-instagram-business-or-creator).
-
If your Instagram account is a Creator or Business account, but when linking Ayrshare you
receive an error saying your account isn't a Creator or Business, try switching your Instagram
back to **Personal** and then back to **Creator** or **Business**. This often resets the account
type and allows you to link Ayrshare.
### Linking Instagram Must Be a Business or Creator Profile
Linking Instagram requires selecting a Facebook Page that is [linked](/docs/dashboard/connect-social-accounts/instagram) to an Instagram Account. The Instagram account must be a Business or Creator Profile.
-
[Verify](/docs/apis/post/social-networks/instagram#instagram-business-or-creator-account) that the
Instagram Account is a [Business or Creator
Profile](/docs/help-center/technical-support/facebook_or_instagram_linking_issues#check-if-your-account-is-instagram-business-or-creator).
Not being a Business or Creator Profile is usually the issue. Instagram does not allow Personal
Profiles to be linked.
-
[Verify](/docs/help-center/technical-support/instagram_posting_issues#1-verify-your-instagram-business-account-is-connected-to-a-facebook-page)
the Facebook Page is linked to the correct Instagram Account. This is the second most common
issue.
-
If all else fails, start over by [removing the Facebook
permissions](/docs/help-center/technical-support/facebook_posting_issues#still-having-issue-with-facebook-permissions).
If you're still having issues you can [reset all Facebook
permissions](/docs/help-center/technical-support/facebook_posting_issues#still-having-issue-with-facebook-permissions).
## Request to Reverify Facebook Login
Facebook is asking you to verify your account login again.
Open a new tab/window in your browser and go to facebook.com. Log out of Facebook and login once more. If you're asked to verify your account or a CAPTCHA question, please complete it.
Head back to the Ayrshare dashboard Social Accounts page, refresh your page, and try linking Facebook once more.
Please be sure you have created a Facebook Page associated with your Facebook account. This is required to link to Facebook and you will be asked to select the Page during authorization.
## Facebook or Instagram Account is New
If you receive the error: "Could not link Ayrshare to Facebook. You may not be connected to the network or we could not establish a connection with our server. Check your connection and try again later."
The cause might be you're using a newly created Facebook or Instagram account. Facebook states that "*There is a 60-minute delay before new accounts can log in to any applications*".
Please wait 60 minutes and try again. However, we've seen new Facebook accounts take **5-7 days to be allowed** to connect and publish posts.
## Your Instagram Account Must Be a Business/Creator Account and Linked to a Facebook Page
Please see here for details:
Switching from Business or Creator Profiles to Personal unlinks the Facebook Page connection. The Facebook-Instagram connection must be [re-established](/docs/dashboard/connect-social-accounts/instagram).
## Check If Your Account is Instagram Business or Creator
You can verify if your Instagram account is a Business or Creator Account by going to your Instagram mobile app and clicking the three bars in the upper right corner. Select "Settings" and then "Account".
At the bottom of the screen there may be a link "Switch account type". If not, please see the link Instagram Linking above for instructions. Click "Switch account type" and you should see the following if it is a Business Account:
If you see the above image, your account is Business or Creator and no changes are needed.
If you have the option to switch to a Business or Creator Account, please choose it.
## Missing Facebook Pages
If you don't see all your Facebook pages when linking:
-
Verify you are the owner, admin, or manager of the missing Pages. See [Facebook Page Admin
Rights](/docs/help-center/technical-support/facebook_or_instagram_linking_issues#facebook-page-admin-rights)
for details. Also ensure the Page is at least 7 days old.
-
Only Facebook Business Pages can be linked. Facebook does not allow Personal Pages to be linked.
-
When authorizing check to make sure the Facebook page permission is granted during linking.
-
If you do not see the "Edit Settings" or a pop-up during linking does not appear, please see how
to [reauthorize Facebook](/docs/help-center/technical-support/facebook_posting_issues).
-
Still having issues? Try [reauthorizing the
link](/docs/help-center/technical-support/facebook_posting_issues#still-having-issue-with-facebook-permissions).
Click **Edit Settings**
Check all checkboxes next to the pages and click **Next** and then **Done.**
## Facebook or Instagram Could Not Load
If you encounter an error that there was an issue loading the Facebook packages while trying to link Facebook or Instagram, it means that your browser blocked the loading of an essential Facebook SDK.
**Please disable your VPN, tracking prevention, or ad blocker, reload the Ayrshare Dashboard, and try linking once more.**
Also check your browser security settings for tracking prevention/protection:
### Microsoft Edge
In Microsoft Edge, open *Settings -> Privacy, Search, and Services*. Change the *Tracking Prevention* to *Balanced*. Refresh the Ayrshare dashboard and try linking again.
### Firefox
In Firefox, open *Settings -> Privacy & Security*. Change the *Enhanced* *Tracking Protection* to *Standard*. Refresh the Ayrshare dashboard and try linking again.
## Reset All Facebook Permissions
If you are having issues with Facebook permissions, you can reset all Facebook Ayrshare permissions.
# Facebook or Instagram Account Unlinked? Fix It | Ayrshare
Source: https://www.ayrshare.com/docs/help-center/technical-support/facebook_or_instagram_unlinked
Learn why your Facebook or Instagram account became unlinked from Ayrshare and how to securely reconnect it so your scheduled posts keep publishing.
## Why Was My Facebook or Instagram Account Unlinked
We know it can be frustrating when your users are unlinked since they now need to take action, i.e. relink their social account. It causes trouble for both you and your users. At Ayrshare we try to minimize it as much as possible and provide both data and insights on what we've learned by working with the social networks for many years.
Unfortunately, the social networks have their own internal policies and rules on when to de-authorize an account and require a relink.
Meta (Facebook and Instagram) has the most aggressive security rules. If they flag a security event or suspicious activity on a user's account, Meta may require re-authorization. Other social networks have similar, but less arduous, rules.
These security events usually occur outside of Ayrshare. For example, if the user changes on facebook.com their password or username in a region they are not generally located, Facebook may flag this account and require 3rd party links to be re-established.
Possible causes:
- Logging into Facebook in a new region or browser.
- Logging into the same Facebook account from multiple browsers.
- Changing your Facebook password or username.
-
Connecting numerous Facebook Pages under a single Facebook account, i.e. one Facebook login, and
posting duplicate, similar, or frequent content across all the pages.
The next step is to have your user re-authorize Facebook or Instagram with Ayrshare.
Facebook security events occur at the account level rather than at individual page levels. When
security event happen on a Facebook account (like password changes in a different reagion), all
Facebook pages associated with that account — including pages linked to Instagram accounts — must be
relinked with Ayrshare. For more information on how to handle this, please see the [Manage User
Profiles](/docs/multiple-users/manage-user-profiles) section in our documentation.
Check the [status of your violations](https://www.facebook.com/help/1985220725104252) at Facebook.
# Facebook Page Authorization Guide | Ayrshare Documentation
Source: https://www.ayrshare.com/docs/help-center/technical-support/facebook_page_authorization
Learn how to authorize the right Facebook Page permissions for Ayrshare, why authorization matters, and how to fix missing-permission errors when posting.
If you're posting to Facebook or Instagram and receive the following error
message:
"Please visit facebook.com from a desktop browser and complete the required
security check or confirmation steps. Once confirmed, try your call again. If
problems persist, try unlinking and then relinking your account with Ayrshare."
This can occur due to Meta's efforts to increase accountability for high
potential reach Facebook Pages by requiring that these Pages undergo a security
check. If not authorized, the Facebook Page will not be able to publish posts.
Both Facebook Pages and Instagram accounts connected to Facebook Pages will be
affected.
### How to Get Authorized
Log into your Facebook account from a desktop browser. Complete the required
security check or confirmation steps. These steps may include:
-
Turn on [two-factor authentication](https://www.facebook.com/help/148233965247823) for your Facebook account.
-
Confirm your location by turning on [Location Services](https://www.facebook.com/help/275925085769221)
on your mobile device. Update your current city listed on your Facebook Page
and then open Facebook from your current location may aid Facebook in
determining which country you're based in. It may take some time for
Facebook to confirm your location.
-
If your Facebook Page has a System User, please verify all Business Manager
accounts in order to let your System User publish on your page. See
[How to Verify Your Business on Meta](https://www.facebook.com/business/help/2058515294227817)
for more information.
When authorized, your Facebook Page name will display a blue badge with white
checkmark next to the page name.
# Facebook Page Country Restrictions Explained | Ayrshare
Source: https://www.ayrshare.com/docs/help-center/technical-support/facebook_page_country_restrictions
Understand how Facebook Page country restrictions can affect posting through Ayrshare and which settings to check so your content reaches the right audience.
If you want to permanently restrict your content from being visible in certain
countries or only allow it to appear in specific countries, you can set country
restrictions directly on your Facebook Page. This eliminates the need to
configure targeting settings each time you publish a post.
## How to Set Country Restrictions
-
From Facebook, click your profile icon in the top right corner and select
your Facebook Page to switch to it
-
Go to your page's [Country Restrictions](https://www.facebook.com/settings/?tab=followers_and_public_content\&setting_id=country_restrictions) settings.
-
Specify which countries should either see or be restricted from seeing your content
**Important**: These page-level country restrictions will override any country
targeting you set using `faceBookOptions.targeting.countries` in your API calls.
If you've restricted a country at the Page level, Facebook users won't see your
content even if you include their country in your post targeting.
# How to Post on Facebook in Multiple Languages | Ayrshare
Source: https://www.ayrshare.com/docs/help-center/technical-support/facebook_post_in_multiple_languages
Learn how to publish Facebook posts in multiple languages using Ayrshare, including how multi-language content is handled and best practices for reach.
Multiple language posting is not supported due to Facebook API limitations.
However, Facebook attempts to translate posts into the local language of the viewer.
A user can turn on multi-language translations and even select the languages they don't want translated.
### Turn On or Off Automatic Facebook Translations
You can turn off automatic Facebook translations of posts by going to facebook.com:
1. Click ▼ in the top right of Facebook.
2. Select **Settings & Privacy**, then click **Settings**.
3. Click **Language and Region**.
4. Click *Edit* of **Languages you'd like to have posts translated into** or **Languages you don't want automatically translated**.
5. Search for the languages you don't want to be automatically translated, then click to select the language.
6. Click **Save Changes**
Please see here [Facebook Multiple Languages](https://www.facebook.com/help/894653377249514) for more info.
### API Translations
If you do want to create posting in multiple languages, you can use the [Translate Post](/docs/apis/generate/translate-post) API endpoint.
You may either then sent to posts to the same Facebook page, which might be confusing for your audience, or create a new Facebook page for each language.
# Troubleshooting Facebook Posting Issues | Ayrshare Docs
Source: https://www.ayrshare.com/docs/help-center/technical-support/facebook_posting_issues
Fix the most common Facebook posting problems in Ayrshare, including failed posts, permissions, and media errors, with clear step-by-step troubleshooting.
If you receive an error when posting that indicates Facebook permission issues or you don't see a Facebook Page listed, it could be that some access permissions were not granted
## Facebook Business Admin Settings
Access the Business Integration page by logging into Facebook and go to "Setting" -> "Settings & Privacy" -> "Security & Login" -> "Business Integration".
Click here for a direct link to the Facebook Setting & Privacy page.
## Edit Facebook Permissions
On the [Business Integration page](https://www.facebook.com/help/405094243235242/), click the Ayrshare App and choose "View and Edit".
A pop-up will show. Scroll down to "Create and Manage Content on Your Page" and ensure that it is enabled. If you see a checkbox with "Pages" then check it to select all pages.
Click "**Save**".
Head back to the [Ayrshare Dashboard](https://app.ayrshare.com/social-accounts) and **unlink** and **relink** Facebook. You should now have the correct permissions.
## Still Having Issue with Facebook Permissions?
*If the issue still persists*, please go back into the [Facebook admin settings](/docs/help-center/technical-support/facebook_posting_issues#facebook-business-admin-settings) under Business Integration and "Remove" the Ayrshare app.
Go back into the [Ayrshare Dashboard](https://app.ayrshare.com/social-accounts) **unlink** and **relink** Facebook.
# Why Facebook Shows "Published by Ayrshare" | Help Docs
Source: https://www.ayrshare.com/docs/help-center/technical-support/facebook_shows_published_by_ayrshare
Learn why Facebook displays a "Published by Ayrshare" label on your posts, what it means for your page, and whether the attribution can be changed.
The "Published by..." is not displayed to your Facebook Page visitors, only to administrators ("admin") of the Page.
In the Facebook admin view of a Page the source of the post is shown, for example "Published by Ayrshare". Facebook automatically adds this meta data in the admin view.
Please see here on how to [view a Page as a visitor](https://www.facebook.com/help/1641659076113582) or view the page in a Private/Incognito tab in your browser.
# How to Get All Your Posts via the API | Ayrshare Docs
Source: https://www.ayrshare.com/docs/help-center/technical-support/get_all_posts
Learn how to retrieve all your published and scheduled social media posts with the Ayrshare API, including history, status, and analytics for each post.
This guide explains how to retrieve all posts associated with your account
through different approaches, whether they originated from Ayrshare or other
sources.
## Getting All Posts for All User Profiles (Ayrshare origin)
1. Get all user profiles associated with the primary profile:
* Use your [Authorization Bearer](/docs/apis/overview#authorization) token in the header
* Call the [Get User Profiles](/docs/apis/profiles/get-profiles) endpoint
2. Get profile keys:
* Extract the `refId` from each user profile
* Use your internal store to create a list of associated user profile keys
3. Retrieve posts:
* Use the [Posts History](/docs/apis/history/get-history) endpoint
* Get all posts associated with each user profile key
## Getting Posts for a Particular Social Network for All Users (Ayrshare and non-Ayrshare origin)
1. Get all user profiles associated with the primary profile:
* Use your [Authorization Bearer](/docs/apis/overview#authorization) token in the header
* Call the [Get User Profiles](/docs/apis/profiles/get-profiles) endpoint
2. Get profile keys:
* Extract the `refId` from each user profile
* Use your internal store to create a list of associated user profile keys
3. Retrieve posts specific to a social network
* Use the [Posts History for a Platform](/docs/apis/history/history-platform)
endpoint
* Place a platform in the `platform` path parameter. Values: `facebook`,
`instagram`, `linkedin`, `pinterest`, `snapchat`, `threads`, `tiktok`, `twitter`, `youtube`
* Get all platform posts associated with each user profile key
# How to Get an Unsplash Image URL | Ayrshare Docs
Source: https://www.ayrshare.com/docs/help-center/technical-support/get_an_unsplash_image_url
Learn how to find and use an Unsplash image URL in your Ayrshare posts to add free, high-quality images to your social media content via the API.
If copying an Unsplash URL to post in `media_urls`, please be sure to copy the image address.
Click on the Unsplash image you want to copy, right click the image, and select "Copy Image Address".
# How Do I Contact the Social Networks? | Ayrshare
Source: https://www.ayrshare.com/docs/help-center/technical-support/how_do_i_contact_the_social_networks
Find out when and how to contact social networks directly for account or platform issues that fall outside Ayrshare, and what the networks can help with.
We will try to help with any social network questions or issues you have, but sometimes the only solution is to directly contact the social networks. For example, if you have trouble logging into Facebook, only Meta (Facebook) would be able to assist.
Here is the social networks' contact information:
- [Bluesky](https://support.bluesky.com/hc/en-us/articles/115005136107-How-can-I-contact-Blue-Sky)
- [Facebook](https://www.facebook.com/help/iphone-app/186570224871049)
- [Instagram](https://help.instagram.com/381579045265733)
- [LinkedIn](https://www.linkedin.com/help/linkedin/answer/a518597)
- [Pinterest](https://help.pinterest.com/)
- [Reddit](https://support.reddithelp.com/hc/en-us/p/redditor_help_center)
- [Telegram](https://telegram.org/support)
- [Threads](https://help.instagram.com/179980294969821)
- [TikTok](https://support.tiktok.com/en/using-tiktok/report-a-problem)
- [X/Twitter](https://help.twitter.com/en/forms)
- [YouTube](https://support.google.com/youtube/answer/4347644)
# How to Retrieve refId for User Profile | Ayrshare Docs
Source: https://www.ayrshare.com/docs/help-center/technical-support/how_to_retrieve_refId
Learn how to find and retrieve the refId for a user profile in Ayrshare, what it is used for, and how to manage multiple connected accounts with it.
This page details how to retrieve the `refId` for a user profile.
## Background
During [user profile creation](/docs/apis/profiles/create-profile), you will receive
four fields in the response:
```json theme={"system"}
{
"status": "success",
"title": "Digg It",
"refId": "140b8709bd6ade099b242d895e268fb886130c53",
"profileKey": "7TVRLEZ-24A43C0-NJW0Z82-F11984N"
}
```
It is important to securely store both the `refId` and `profileKey` in your
system. The `profileKey` is used to make API requests for a specific user
profile while the `refId` is how Ayrshare refers to that user profile during API
calls.
## RefId Retrieval
There are a couple ways to retrieve the `refId` for your user profiles.
1. Use the [Get User Profiles](/docs/apis/profiles/get-profiles) endpoint to get all
user profiles associated with the primary profile. Filter through each returned
profile to find the `refId` associated with the title provided during user
profile creation. (Note: The `profileKey` for each user profile is not returned
from this endpoint, so you can't associate the `refId` against an existing
`profileKey`).
2. Navigate to the User Profiles page in the Ayrshare dashboard. Scroll through
or search for the relevant user profile. You'll be able to view the `refId` for
the user profile here.
# Instagram Analytics Demographics Warning | Ayrshare Docs
Source: https://www.ayrshare.com/docs/help-center/technical-support/instagram_analytics_demographics_warning
Understand the Instagram analytics demographics warning in Ayrshare, why it appears when follower data is limited, and what it means for your reports.
When pulling [Analytics on a Social Network](/docs/apis/analytics/social) on
Instagram, you may receive warning message:
"Demographic data not available. You will be able to get more information about
your audience when this metric has more than 100 people in each breakdown."
(Note: the warning message may be in a different language)
This warning occurs because there are fewer than 100 people in each
demographic category. For example, let's look at the following age groups:
* **13-17**: 25
* **18-24**: 212
* **25-34**: 347
* **35-44**: 40
* **45-54**: 712
* **55-64**: 2
* **65+**: 73
Age groups 13-17, 35-44, and 55-64 have fewer than 100 people each. Therefore,
this age group demographic breakdown is not available from Instagram.
Additionally, there are some other reasons why demographic data may not be
available:
* Different locations may have more comprehensive data collection processes than
others. Also, data privacy regulations in different locations can influence
how Instagram collects and then shares demographic data.
* Instagram's algorithms and feature rollouts may not be uniform across
different locations. This includes insights data.
# Troubleshooting Instagram Posting Issues | Ayrshare Docs
Source: https://www.ayrshare.com/docs/help-center/technical-support/instagram_posting_issues
Fix common Instagram posting problems in Ayrshare, including failed publishes, media format errors, and account permissions, with step-by-step solutions.
If you receive an error when posting about Instagram permission issues or that your account isn't linked, even though you linked your Facebook account, it could be some access permissions were not granted.
For example, if you receive the errors:
-
*Unsupported post request. Object with ID \[id number] does not exist,
cannot be loaded due to missing permissions, or does not support this
operation. Please read the Graph API documentation*
or
- *There is an issue with your Instagram account type or permissions.*
Take the following steps:
### 1. Verify Your Instagram Business Account is Still Connected to a Facebook Page
If you used the Facebook Page connections, make sure your Instagram is a Business account and it is connected to a Facebook Page.
1. Login to Facebook and navigate to your Facebook Page. Click 'Settings' from the left-hand menu on your screen.
2. Select "Instagram" and verify your Instagram account is linked or click "Connect Account".
3. Unlink and re-link your Instagram account in the Ayrshare Dashboard under "Social Accounts".
See here for more details:
### 2. Check your Instagram Permissions
If the issue still persists, check your permissions granted to Ayrshare.
Login to Facebook and go to the "Setting" -> "Settings & Privacy" -> "Security & Login" -> "Business Integration".
Click here for a direct link
On the [Business Integration page](https://www.facebook.com/help/405094243235242/), click the Ayrshare App.
A pop-up will show. Scroll down to "Upload media and create post for Instagram" and "Access profile and posts for Instagram". Check both the boxes "Instagram Accounts":
Click "Save".
Head back to the Ayrshare Dashboard and unlink and relink Instagram. You should now have the correct permissions.
# Link Users' Social Accounts From Backend Code | Ayrshare Docs
Source: https://www.ayrshare.com/docs/help-center/technical-support/link_social_from_backend_code
Learn how to link your users' social media accounts directly from your backend code with Ayrshare, enabling seamless onboarding without the dashboard.
The social networks do not allow authentication (linking) of social media accounts via backend code.
This is to ensure your users can securely connect their social media accounts by logging in directly with each platform's official login page.
For security reasons, social networks prevent their login pages from being embedded in iFrames. This means you cannot display the Ayrshare social linking page within an iFrame on your website - it must be opened in a new tab or window.
Please see here on the workflow for linking social media accounts: [API Integration for Business](/docs/multiple-users/api-integration-business).
# Linked Social Accounts Not Showing? Fix It | Ayrshare Docs
Source: https://www.ayrshare.com/docs/help-center/technical-support/linked_social_accounts_not_showing
Troubleshoot why your linked social media accounts aren't showing in Ayrshare and how to refresh, reconnect, or resync them so they appear correctly.
If you or your user has linked social accounts using the Profile Linking page from [generateJWT](/docs/multiple-users/api-integration-business#generate-a-jwt),
but the linked accounts are not showing up in the Ayrshare Dashboard, you can try the following steps to resolve the issue:
## Logout JWT Session
If you're testing and using different User Profiles, you might need to use the `logout=true` parameter.
Please see [automatic logout of a profile session](/docs/multiple-users/api-integration-business#automatic-logout-of-a-profile-session) to clear the session.
## Verify the User Profile
Check that the User Profile used to generate the JWT is the same as the User Profiles being viewed in the Ayrshare Dashboard.
You can verify by checking the Title of the User Profile in the Ayrshare Dashboard against the Title shown on the Profile Linking page (the URL from generateJWT).
If they don't match then two different User Profiles are being used.
This could be because a different User Profile was selected in the Ayrshare Dashboard or the incorrect Profile Key was used when calling generateJWT.
# Fix "LinkedIn Post Cannot Be Displayed" Error | Ayrshare Docs
Source: https://www.ayrshare.com/docs/help-center/technical-support/linkedin_post_cannot_be_displayed
Learn what causes the "LinkedIn post cannot be displayed" error and how to fix permissions, tokens, or content so your LinkedIn posts publish via Ayrshare.
If you've used the [Publish a Post](/docs/apis/post/post) endpoint on LinkedIn and
included mediaUrls in your post, your post, despite receiving a successful
response, may no longer display if the media or post content doesn't meet
LinkedIn's requirements.
For example, the LinkedIn post may return the following successful response:
```json LinkedIn Post Response theme={"system"}
{
"status": "success",
"errors": [],
"postIds": [
{
"status": "success",
"id": "urn:li:share:7287840497870462977", // LinkedIn Social Post ID
"postUrl": "https://www.linkedin.com/feed/update/urn:li:share:7287840497870462977/"
"owner": "urn:li:organization:12345670",
"platform": "linkedin"
}
],
"id": "PmrbzuYh1hdKMc52zC8"
}
```
However, the post may not display in LinkedIn, using the `postUrl`, if the media or post content doesn't meet
LinkedIn's requirements.
While LinkedIn may provide a `postUrl` initially, they will reject the post if,
during post-processing, any of the media or post content doesn't meet their requirements.
Please consult the [LinkedIn Media Guidelines](/docs/media-guidelines/linkedin) to
ensure that your media remains compliant and verify the content of your post is acceptable.
# Meta Media Crawler Blocked (Instagram / Threads)
Source: https://www.ayrshare.com/docs/help-center/technical-support/meta_media_crawler_blocked
How to fix error code 479 (media could not be fetched — the dedicated non-retryable crawler-block code), the transient code 440, and related Instagram 138 / Threads 379, caused by robots.txt or bot rules blocking Meta's media crawler.
Error code **479** is the dedicated, **non-retryable** Ayrshare code returned when Meta cannot fetch your media URL — most commonly because `robots.txt` or a bot-blocking rule on your server is denying the crawler (`facebookexternalhit`). It is returned only after Ayrshare's automatic re-host fallback has also failed, which strongly indicates a host-side block or an unreachable source.
When Ayrshare publishes to Instagram or Threads, it does not blindly hand your URL to Meta and give up. Ayrshare automatically retries the fetch and, if Meta still cannot reach the media, **re-hosts a copy on its own CDN** and asks Meta to fetch that instead. Code **479** means even that fallback could not get Meta to fetch the media — so retrying the same request will not help until the underlying hosting issue is fixed (`retryAvailable: false`, HTTP 400).
This page covers failures whose error message or details mention that the social network could not download the media, typically referencing `facebookexternalhit`, `robots.txt`, `"Restricted by robots.txt"`, `"HTTP error code 403"`, or Meta subcode `2207052`. For aspect-ratio or format errors on Instagram code 138, see [Instagram Media Guidelines](/docs/media-guidelines/instagram) or [Threads Media Guidelines](/docs/media-guidelines/threads) instead.
## Symptom
When the crawler is blocked, you'll see errors like these:
```json Error 479 (primary — dedicated, non-retryable) theme={"system"}
{
"status": "error",
"errors": [{
"action": "post",
"code": 479,
"retryAvailable": false,
"message": "The social network could not fetch the media from this URL, even after Ayrshare re-hosted it on its own CDN (Instagram/Meta subcode 2207052). Ensure the file is publicly reachable by Meta's crawlers (facebookexternalhit / Facebot) — check your robots.txt and any WAF/bot rules — not only in a browser. Retrying the same URL will not help until hosting is fixed.",
"details": "Media download has failed.: The media could not be fetched from the provided URI. Restricted by robots.txt (HTTP error code 403). Meta subcode 2207052.",
"platform": "instagram",
"status": "error"
}],
"postIds": [],
"id": "..."
}
```
```json Error 440 (transient ingestion — retryable) theme={"system"}
{
"status": "error",
"errors": [{
"action": "post",
"code": 440,
"retryAvailable": true,
"message": "The social network could not ingest the media in time. This is usually transient (for example Meta subcode 2207032 'download too slow' or 2207003 'create media fail'). Retry the post.",
"details": "Media download has failed.: Media download took too long / could not create media...",
"platform": "instagram",
"status": "error"
}],
"postIds": [],
"id": "..."
}
```
```json Instagram Error 138 (fallback — less specific upstream response) theme={"system"}
{
"status": "error",
"errors": [{
"retryAvailable": true,
"status": "error",
"code": 138,
"details": "Media download has failed.: The media could not be fetched from the provided URI. Video download failed with: HTTP error code 403. Restricted by robots.txt",
"action": "post",
"platform": "instagram",
"message": "Instagram Error: Instagram cannot process your post at this time. Please try your post again."
}],
"postIds": [],
"id": "..."
}
```
```json Threads Error 379 theme={"system"}
{
"status": "error",
"errors": [{
"status": "error",
"code": 379,
"message": "Error posting to Threads.",
"action": "post",
"platform": "threads"
}],
"postIds": [],
"id": "..."
}
```
Understanding the split between these codes:
- **Code 479 — dedicated media-fetch / crawler-block (non-retryable).** This is the code for the failure covered by this page. It is returned with `retryAvailable: false` when Meta could not fetch the media (subcode `2207052` or a media-fetch text pattern) **even after Ayrshare re-hosted it on its own CDN**. Its message explicitly names `facebookexternalhit` / `Facebot` and `robots.txt` — if you see 479, you're on the right page. Fix hosting before retrying.
- **Code 440 — transient ingestion (retryable).** Now used for genuinely transient ingestion exhaustion — Meta subcodes `2207032` ("download too slow") / `2207003` ("create media fail"), or unclassified exhaustion. It carries `retryAvailable: true`; retry via [`/post/retry`](/docs/apis/post/retry-post).
- **Code 138 — less-specific Instagram fallback.** Emitted for the same root cause when the upstream response is less specific. 138 is also used for aspect-ratio / format issues, so the media-fetch variant is identifiable by `"Restricted by robots.txt"` or `"HTTP error code 403"` in `details`.
- **Code 379 — Threads.** Does not include a `details` field. If Threads fails alongside an Instagram 479 or 138, the root cause is typically the same.
## Why This Happens
When you publish to Instagram or Threads via Ayrshare, Meta's servers fetch your media from the URL you provide. This server-side fetch uses the `facebookexternalhit` User-Agent. If your server's `robots.txt` disallows this crawler — or a WAF/bot-protection rule blocks it — Meta cannot download the file and the publish fails.
Facebook Page publishing uses a different ingestion path, which is why the same `mediaUrl` may work for Facebook but fail for Instagram and Threads.
## Fix: Update Your robots.txt
### Recommended: Allow Meta explicitly, keep others open
Add these rules to your `robots.txt` file:
```txt robots.txt theme={"system"}
User-agent: facebookexternalhit
Allow: /
User-agent: *
Allow: /
```
This explicitly allows Meta's crawler while keeping your site open to other crawlers (Google, Bing, etc.).
### Advanced: Lock down to social publishers only
If you want to block most crawlers but allow social media platforms:
```txt robots.txt theme={"system"}
User-agent: facebookexternalhit
Allow: /
User-agent: Twitterbot
Allow: /
User-agent: LinkedInBot
Allow: /
User-agent: Pinterest
Allow: /
User-agent: *
Disallow: /
```
Use a single `User-agent: *` block, placed at the end of the file. RFC 9309-compliant crawlers merge multiple wildcard groups into one, but not every parser in the wild is RFC-compliant — duplicate wildcard groups are a common source of rules being dropped or applied inconsistently.
## Verify Meta Can Fetch Your URL
Before retrying your post, verify that Meta's crawler can now access your media. Run this command, replacing `$URL` with your full media URL:
```bash theme={"system"}
curl -v --compressed -H "Range: bytes=0-524288" -H "Connection: close" \
-A "facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)" \
"$URL"
```
- **Healthy response:** HTTP 200 or 206 with binary data in the body.
- **Blocked response:** HTTP 403 or an empty/HTML error page.
Per Meta's documentation, `robots.txt` changes may take up to 24 hours to propagate through Meta's crawler cache. If verification succeeds but your post still fails, wait and retry later.
## If This Doesn't Fix It
If you've updated `robots.txt` and verified with the `curl` command but still see failures:
- **24-hour propagation delay** — Meta caches `robots.txt`. Wait up to 24 hours after making changes before retrying.
- **WAF or bot-fight rules** — Cloudflare Bot Fight Mode, AWS WAF managed bot rule groups, and similar services may block Meta's crawler IP ranges even if `robots.txt` allows it. Check your WAF logs and add an exception for `facebookexternalhit`.
- **Hotlink protection / Referer checks** — Some CDNs block requests from data-center IPs or without a valid `Referer` header. Whitelist Meta's crawler or disable hotlink protection for media paths.
- **Signed-URL / presigned-URL expiry** — If your media URL has an expiration timestamp (common with S3 presigned URLs), ensure it doesn't expire before Meta's crawler can fetch it. For scheduled posts, generate URLs that remain valid until well after the scheduled time.
- **Managed media hosting** — If you use a service like Cloudinary, Imgix, or similar where you cannot edit `robots.txt`, check their documentation for a Meta/Facebook crawler allow-list setting.
If none of these resolve the issue, [contact Ayrshare support](https://www.ayrshare.com/contact) and include:
* The failing `postId` from the error response
* The output of the `curl` verification command above
* Your `robots.txt` contents
## Retry a Failed Post
Retry behavior depends on which code you received:
- **Code 440 (transient, `retryAvailable: true`)** — the ingestion simply ran out of time or hit a temporary Meta error. Retry directly using the [Retry Post endpoint](/docs/apis/post/retry-post); no changes to your hosting are needed.
- **Code 479 (`retryAvailable: false`)** — Meta could not fetch the media even after Ayrshare re-hosted it on its own CDN, so retrying the unchanged blocked URL will fail again. **Fix hosting first**: allow Meta's crawlers (`facebookexternalhit` / `Facebot`) in `robots.txt` and your WAF, or re-host the media on a Meta-reachable CDN. Verify with the `curl` command above, then retry via the [Retry Post endpoint](/docs/apis/post/retry-post).
## See Also
- [Instagram API](/docs/apis/post/social-networks/instagram)
- [Threads API](/docs/apis/post/social-networks/threads)
- [Instagram Media Guidelines](/docs/media-guidelines/instagram)
- [Threads Media Guidelines](/docs/media-guidelines/threads)
- [Ayrshare Error Codes](/docs/errors/errors-ayrshare#media-fetch--crawler-access-errors)
- [Video Publishing Fails](/docs/help-center/technical-support/video_publishing_fails)
# Technical Support Overview & Troubleshooting | Ayrshare Docs
Source: https://www.ayrshare.com/docs/help-center/technical-support/overview
Browse Ayrshare's technical support guides for fixing posting errors, account-linking issues, and API problems across all supported social networks.
For additional information on specific technical issues, there are specific troubleshooting steps that we recommend.
Issues and errors related to Meta including Facebook and Instagram.
Issues and errors related to other social networks.
Additional help on specific error messages and responses.
More technical support topics.
# Password Required for LinkedIn Linking | Ayrshare Docs
Source: https://www.ayrshare.com/docs/help-center/technical-support/password_required_for_linkedin_linking
Learn why LinkedIn may require a password when linking to Ayrshare, how to complete authentication securely, and how to fix linking errors that follow.
When connecting your LinkedIn account to Ayrshare, you may be asked to provide
your username and password.
If you do not have a password due to authenticating into LinkedIn using a Google
or Microsoft account, please use the following steps:
1. Click the "Forgot password?" link.
2. Input your email and
click "Next".
3. Check your email and copy over the 6-digit code.
4. At the "Choose a new password" screen, input a new password, retype it, and then
click "Submit".
Return to the Ayrshare dashboard and try to connect your LinkedIn account again.
Upon arriving at the signin page, input your email and the new password.
# Post With @Mentions Didn't Go Through? | Ayrshare Docs
Source: https://www.ayrshare.com/docs/help-center/technical-support/post_with_mentions_didn_t_go_through
Find out why social media posts with @mentions may fail to publish through Ayrshare and how to format mentions correctly so they go through every time.
The social networks are very particular about the frequency of @mentions and who is mentioned. The Free Plan does not allow mentions and will not send your posts.
Paid plans allow mentions, but a connected social account may only mention the same handle once per day. To prevent abuse, deleted posts with mentions count towards the total.
# How to Fix a 500 Internal Server Error | Ayrshare Docs
Source: https://www.ayrshare.com/docs/help-center/technical-support/response_500_internal_error
Learn what causes a 500 Internal Server Error from the Ayrshare API, how to diagnose the request, and the steps to resolve it and retry your post.
If you receive a 500 error with the message "Internal Error" or "Internal Server Error" please verify that the URL called is valid as detailed in the Ayrshare docs.
If the URL looks ok, the Internal Error means that there was a network connectivity issue between your server and our cloud provider Google.
If this error occurs, please retry your request.
Other issues may be related to:
-
Invalid JSON being sent. Please see here for more information: [Invalid
JSON](/docs/help-center/technical-support/response_returns_as_bad_request).
-
Endpoint timeout. We recommend using the new base API endpoint: [New Base API
Endpoint](/docs/help-center/technical-support/response_bad_gateway_502_or_504_error).
# How to Fix 502 Bad Gateway & 504 Errors | Ayrshare API Docs
Source: https://www.ayrshare.com/docs/help-center/technical-support/response_bad_gateway_502_or_504_error
Understand what 502 Bad Gateway and 504 Gateway Timeout errors mean from the Ayrshare API, why they happen, and how to retry your requests safely.
If you've encountered:
* A 502 or 504 HTTP error with a "Bad Gateway" message
* A timeout while trying to post a large media file
* An HTML CloudFlare response
Please try sending the post again using `api.ayrshare.com` as your base endpoint. See the [/post](/docs/apis/post/post) endpoint for details.
`https://api.ayrshare.com/api/{endpoint name}`
For example, instead of `https://app.ayrshare.com/api/post`, use `https://api.ayrshare.com/api/post`
You may also use `api.ayrshare.com` for the `/post` endpoint or any other endpoint.
# How to Fix a 400 Bad Request Error | Ayrshare API Docs
Source: https://www.ayrshare.com/docs/help-center/technical-support/response_returns_as_bad_request
Learn why the Ayrshare API returns a Bad Request (400) error, how to spot missing or invalid parameters, and how to correct your request and resend it.
If you receive HTML as a response of "Bad Request" instead of JSON, it is possible the POST body parameter is not valid JSON.
For example, if you send this invalid JSON:
```javascript theme={"system"}
{
"post": "A "great" post"
"platforms: ["twitter"]
}
```
A response of "Bad Request" will be returned. The code above has three issues: a missing comma on `post`, the post text has a double set of " quotes without escaping, and a missing end quote on `platform`. The valid JSON should be:
```javascript theme={"system"}
{
"post": "A \"great\" post",
"platforms": ["twitter"]
}
```
You can test your JSON by POSTing to the following URL to validate your JSON. Be sure to set the Content-Type to `text/plain`.
We recommend trying the call in [Postman](/docs/testing/postman), which can help correct JSON formatting. Please see the next section for more information.
## Validate JSON
You can validate your JSON by using either an online linter, such as [https://jsonlint.com/](https://jsonlint.com/) or using [Postman](/docs/testing/postman).
You may also use our `/validate/json` endpoint:
# TikTok Account Restricted? How to Fix It | Ayrshare Docs
Source: https://www.ayrshare.com/docs/help-center/technical-support/tiktok_account_restricted
Find out why your TikTok account may be restricted, how it affects posting through Ayrshare, and the steps to resolve the restriction and resume publishing.
## Why Does TikTok Restrict or Suspend Accounts?
TikTok may restrict or suspend accounts when their security algorithm is triggered. Unlike some platforms, TikTok often provides limited information about specific violations. Restrictions can occur when TikTok's algorithm detects unusual activity, potential violations of community guidelines, or when content is flagged by their automated systems.
Please see [TikTok's Community Guidelines](https://www.tiktok.com/community-guidelines) for more information.
## Steps We Recommend:
1. Review your recent content for potential community guideline violations including copyright infringement, inappropriate content, or misleading information.
2. Check your posting frequency - TikTok may flag accounts that post too frequently as potential spam accounts. Please see our [recommended social posting limits](/docs/testing/post-verification#recommended-posting-limits) for guidance on optimal posting frequency.
3. Verify any links included in your profile or content, as TikTok closely scrutinizes external URLs.
4. Check your server logs for any error messages returned from /post.
5. Have the account owner log into TikTok directly and check for any notifications, warnings, or verification requests that may need to be addressed.
6. If you've received a specific violation message, follow TikTok's appeal process within the app (Settings > Report a Problem).
7. After following the above steps, if the user was suspended by Ayrshare, [re-activate the user profile](/docs/multiple-users/manage-user-profiles#reactivate-a-suspended-user-profile) in the Ayrshare Dashboard.
## TikTok's Algorithm and Content Moderation
TikTok uses a sophisticated algorithm to determine account status and content distribution. This algorithm monitors posting frequency, content patterns, account history, and user reports. Content that appears automated or bot-like may trigger restrictions, even when the content itself doesn't violate guidelines.
TikTok may limit your account's reach ("shadowban") before moving to a full restriction if they detect concerning patterns. This can appear as dramatically reduced views or engagement.
See our [recommended social posting limits](/docs/testing/post-verification#recommended-posting-limits) for guidance on optimal posting frequency.
## TikTok Message: "This account is currently unavailable" or "Action Blocked"
If the user encounters messages such as "This account is currently unavailable" or "Action Blocked," TikTok has likely placed temporary restrictions on your account. While TikTok provides limited specific information about these restrictions, they typically resolve within 24-72 hours if no further triggering actions occur.
During this period:
* Avoid posting new content
* Do not attempt to create new accounts from the same device
* Refrain from mass following/unfollowing actions
* Do not repeatedly attempt actions that have been blocked
## Duplicate Content Concerns
Posting identical content across multiple TikTok accounts is particularly problematic and may trigger restrictions. TikTok's algorithms are designed to identify and limit the reach of duplicate content to prevent spam and maintain platform quality.
If you're managing multiple accounts, ensure each post is unique and tailored to the specific account's audience. Even minor variations in captions, hashtags, or visual elements can help avoid duplicate content flags.
See our guide on [managing duplicate content across social platforms](/docs/testing/post-verification#duplicate-and-similar-posts) for more information on how to safely repurpose content while avoiding restrictions.
***
Security violations from the social platforms should be taken seriously and resolved as soon as possible.
Repeated violations may result in a permanent suspension of the social account.
# Why Video Publishing Fails & How to Fix It | Ayrshare Docs
Source: https://www.ayrshare.com/docs/help-center/technical-support/video_publishing_fails
Troubleshoot failed video posts in Ayrshare by checking format, size, duration, and platform limits, with step-by-step fixes to get your videos publishing.
## When Social Networks Reject Your Videos
If Meta - Facebook, Instagram, or Threads - or X (Twitter) keeps rejecting your video posts when publishing, even after a [post retry attempt](/docs/apis/post/retry-post), the problem may not be with the platform, but with the video encoding itself.
### Common Issue with Video Encoding
Meta platforms (Facebook, Instagram, and Threads) and X have specific video format requirements: [Facebook Media Guidelines](/docs/media-guidelines/facebook_pages), [Instagram Video Guidelines](/docs/media-guidelines/instagram), [Threads Video Guidelines](/docs/media-guidelines/threads), and [X Video Guidelines](/docs/media-guidelines/x_twitter).
Some video creation tools occasionally produce videos with encoding that Meta's systems don't accept. At times, their output needs to be re-encoded for compatibility.
### One Solution: Re-encode with FFmpeg
If your video uploads are failing, try re-encoding the video using [FFmpeg](https://ffmpeg.org/), an open-source tool for video processing:
```bash theme={"system"}
ffmpeg -i your_original_video.mp4 -c:v libx264 -preset medium -profile:v high -level 4.0 -pix_fmt yuv420p -c:a aac -movflags +faststart meta_compatible_video.mp4
```
This command converts your video to use the widely-compatible H.264 video codec and AAC audio codec, which Meta platforms accept.
Re-encoding "normalizes" your video to use standard encoding parameters that Meta's platforms are designed to process, without sacrificing quality.
If you see these errors regularly, this simple step can save you frustration when sharing your creative content.
### FFmpeg Installation and Usage
Installation instructions:
- **macOS:** `brew install ffmpeg`
- **Windows:** `winget install ffmpeg`
-
**Linux:** `sudo apt install ffmpeg` (Ubuntu/Debian) or `sudo dnf install ffmpeg` (Fedora)
Parameters:
- -c:v libx264: Uses H.264 video codec
- -preset medium: Balance between encoding speed and quality
- -profile:v high -level 4.0: Compatibility settings
- -pix\_fmt yuv420p: Standard pixel format for maximum compatibility
- -b:v 5000k: Video bitrate (adjust as needed for quality)
- -c:a aac: AAC audio codec
- -b:a 192k: Audio bitrate
- -movflags +faststart: Optimizes file for web streaming
# Fix X/Twitter Link Preview Not Showing | Ayrshare Docs
Source: https://www.ayrshare.com/docs/help-center/technical-support/x_twitter_link_preview_not_showing
Learn why link previews (Twitter Cards) may not show on your X/Twitter posts published via Ayrshare and how to fix metadata so previews render correctly.
When a link is included in a post, X/Twitter tries to render a preview. [X/Twitter meta tags](https://developer.twitter.com/en/docs/twitter-for-websites/cards/overview/markup) on your site/page in the header are used to render the preview text, image, and link.
You can validate how the X/Twitter card will look by submitting your page link here:
If everything looks ok, but the preview is still not showing, please contact us for assistance.
# YouTube Channels Not Showing? How to Fix It | Ayrshare Docs
Source: https://www.ayrshare.com/docs/help-center/technical-support/youtube_channels_not_showing
Troubleshoot why your YouTube channels aren't appearing in Ayrshare and how to reconnect permissions so the right channel is available for posting.
When you authorize access to your YouTube channel, Google requires you to select a Google account and then choose a specific channel.
For more information on how to connect your YouTube channel to Ayrshare, see the [YouTube channel linking guide](/docs/dashboard/connect-social-accounts/youtube).
However, you may notice that one or more of your channels are missing from the selection list - probably the channel you want to connect to the YouTube API.
Google controls which channels appear in this list based on several factors: the Google account you're using for authentication, your permission level on each channel, and the privacy settings configured for each channel.
### Missing YouTube Channel Reasons
1. Channel Required
-
YouTube posting requires your YouTube account to have at least one channel and [be an owner
on the channel](https://support.google.com/youtube/answer/9481328). Please see number 2
below.
-
To create a YouTube channel, click on your profile in the YouTube Dashboard and choose
"Create a Channel". You may also use this direct link to create a YouTube Channel:
[http://m.youtube.com/create\_channel](http://m.youtube.com/create_channel)
2. Owner or Admin of the Channel
-
The [Google account](/docs/dashboard/connect-social-accounts/youtube) logged in as must be the
owner or admin of the Channel for it to be presented.
-
You can check the [brand permissions](https://myaccount.google.com/brandaccounts) to ensure
that the account has the necessary permissions. If you don't see the channel listed, you can
ask the channel owner to add you as a manager or owner.
3. Channel Privacy Settings
-
If a channel owner has set their channel privacy to "Private" or "Unlisted," their channel
and its content will not be accessible through the API.
-
You can test this by opening up an incognito brower and trying to go search for the channel.
A private or unlisted channel will not show up in the search results.
-
Private channels are only visible to the channel owner and authorized users, while unlisted
channels can only be accessed with the direct channel URL.
4. Age or Region Restrictions
- If a channel has age-restricted content or is restricted in certain regions.
-
Age-restricted channels require users to be signed in and meet the age requirements to view
the content.
5. Deleted or Suspended Channels
-
If a channel has been deleted by the owner or suspended by YouTube for violating terms of
service, it will no longer be accessible through the API.
-
Deleted channels are permanently removed, while suspended channels may become accessible
again if the suspension is lifted.
# Fix YouTube "disallowed_useragent" on Android | Ayrshare Docs
Source: https://www.ayrshare.com/docs/help-center/technical-support/youtube_on_android_disallowed_useragent
Learn what the YouTube "disallowed_useragent" error on Android means when linking to Ayrshare and how to complete authorization in a supported browser.
If you are trying to link YouTube on an Android or iOS device but receive an "**Error: disallowed\_useragent**", it may be due to Google rejecting your login request. An old browser is often the cause for this unauthorized browser agent rejection.
You can try to address this issue by updating your app to the latest Android SDK, Android OS, and Chrome version.
# YouTube Thumbnail Not Applied (Unverified Channel)
Source: https://www.ayrshare.com/docs/help-center/technical-support/youtube_thumbnail_unverified_channel
Your YouTube video posts successfully but the custom thumbnail is missing. The most common cause is an unverified YouTube channel.
When you post a YouTube video with a custom `thumbNail`, the video may publish successfully while the thumbnail fails to apply. In this case the post's top-level `status` stays `"success"` (the video is live), but the YouTube result carries a `warnings` array describing the thumbnail failure:
```json theme={"system"}
{
"status": "success",
"id": "",
"thumbnail": {
"action": "post",
"status": "error",
"code": 307,
"message": "Your YouTube channel must be verified to set a custom thumbnail. Verify your channel at https://www.youtube.com/verify (phone verification). If your channel is already verified, try unlinking and re-linking your YouTube account to restore permissions.",
"details": ""
},
"warnings": [
{
"feature": "thumbnail",
"code": 307,
"message": "Your YouTube channel must be verified to set a custom thumbnail. Verify your channel at https://www.youtube.com/verify (phone verification). If your channel is already verified, try unlinking and re-linking your YouTube account to restore permissions.",
"details": ""
}
]
}
```
## Symptom
Your YouTube video appears on the channel, but the custom thumbnail you supplied is missing — YouTube uses an auto-generated frame instead. The API response returns `status: "success"` with a thumbnail `warnings` entry (`feature: "thumbnail"`, `code: 307`).
## Most Common Cause: Unverified Channel
The dominant cause of a YouTube thumbnail `403` failure is an **unverified YouTube channel**. YouTube requires channel (phone) verification before it will accept a custom thumbnail upload.
### Fix: Verify Your Channel
1. Go to [https://www.youtube.com/verify](https://www.youtube.com/verify) and complete **phone verification** for the channel.
2. Alternatively, in [YouTube Studio](https://studio.youtube.com/) go to *Settings → Channel*, select *Feature Eligibility*, and enable *Features that require phone verification*.
3. YouTube may take up to 24 hours to enable custom thumbnails after verification. "Enabled" phone verification does not guarantee YouTube will allow thumbnail uploads — YouTube ultimately determines eligibility.
4. Confirm you can manually upload a thumbnail in YouTube Studio. If you cannot do it manually, the API cannot either.
## Secondary Cause: OAuth Permissions
If your channel is **already verified** and thumbnails still fail with a `403`, the linked YouTube account may be missing the required permissions. Try **unlinking and re-linking** your YouTube account in [Social Accounts](https://app.ayrshare.com/social-accounts) and grant all requested permissions during re-linking.
For Brand / Content Owner accounts (often used for business or organization channels), make sure the linked account has the necessary permissions — we recommend "Owner" rights.
## Pre-Publish Thumbnail Requirements
Ayrshare validates the `thumbNail` before publishing where possible. To avoid a `307` thumbnail failure, ensure the thumbnail meets these requirements:
- **Format:** PNG or JPG/JPEG. The file extension must end in
png, jpg, or jpeg.
- **Size:** 2MB or less.
- **Reachable URL:** The
thumbNail URL must be publicly reachable so Ayrshare can fetch it.
A thumbnail problem never fails the post. If a thumbnail is definitively invalid (wrong extension, confirmed over 2MB, or unreachable), Ayrshare skips it before the video is uploaded, still publishes the video, and reports the reason in `warnings`. If the failure can only be determined after the video is uploaded, the video stays live and the failure is surfaced via the same `warnings` array described above. Either way the video publishes and `status` stays `"success"`.
## Related
* [YouTube Post API — Thumbnails](/docs/apis/post/social-networks/youtube#youtube-thumbnails)
* [YouTube media guidelines](/docs/media-guidelines/youtube#thumbnails)
* [Error codes — Code 307](/docs/errors/errors-ayrshare#youtube-thumbnail-errors-code-307)
# YouTube Videos Changed to Private? Fix It | Ayrshare Docs
Source: https://www.ayrshare.com/docs/help-center/technical-support/youtube_videos_changed_to_private
Find out why YouTube may switch uploaded videos to private when posted via Ayrshare, how channel verification affects this, and how to keep videos public.
If your public YouTube videos are changed to private, it is likely due to a YouTube policy violation.
This could be due to unrelated or misleading tags from the "Description" and "Tag" sections of your video.
Information about [YouTube's metadata best practices](https://support.google.com/youtube/answer/2801973?sjid=8684425261187021057-NA).
You *should* receive an email from YouTube with the details of the violation with next steps.
Learn more about [YouTube Video Locked as Private](https://support.google.com/youtube/answer]/7300965).
# Country Codes
Source: https://www.ayrshare.com/docs/iso-codes/country
ISO 3166 format country codes
The country codes to use with the API endpoints. Please see the specific endpoint for details.
| Country | Code |
| :------------------------------------------- | ---: |
| Afghanistan | AF |
| Albania | AL |
| Algeria | DZ |
| American Samoa | AS |
| Andorra | AD |
| Angola | AO |
| Anguilla | AI |
| Antarctica | AQ |
| Antigua and Barbuda | AG |
| Argentina | AR |
| Armenia | AM |
| Aruba | AW |
| Australia | AU |
| Austria | AT |
| Azerbaijan | AZ |
| Bahamas | BS |
| Bahrain | BH |
| Bangladesh | BD |
| Barbados | BB |
| Belarus | BY |
| Belgium | BE |
| Belize | BZ |
| Benin | BJ |
| Bermuda | BM |
| Bhutan | BT |
| Bolivia, Plurinational State of | BO |
| Bonaire, Sint Eustatius and Saba | BQ |
| Bosnia and Herzegovina | BA |
| Botswana | BW |
| Bouvet Island | BV |
| Brazil | BR |
| British Indian Ocean Territory | IO |
| Brunei Darussalam | BN |
| Bulgaria | BG |
| Burkina Faso | BF |
| Burundi | BI |
| Cambodia | KH |
| Cameroon | CM |
| Canada | CA |
| Cape Verde | CV |
| Cayman Islands | KY |
| Central African Republic | CF |
| Chad | TD |
| Chile | CL |
| China | CN |
| Christmas Island | CX |
| Cocos (Keeling) Islands | CC |
| Colombia | CO |
| Comoros | KM |
| Congo | CG |
| Congo, the Democratic Republic of the | CD |
| Cook Islands | CK |
| Costa Rica | CR |
| Croatia | HR |
| Cuba | CU |
| Curaçao | CW |
| Cyprus | CY |
| Czech Republic | CZ |
| Côte d'Ivoire | CI |
| Denmark | DK |
| Djibouti | DJ |
| Dominica | DM |
| Dominican Republic | DO |
| Ecuador | EC |
| Egypt | EG |
| El Salvador | SV |
| Equatorial Guinea | GQ |
| Eritrea | ER |
| Estonia | EE |
| Ethiopia | ET |
| Falkland Islands (Malvinas) | FK |
| Faroe Islands | FO |
| Fiji | FJ |
| Finland | FI |
| France | FR |
| French Guiana | GF |
| French Polynesia | PF |
| French Southern Territories | TF |
| Gabon | GA |
| Gambia | GM |
| Georgia | GE |
| Germany | DE |
| Ghana | GH |
| Gibraltar | GI |
| Greece | GR |
| Greenland | GL |
| Grenada | GD |
| Guadeloupe | GP |
| Guam | GU |
| Guatemala | GT |
| Guernsey | GG |
| Guinea | GN |
| Guinea-Bissau | GW |
| Guyana | GY |
| Haiti | HT |
| Heard Island and McDonald Islands | HM |
| Holy See (Vatican City State) | VA |
| Honduras | HN |
| Hong Kong | HK |
| Hungary | HU |
| Iceland | IS |
| India | IN |
| Indonesia | ID |
| Iran, Islamic Republic of | IR |
| Iraq | IQ |
| Ireland | IE |
| Isle of Man | IM |
| Israel | IL |
| Italy | IT |
| Jamaica | JM |
| Japan | JP |
| Jersey | JE |
| Jordan | JO |
| Kazakhstan | KZ |
| Kenya | KE |
| Kiribati | KI |
| Korea, Democratic People's Republic of | KP |
| Korea, Republic of | KR |
| Kuwait | KW |
| Kyrgyzstan | KG |
| Lao People's Democratic Republic | LA |
| Latvia | LV |
| Lebanon | LB |
| Lesotho | LS |
| Liberia | LR |
| Libya | LY |
| Liechtenstein | LI |
| Lithuania | LT |
| Luxembourg | LU |
| Macao | MO |
| Macedonia, the Former Yugoslav Republic of | MK |
| Madagascar | MG |
| Malawi | MW |
| Malaysia | MY |
| Maldives | MV |
| Mali | ML |
| Malta | MT |
| Marshall Islands | MH |
| Martinique | MQ |
| Mauritania | MR |
| Mauritius | MU |
| Mayotte | YT |
| Mexico | MX |
| Micronesia, Federated States of | FM |
| Moldova, Republic of | MD |
| Monaco | MC |
| Mongolia | MN |
| Montenegro | ME |
| Montserrat | MS |
| Morocco | MA |
| Mozambique | MZ |
| Myanmar | MM |
| Namibia | NA |
| Nauru | NR |
| Nepal | NP |
| Netherlands | NL |
| New Caledonia | NC |
| New Zealand | NZ |
| Nicaragua | NI |
| Niger | NE |
| Nigeria | NG |
| Niue | NU |
| Norfolk Island | NF |
| Northern Mariana Islands | MP |
| Norway | NO |
| Oman | OM |
| Pakistan | PK |
| Palau | PW |
| Palestine, State of | PS |
| Panama | PA |
| Papua New Guinea | PG |
| Paraguay | PY |
| Peru | PE |
| Philippines | PH |
| Pitcairn | PN |
| Poland | PL |
| Portugal | PT |
| Puerto Rico | PR |
| Qatar | QA |
| Romania | RO |
| Russian Federation | RU |
| Rwanda | RW |
| Réunion | RE |
| Saint Barthélemy | BL |
| Saint Helena, Ascension and Tristan da Cunha | SH |
| Saint Kitts and Nevis | KN |
| Saint Lucia | LC |
| Saint Martin (French part) | MF |
| Saint Pierre and Miquelon | PM |
| Saint Vincent and the Grenadines | VC |
| Samoa | WS |
| San Marino | SM |
| São Tomé and Principe | ST |
| Saudi Arabia | SA |
| Senegal | SN |
| Serbia | RS |
| Seychelles | SC |
| Sierra Leone | SL |
| Singapore | SG |
| Sint Maarten (Dutch part) | SX |
| Slovakia | SK |
| Slovenia | SI |
| Solomon Islands | SB |
| Somalia | SO |
| South Africa | ZA |
| South Georgia and the South Sandwich Islands | GS |
| South Sudan | SS |
| Spain | ES |
| Sri Lanka | LK |
| Sudan | SD |
| Suriname | SR |
| Svalbard and Jan Mayen | SJ |
| Swaziland | SZ |
| Sweden | SE |
| Switzerland | CH |
| Syrian Arab Republic | SY |
| Taiwan, Province of China | TW |
| Tajikistan | TJ |
| Tanzania, United Republic of | TZ |
| Thailand | TH |
| Timor-Leste | TL |
| Togo | TG |
| Tokelau | TK |
| Tonga | TO |
| Trinidad and Tobago | TT |
| Tunisia | TN |
| Turkey | TR |
| Turkmenistan | TM |
| Turks and Caicos Islands | TC |
| Tuvalu | TV |
| Uganda | UG |
| Ukraine | UA |
| United Arab Emirates | AE |
| United Kingdom | GB |
| United States | US |
| United States Minor Outlying Islands | UM |
| Uruguay | UY |
| Uzbekistan | UZ |
| Vanuatu | VU |
| Venezuela, Bolivarian Republic of | VE |
| Vietnam | VN |
| Virgin Islands, British | VG |
| Virgin Islands, U.S. | VI |
| Wallis and Futuna | WF |
| Western Sahara | EH |
| Yemen | YE |
| Zambia | ZM |
| Zimbabwe | ZW |
| Åland Islands | AX |
# Language Codes
Source: https://www.ayrshare.com/docs/iso-codes/language
Available languages and codes
The language codes to use with the API endpoints. Please see the specific endpoint for details.
| Language | Language Code |
| :------------------ | ------------: |
| Abkhaz | ab |
| Afar | aa |
| Afrikaans | af |
| Akan | ak |
| Albanian | sq |
| Amharic | am |
| Arabic | ar |
| Aragonese | an |
| Armenian | hy |
| Assamese | as |
| Avaric | av |
| Avestan | ae |
| Aymara | ay |
| Azerbaijani | az |
| Bambara | bm |
| Bashkir | ba |
| Basque | eu |
| Belarusian | be |
| Bengali | bn |
| Bihari | bh |
| Bislama | bi |
| Bosnian | bs |
| Breton | br |
| Bulgarian | bg |
| Burmese | my |
| Catalan | ca |
| Chamorro | ch |
| Chechen | ce |
| Chichewa | ny |
| Chinese | zh |
| Chuvash | cv |
| Cornish | kw |
| Corsican | co |
| Cree | cr |
| Croatian | hr |
| Czech | cs |
| Danish | da |
| Dhivehi | dv |
| Dutch | nl |
| English | en |
| Esperanto | eo |
| Estonian | et |
| Ewe | ee |
| Faroese | fo |
| Fijian | fj |
| Finnish | fi |
| French | fr |
| Fula | ff |
| Galician | gl |
| Georgian | ka |
| German | de |
| Greek | el |
| Guaraní | gn |
| Gujarati | gu |
| Haitian Creole | ht |
| Hausa | ha |
| Hebrew | he |
| Herero | hz |
| Hindi | hi |
| Hiri Motu | ho |
| Hungarian | hu |
| Icelandic | is |
| Ido | io |
| Igbo | ig |
| Indonesian | id |
| Interlingua | ia |
| Interlingue | ie |
| Inuktitut | iu |
| Inupiaq | ik |
| Irish | ga |
| Italian | it |
| Japanese | ja |
| Javanese | jv |
| Kalaallisut | kl |
| Kannada | kn |
| Kanuri | kr |
| Kashmiri | ks |
| Kazakh | kk |
| Khmer | km |
| Kikuyu | ki |
| Kinyarwanda | rw |
| Komi | kv |
| Kongo | kg |
| Korean | ko |
| Kurdish | ku |
| Kwanyama | kj |
| Kyrgyz | ky |
| Lao | lo |
| Latin | la |
| Latvian | lv |
| Limburgish | li |
| Lingala | ln |
| Lithuanian | lt |
| Luba-Katanga | lu |
| Luganda | lg |
| Luxembourgish | lb |
| Macedonian | mk |
| Malagasy | mg |
| Malay | ms |
| Malayalam | ml |
| Maltese | mt |
| Manx | gv |
| Māori | mi |
| Marathi | mr |
| Marshallese | mh |
| Mongolian | mn |
| Nauru | na |
| Navajo | nv |
| Ndonga | ng |
| Nepali | ne |
| North Ndebele | nd |
| Northern Sami | se |
| Norwegian | no |
| Norwegian Bokmål | nb |
| Norwegian Nynorsk | nn |
| Nuosu | ii |
| Occitan | oc |
| Ojibwe | oj |
| Old Church Slavonic | cu |
| Oriya | or |
| Oromo | om |
| Ossetian | os |
| Pāli | pi |
| Panjabi | pa |
| Pashto | ps |
| Persian | fa |
| Polish | pl |
| Portuguese | pt |
| Quechua | qu |
| Romanian | ro |
| Romansh | rm |
| Russian | ru |
| Samoan | sm |
| Sango | sg |
| Sanskrit | sa |
| Sardinian | sc |
| Scottish Gaelic | gd |
| Serbian | sr |
| Shona | sn |
| Sindhi | sd |
| Sinhala | si |
| Slovak | sk |
| Slovene | sl |
| Somali | so |
| South Ndebele | nr |
| Southern Sotho | st |
| Spanish | es |
| Sundanese | su |
| Swahili | sw |
| Swati | ss |
| Swedish | sv |
| Tagalog | tl |
| Tahitian | ty |
| Tajik | tg |
| Tamil | ta |
| Tatar | tt |
| Telugu | te |
| Thai | th |
| Tibetan | bo |
| Tigrinya | ti |
| Tonga | to |
| Tsonga | ts |
| Tswana | tn |
| Turkish | tr |
| Turkmen | tk |
| Twi | tw |
| Ukrainian | uk |
| Urdu | ur |
| Uyghur | ug |
| Uzbek | uz |
| Venda | ve |
| Vietnamese | vi |
| Volapük | vo |
| Walloon | wa |
| Welsh | cy |
| Western Frisian | fy |
| Wolof | wo |
| Xhosa | xh |
| Yiddish | yi |
| Yoruba | yo |
| Zhuang | za |
# Make
Source: https://www.ayrshare.com/docs/packages-guides/make
Integrate the Ayrshare API into your Make app to manage your users' social media accounts
## Overview
[Make](https://make.com) is a no-code automation tool that allows you to connect apps and automate workflows.
The Ayrshare API can be integrated into your Make app to manage your users' social media accounts.
## Tutorial
**Post To Social Media From Your Website Form Using Make + Ayrshare + Wordpress + Contact Form 7**
A video tutorial on how you can post to your user's social media accounts using the no-code tool Make, formerly Integromat, and Ayrshare.
Managing your users' social accounts requires the [business plan](/docs/multiple-users/business-plan-overview), but you can similarly manage your own social accounts with the Premium plan using just the [API KEY](/docs/apis/overview#authorization) in the request header.
## Make X Integration
While [Make has ended their X integration](https://www.ayrshare.com/blog/make-coms-x-integration-alternative/), you can still use the Ayrshare API to create Make automations to manage your users' X social media accounts.
## Learn More
- Learn more about no-code [Make](https://www.make.com/en).
-
Learn more about the [Contact Form 7 plugin](https://wordpress.org/plugins/contact-form-7/).
-
Learn more about the Contact Form 7 and [Redirections, Integrations, and Database
plugin](https://wordpress.org/plugins/cf7-redirections-integrations-and-database/).
# n8n
Source: https://www.ayrshare.com/docs/packages-guides/n8n
Integrate the Ayrshare social media API into your n8n workflows to publish, schedule, and analyze your users' social media accounts.
## Overview
[n8n](https://n8n.io) is a workflow automation platform that lets you connect apps and orchestrate processes, including AI agents, on Cloud or self-hosted.
The Ayrshare social media API can be integrated into your n8n workflows to manage your users' social media accounts. One API call publishes to Facebook, Instagram, LinkedIn, YouTube, TikTok, Pinterest, Reddit, Threads, Bluesky, Telegram, Google Business Profile, Snapchat, and X, so you do not write or maintain per-platform API code.
There are two ways to connect:
- **MCP Server (agent-driven).** Attach the [Ayrshare MCP Server](/docs/additional/mcp-action-server) to n8n's built-in MCP Client Tool node, and your AI Agent can run the whole loop on its own: draft a post, validate it against each network's rules, publish or schedule it, then read the analytics back. There is nothing to host and no community node to install.
- **REST API (fixed workflow).** For deterministic, non-agent workflows, call the [Ayrshare REST API](/docs/apis/overview) directly from an HTTP Request node.
Managing your users' social accounts requires the [Business plan](/docs/multiple-users/business-plan-overview), but you can similarly manage your own social accounts with the Premium plan using just the [API Key](/docs/apis/overview#authorization) in the request header.
## How it connects
With the MCP path, the **AI Agent** node is the brain. The **MCP Client Tool** sub-node attaches to it, connects to the Ayrshare MCP Server, discovers the available tools, and exposes them to the agent. When the agent acts, the node dispatches the call to Ayrshare, which publishes to the networks.
```
Trigger -> AI Agent (+ Chat Model) -> MCP Client Tool -> Ayrshare MCP Server -> social networks
```
Use the **HTTP Streamable** transport, not SSE. The [n8n guide](/docs/additional/mcp-n8n) covers transport, authentication, and setup in detail.
## Guide
The full n8n guide covers the MCP-first path end to end: prerequisites, setting up the MCP Client Tool node, the validate-first system prompt, worked examples (draft and publish from a chat message, auto-publish new content, a weekly analytics digest), acting on behalf of clients with sub-profiles, keeping a human in the loop, the REST fallback, and troubleshooting.
Connect n8n's AI Agent to the Ayrshare MCP Server to publish, schedule, and analyze across your social networks, with no per-platform API code.
A ready-to-import workflow: Chat Trigger, AI Agent, an Anthropic chat model, and the Ayrshare MCP node pre-wired with the validate-first system prompt.
## Posting to X (formerly Twitter)
In n8n, switch the MCP Client Tool node's **Authentication** to **Multiple Headers** and add the two `X-Twitter-OAuth1-*` headers alongside `Authorization`. See [Connect & Setup → X/Twitter BYO credentials](/docs/additional/mcp-action-connect#xtwitter-byo-credentials).
## Learn more
- Learn more about [n8n](https://n8n.io) and its [AI Agent](https://docs.n8n.io/advanced-ai/) and [MCP Client Tool](https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.toolmcp/) nodes.
- See the [MCP Server overview](/docs/additional/mcp-action-server) for what the server is and how it maps to the Ayrshare API.
- Browse the [Tool Catalog](/docs/additional/mcp-action-tools) for the tools your agent can call, grouped by domain.
- Read [Connect & Setup](/docs/additional/mcp-action-connect) for endpoint, transport, authentication, and profile targeting details.
# Node.js NPM
Source: https://www.ayrshare.com/docs/packages-guides/nodejs
Integrate the Ayrshare API into your Node app with the Social API NPM Package
## Overview
Ayrshare's [Social API NPM Package](https://www.npmjs.com/package/social-media-api) allows you to integrate the Ayrshare API into your Node.js app.
### Installation
Install the Social API NPM Package if you use Node on the server-side.
The package simplifies the calls by wrapping the RESTful calls.
```bash theme={"system"}
npm i social-media-api
```
Obtain your secret API Key in the [Ayrshare Dashboard](https://app.ayrshare.com/).
### General Usage
Examples of Post, History, and Delete:
**Posting to X/Twitter?** As of March 31, 2026, X/Twitter operations through Ayrshare require your own X Developer App credentials — Ayrshare enforces this on every X-bound call. Add the 2 BYO headers to your request. See the [setup guide](/docs/dashboard/connect-social-accounts/x-twitter-byo-keys) for details.
As of v1.3.0 the SDK includes a `setTwitterByo(apiKey, apiSecret)` helper that attaches the two required `X-Twitter-OAuth1-*` headers to every subsequent request:
```javascript theme={"system"}
const SocialPost = require("social-media-api");
const social = new SocialPost(API_KEY)
.setTwitterByo(MY_X_API_KEY, MY_X_API_SECRET);
await social.post({
post: "Hello from BYO",
platforms: ["twitter"]
});
```
Use `clearTwitterByo()` to drop the headers — useful when reusing one SDK instance across tenants:
```javascript theme={"system"}
social.clearTwitterByo().setTwitterByo(nextTenant.key, nextTenant.secret);
```
```javascript theme={"system"}
const SocialPost = require("social-media-api");
const API_KEY = "API KEY"; // get an API Key at ayrshare.com
const social = new SocialPost(API_KEY);
const run = async () => {
/** post */
const post = await social
.post({
post: "One more time",
platforms: ["twitter", "facebook", "linkedin"],
profileKey: "DJKJDK-SKDJKDJF" // used with a User Profile
})
.catch(console.error);
console.log(post);
/** history */
const history = await social.history().catch(console.error);
console.log(history);
/** delete */
const deletePost = await social.delete({ id: post.id }).catch(console.error);
console.log(deletePost);
};
run();
```
### Video Overview of the Social Media API NPM Package
Post to Social Media via an API
### Profile Key
You may specify the Profile Key for User Profile in the body of a POST or query of a GET with the `profileKey` field.
### Social API Demo
For a sample Node.js integration (using the RESTful API calls), see the GitHub repository:
The Social API Demo is a web application that allows users to compose, schedule, and post content
to multiple social media platforms simultaneously.
### More Information and Documentation
- [NPM Package](https://www.npmjs.com/package/social-media-api)
- [Github Repository](https://github.com/ayrshare/social-media-api)
- [Issue Discussion](https://github.com/ayrshare/social-media-api/issues)
# Notion
Source: https://www.ayrshare.com/docs/packages-guides/notion
Integrate the Ayrshare API into your Notion app to manage your users' social media accounts
## Overview
[Notion](https://notion.so) is a workspace app that combines note-taking, project management, wikis, and a customizable database into a GUI interface.
From Notion, you can build an interface to manage your users' social media accounts with Ayrshare's social media API, allowing you to post, get analytics, and manage comments.
## Tutorial
A video tutorial on how you can post to your social media networks directly from Notion.
Also see our [Notion API walk-through guide](https://www.ayrshare.com/blog/schedule-social-media-posts-from-notion/).
Github code of Notion social posting integration:
Post to your social media networks directly from Notion
### Create a Notion Database
In Notion, create a database in table view with the following column names and column types:
- `Post` as *Title column* type (you don't have a choice here with the column type)
-
`Platforms` as *Multi Select column* type with values: `facebook`, `instagram`, `twitter`,
`linkedin`, `tiktok`, and/or `telegram`.
- `Images` as *Files & Media column* type.
- `Profile Keys` as *Text column* type.
- `Status` as *Text column* type.
-
`Schedule Date` as *Date column* type with Date Format Month/Day/Year, Time Format 24 Hours, and
include time
These fields will be used in the script specified later in this page. Please note, some social networks "platforms" require images or videos. For example, Instagram requires an image or video and TikTok requires a video. Please see the [endpoints](/docs/apis/post/social-networks/facebook) for the different networks.
[See a live Notion example](https://ayrshare-example.notion.site/607c15ce7872456a879adbb0a5f17fdf?v=ee9f65a4afb24033813f245a45bc9e83)
### Enter in Test Post Data
We need some sample data to test the post. Here is a suggestion:
- `Post`: Enter "Happy New Year!"
-
`Platforms`: select one or more networks you have linked. Please be sure the name is lowercase.
- `Images`: Attach an [image](https://img.ayrshare.com/012/gb.jpg) or a video.
**You must upload an image to Notion.** You cannot use an image URL.
-
`Profile Keys`: If you are on the Business Plan or Launch Plan and want to post to a client's profile, enter
their Profile Key. Otherwise, leave blank.
-
`Status`: Enter "pending". The script only grabs records that are set to "pending". Please be
sure "pending" is lowercase.
-
`Schedule Date`: Leave blank since we'll just test immediate posting right now. Later you can
select a future date to schedule the post.
### Create Internal Integration in Notion
Go to the [My Integrations page](https://www.notion.so/my-integrations) in Notion and click on New Integration.
[Learn more about Notion Integrations](https://developers.notion.com/docs/getting-started#utilizing-notions-public-api-for-integrations).
You can name the integration "Ayrshare" to identify it easily and choose the appropriate workspace that will have the post data.
Finally, the default capabilities that have been selected for you will do. Submit to create the integration.
If successful, an internal integration token will be available to you. Note this for future steps in this page.
And gather your Notion integration token.
### Connect Notion Database to the Internal Integration
Open the Notion database that you created earlier. Click on the ellipsis on the top right corner of the page and go to **Add Connection**.
Here you can search for the internal integration you created in the previous step by the name you chose for it.
Once you click on the internal integration, you have now connected this Notion database to the integration.
### Run script to Send Posts from Notion
You can now run a script in your local environment that will read data from the Notion database and make a post through the Ayrshare API for each row in it with status of "pending".
Make sure to set the following environment variables used in the script:
-
`API_KEY`: this is `API Key` you get from Ayrshare. This is the primary API Key for your
Ayrshare primary profile.
-
`NOTION_DATABASE_ID`: Open the database you created earlier in this page and get the database ID
from the URL.
The database ID will be the value before the ?v= in the database page URL.
```html theme={"system"}
https://www.notion.so/company/?v=aaee9f
```
- `NOTION_KEY`: internal integration token from earlier.
Run the following JavaScript in a Node.js environment:
```bash theme={"system"}
git clone https://github.com/ayrshare/notion
```
- cd into the **notion** directory and run `npm install`.
-
Update the `.env` file with your Ayrshare `API_KEY`, Notion `NOTION_KEY` and
`NOTION_DATABASE_ID`.
- Run `node index.js`
You can run it at [Heroku](https://www.heroku.com/), [Digital Ocean](https://www.digitalocean.com/), or [Vercel](https://vercel.com/) in production.
If successful, all `pending` status columns will be changed to `success` and the posts will have been made to the appropriate social networks.
Post to your social media networks directly from Notion
# Python PyPI
Source: https://www.ayrshare.com/docs/packages-guides/python
Python PyPI client package for Ayrshare
## Overview
Ayrshare's [Social-Post-API PyPI Package](https://pypi.org/project/social-post-api/) allows you to integrate the Ayrshare API into your Python app.
### Installation
Install the [Social-Post-API PyPI Package](https://pypi.org/project/social-post-api/) if you use Python on the server-side. The package simplifies the calls by wrapping the RESTful calls.
Start by getting your secret API Key in [Ayrshare Dashboard](https://app.ayrshare.com/api).
Next, install the Python package:
```bash theme={"system"}
pip install social-post-api
```
### General Usage
Examples of Post, History, and Delete. Please see the [PyPI Package](https://pypi.org/project/social-post-api/) for more information.
**Posting to X/Twitter?** As of March 31, 2026, X/Twitter operations through Ayrshare require your own X Developer App credentials — Ayrshare enforces this on every X-bound call. Add the 2 BYO headers to your request. See the [setup guide](/docs/dashboard/connect-social-accounts/x-twitter-byo-keys) for details.
As of v1.3.0 the SDK includes a `set_twitter_byo(api_key, api_secret)` helper that attaches the two required `X-Twitter-OAuth1-*` headers to every subsequent request:
```python theme={"system"}
from ayrshare import SocialPost
social = SocialPost(API_KEY)
social.set_twitter_byo(MY_X_API_KEY, MY_X_API_SECRET)
social.post({"post": "Hello from BYO", "platforms": ["twitter"]})
```
Use `clear_twitter_byo()` to drop the headers — useful when reusing one SDK instance across tenants:
```python theme={"system"}
social.clear_twitter_byo().set_twitter_byo(next_tenant_key, next_tenant_secret)
```
```python theme={"system"}
from ayrshare import SocialPost
social = SocialPost('8jKj782Aw8910dCN') # get an API Key at ayrshare.com
# Required for any post that includes 'twitter' in platforms (BYO is enforced).
social.set_twitter_byo('YOUR_X_CONSUMER_KEY', 'YOUR_X_CONSUMER_SECRET')
# Post to Platforms Twitter, Facebook, and LinkedIn
postResult = social.post({'post': 'Nice Posting 2', 'platforms': ['twitter', 'facebook', 'linkedin'], 'profileKey': 'JKSDJI-JKKJKKJ'})
print(postResult)
# Delete (use the top-level Ayrshare post id from postResult['id'])
deleteResult = social.delete({'id': postResult['id']})
print(deleteResult)
# History
print(social.history())
```
### Profile Key
You may specify the Profile Key for User Profile in the body of a POST or query of a GET with the `profileKey` field.
### More Information and Documentation
- [PyPI Package](https://pypi.org/project/social-post-api/)
- [Github Repository](https://github.com/ayrshare/social-post-api-python)
- [Issue Discussion](https://github.com/ayrshare/social-post-api-python/issues)
# Retool
Source: https://www.ayrshare.com/docs/packages-guides/retool
Integrate the Ayrshare API into your Retool app to manage your users' social media accounts
## Overview
[Retool](https://retool.com/) is a very powerful internal no-code builder used extensively by companies such as Amazon, DoorDash, and Lyft. With Retool, you can build amazing workflows, such as automatically posting to social media, and it is easy to get started in a few minutes. We use Retool extensively ourselves.
In this walk-through video we will show how an agency or a marketing team can build their own social media management system using Retool without the need to touch code.
The final social app will let you enter in the post text, add an image, select which social networks you want to target including Facebook, Twitter, Instagram, and LinkedIn, and then send the post and get a response that the post succeeded.
Follow this video tutorial to build your own social media posting app using the leading social media API and the leading internal tools builder.
Social Media Scheduler Retool
## Build A X/Twitter Analytics App in Retool
This video is a tutorial which shows how you can build a Twitter Analytics app in Retool. Retool is one of the most powerful tools for building apps with little or no code needed.
In this video we explain how to do the following:
1. Create the HTTP Rest API call to get historical Tweets from Twitter.
2. Create a listview with the historical Tweets, including the post body, timestamp of creation, and a link to the Tweet on twitter.com.
3. Pull in analytics metrics including the count of likes, impressions, retweets, replies, profile clicks, and link clicks.
# Hurl
Source: https://www.ayrshare.com/docs/testing/hurl
Test your API requests with Hurl
[Hurl](https://hurl.dev/) is a command line tool that runs HTTP requests defined in a simple plain text format. It is great for quickly testing your API calls. You can learn more about [how to use Hurl](https://www.ayrshare.com/blog/hurl-run-and-test-http-api-requests/) on our blog.
After you are set up, you may use these .hurl files to run your test.
1. Update the var.env with your API Key.
2. Add in `profileKeys` to the requests if you are testing a user profile.
3. Modify the hurl files if you have not linked all the social networks.
Test Ayrshare's social media APIs using HURL scripts. Including testing posting images, videos,
and getting analytics.
# Post Verification
Source: https://www.ayrshare.com/docs/testing/post-verification
How Ayrshare verifies your posts to protect your accounts with the Social Post Verification System.
The Ayrshare Social Post Verification System analyzes your posts for compliance with the social networks' guidelines.
Most of the social networks have rules around what content is allowed to be posted and how frequently posts can be made.
Breaking these rules can result in your social account being locked, suspended, or even shadow banned.
[Shadow banning](https://www.ayrshare.com/blog/avoid-using-these-instagram-banned-hashtags/) is when
your social account is still active and you can still post, but users aren't seeing the posts
because the network banned you...but didn't tell you. Often a steep loss of engagement is an
indication of a shadow ban.
## Social Post Verification System
Every post sent through Ayrshare goes through a verification check to minimize the risk of being rejected by the social networks. This helps keep your social account in good standing with the networks.
The following are some of the checks performed by the Social Post Verification System:
-
Limit the number of repeat mentions. *We recommend to not mention the same handle more than once
a week.* Your own handle is always allowed. We also will limit the number of mentions per day to
stay in compliance with the [social networks' policies](/docs/testing/post-verification#mentions). A
connected social account may only mention the same handle once per day.
-
Prevent duplicate and similar posts. Please [see
below.](/docs/testing/post-verification#duplicate-and-similar-posts)
-
Spam detector to help prevent the social networks from marking your account as spam. This
includes reviewing the frequency of posting over a period of time to prevent abuse of the social
networks' services.
- Remove banned Instagram hashtag and hashtag count complies with guidelines.
-
Verify the post length meets the social networks' requirements. For example, is the tweet length
280 characters or less. Please see [TweetStorm](/docs/apis/post/social-networks/x-twitter) for using
Twitter Threads for longer posts.
-
Verify images and videos are valid and comply with network
[requirements](/docs/media-guidelines/overview).
- Check for URLs that go against the social networks' policies, such as adult content.
-
Check images for content deemed inappropriate by the social networks, such as adult content or
extreme violence.
-
Limit the number of post within a given time period. For example Instagram only allows 50 posts
per account during a rolling 24-hour period and LinkedIn only allows 150 posts per account every
24 hours.
## Duplicate and Similar Posts
**Every post should be as unique as possible.**
Cross-posting is sharing the exact same post across different social media networks, or on the same account multiple times. It is not recommended.
Your audience doesn't like the same story over and over again, and neither do the social networks.
The social networks frown on duplicate and similar posts. These posts get poor visibility and engagement, and sometimes the networks suspend or ban accounts with too many duplicate or similar posts.
The social network X, for example, explicitly **does not allow duplicate content** posted across multiple X handles. Violation of this rule will lead to a suspended account.
Ayrshare prevents duplicate and similar posts from being scheduled within **two days** of each other using several algorithms including [Dice's Co-Efficient](https://en.wikipedia.org/wiki/S%C3%B8rensen%E2%80%93Dice_coefficient).
Please see the [Max Pack Generate API endpoint](/docs/apis/generate/overview) on how to create variations of posts.
For more information on duplicate posts see [Dealing with Duplicate Posts](/docs/help-center/technical-support/dealing_with_duplicate_posts).
## Mentions
**Only mention users who have **clearly** indicated a desire to be contacted by you.** For example, if a user has directly mentioned your account or your brand name, thats a good sign that they're interested in receiving a response from you. Bulk or automated unsolicited mentions in response to generic or broad discussions of a topic or industry are prohibited. In the absence of other interactions, following your account does not constitute an intent to be automatically contacted by you.
Continuously mentioning the same handle in a short period, especially if the mentions are unsolicited or irrelevant, could lead to your account being restricted or banned due to spammy behavior.
**What This Means**
Every time you mention a handle, the handle's owner gets a notification of the mention. Mentioning the same handle repeatedly could be considered spam or even harassment by the social networks.
**Mention Restriction**
A connected Ayrshare social account may **only mention the same handle once per day** and are allowed up to **five mentions per post**. To prevent abuse, deleted posts with mentions count towards the total.
Ayrshare has established mention limits based on extensive experience with social network APIs. These restrictions reflect both official guidelines and observed practices of various platforms. The limits are designed to ensure users comply with each social network's policies and maintain good standing on these platforms.
**Recommendation**
*We recommend not mentioning the same handle more than once a week.* Instead of doing an @mention, use a hashtag such as #Name or just directly include the person/company's name in the post text. The social networks have great search engines that will surface the content.
## Recommended Posting Limits
We recommend limiting the number of post within a given time period to maximize views and engagement.
Some social networks have hard limits. For example, Instagram only allows 50 posts per account during a rolling 24-hour period, TikTok 15 per day, and LinkedIn 150 posts per day.
Ayrshare will ensure that the hard limits set by the networks are abided by.
Each social network has recommendations on daily post limits. Going over these limits typically *decreases views and engagement*.
When it comes to posting on the social networks, more is not necessarily better.
For example, Facebook recommends no more than 5 daily posts, and over 25 posts could negatively impact engagement and cause [partial blocking](/docs/help-center/technical-support/facebook_or_instagram_account_restricted#facebook-message-we-limit-how-often-you-can-post-comment-or-do-other-things-in-a-given-amount-of-time-in-order-to-help-protect-the-community-from-spam-you-can-try-again-later).
In other words, if you post above the recommended limit the social network will likely deem you a spammer and start hiding your content.
You also want to be cautious if you're posting on a newly created social account. The social networks will often block new accounts that post too frequently.
The following are the recommended social posting limits:
| Social Network | Recommended Daily Limits |
| :----------------- | -----------------------: |
| Bluesky | 50 |
| Facebook | 25 |
| Google My Business | 15 |
| Instagram | 30 |
| LinkedIn | 25 |
| Pinterest | 20 |
| Reddit | 40 |
| Snapchat | 30 |
| Telegram | 25 |
| Threads | 50 |
| TikTok | 15 |
| X | 50 |
| YouTube | 10 |
While we try not to limit your posting, we will halt posting on a social network if we detect that you are posting too frequently over a period of time.
This is to help protect your account from being suspended or banned and to be good partners with the social networks.
**All posts are subject to Ayrshare's fair use policy to prevent abuse of the social networks' services.**
## Banned Hashtags
[Banned Instagram](https://www.ayrshare.com/blog/avoid-using-these-instagram-banned-hashtags/) hashtags automatically removed from posts.
## X Automated Label
X allows you to label your X account as "Automated". This is required by X for all accounts that send automated, programmatically generated posts.
For example if you automated weather, stock, or news updated that had no human intervention is writing.
One of the benefits of this label is that other X users will have better transparency and insight into tweets that come from bots.
### How to Turn on Twitter Automated Bot Label
Please turn on the Automated label by:
1. Log into your X account.
2. Go to your account settings.
3. Select "Your account".
4. Select "Automation".
5. Select "Managing account".
6. Next, select the X account, which runs your bot account. This is required to identify the owner of the bot account.
7. Enter your password to log in.
8. Finally, you should see confirmation that the label has been applied to your account.
For additional information see [here](https://www.ayrshare.com/blog/twitter-launches-automated-label-for-bots/).
# Postman
Source: https://www.ayrshare.com/docs/testing/postman
Test your REST API calls with Postman
Postman is a great tool to test HTTP API endpoint calls. We recommend first using Postman to more easily diagnose issues.
Click the "Run in Postman" button to ***fork a version in Postman*** for the web:
[](https://god.gw.postman.com/run-collection/7602335-776bf0f9-c710-43cf-b3a2-7987801887f3?action=collection%2Ffork\&collection-url=entityId%3D7602335-776bf0f9-c710-43cf-b3a2-7987801887f3%26entityType%3Dcollection%26workspaceId%3Dcf2bf012-ff59-48a6-ba37-cf4864d2e43c)
After forking we recommend you [download Postman](https://www.postman.com/downloads/) for free and use locally.
The desktop version is more reliable and has more features.
Be sure to set your `Authorization: Bearer API_Key` value or Profile Key in the header.
Also, set the environment variable of \{API\_Key} with your API\_KEY.
**Postman Tips**
- You can add a variable value, such as a global variable like API\_KEY to make
it easier to make your API calls in Postman. [More details how to do
this](https://learning.postman.com/docs/sending-requests/variables/variables/)
on the Postman site.
- You can send an array as a variable in the Postman body set as x-www-form-urlencoded by setting the key with a \[0] value. For example, to send a post, you can set the key platforms\[0] to the first value and platforms\[1] for the second value.
## Test with Random Text and Images
We also recommend you test with [random text and images](/docs/quickstart#publish-test-posts) so your accounts are not locked by the social networks.
## Auto Generate API Code with Postman
You can even automatically generate code directly from Postman in most programming languages - Node.js, PHP, Python, C#, and more. See the video for details on how to use Postman and generate code.
# Validation Endpoints
Source: https://www.ayrshare.com/docs/testing/validation-endpoints
Validate social posts, JSON, and media
Please see here for more information validation endpoints:
Validate social posts, JSON, and media