> ## Documentation Index
> Fetch the complete documentation index at: https://www.ayrshare.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Bluesky API

> Options for posting using the Bluesky API

export const PlansAvailable = ({plans = [], maxPackRequired}) => {
  let displayPlans = plans;
  if (plans && plans.length === 1) {
    const lowerCasePlan = plans[0].toLowerCase();
    if (lowerCasePlan === "business") {
      displayPlans = ["Launch", "Business", "Enterprise"];
    } else if (lowerCasePlan === "premium") {
      displayPlans = ["Premium", "Launch", "Business", "Enterprise"];
    }
  }
  return <Note>
Available on {displayPlans.length === 1 ? "the " : ""}
{displayPlans.join(", ").replace(/\b\w/g, l => l.toUpperCase())}{" "}
{displayPlans.length > 1 ? "plans" : "plan"}.

{maxPackRequired && <span onClick={() => window.open('https://www.ayrshare.com/docs/additional/maxpack', '_self')} className="flex items-center mt-2 cursor-pointer">
 <span className="px-1.5 py-0.5 rounded text-sm" style={{
    backgroundColor: '#C264B6',
    color: 'white',
    fontSize: '12px'
  }}>
   Max Pack required
 </span>
</span>}
</Note>;
};

## Posting to Bluesky

JSON for a basic post with a link, hashtag, and image/video using the Bluesky API.
Please see [Bluesky Media Guidelines](/media-guidelines/bluesky) and [Bluesky Authorization](/dashboard/connect-social-accounts/bluesky) for more information.:

<CodeGroup>
  ```json Bluesky Post with Image theme={"system"}
  {
    "post": "The best Bluesky image post ever #best", // Max 300 characters or empty string
    "mediaUrls": ["https://img.ayrshare.com/012/gb.jpg"],
    "platforms": ["bluesky"]
  }
  ```

  ```json Bluesky Post with Video theme={"system"}
  {
    "post": "The best Bluesky video post ever https://www.google.com", // Max 300 characters or empty string
    "mediaUrls": ["https://img.ayrshare.com/012/vid.mp4"],
    "platforms": ["bluesky"]
  }
  ```
</CodeGroup>

### Bluesky Supported Features

<ul class="custom-bullets">
  <li>Bluesky supports text, images (up to 4), video (only 1), and posts with links or emojis.</li>
  <li>Up to 4 images or one videos can be sent in a single post.</li>
  <li>The post text is limited to 300 characters.</li>
  <li>Animated GIFs are supported and sent as videos.</li>
  <li>Bluesky does support hashtags and mentions (@handle).</li>
  <li>Alt text on images or videos.</li>
  <li>See [Bluesky Media Guidelines](/media-guidelines/bluesky) for more information.</li>

  <li>
    Link previews in posts are supported. Include a link in the post text and the Ayrshare API will
    automatically add a link preview to the post.
  </li>
</ul>

### Bluesky Unsupported Features

<ul class="custom-bullets">
  <li>Video thumbnails are not yet supported by Bluesky.</li>
</ul>

## Bluesky Mentions

Mention another Bluesky handle by adding `@handle` in the post text. For example:

```json Bluesky Post with Mention theme={"system"}
{
  "post": "The best Bluesky image post ever @handle",
  "platforms": ["bluesky"]
}
```

<Warning>
  Please review the [important rules](/testing/post-verification#mentions) on mentions.
</Warning>

## Alternative Text

Add Bluesky alternative text, also known as alt text, to an image or video.
Bluesky alt text is an accessibility feature used for additional user info and screen readers.

Use the `altText` in the `blueSkyOptions` object.

```json Bluesky Alt Text theme={"system"}
{
  "blueSkyOptions": {
    // Array of Alt Texts
    "altText": ["This is my best pic", "😃 here is the next one"]
  }
}
```

Each alt text must correspond to an image or video in the `mediaUrls` array.
The alt text will be applied to each media item in order.

## Character Limits

Please see [Bluesky Character Limits](/help-center/technical-support/character_limits#bluesky-character-limits) for more information.
