All pages
Powered by GitBook
1 of 20

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Content Types

A comprehensive overview of all content formats you can publish via the Publer API. Each content type is specified by the type field inside the networks.[provider] object.

Supported Content Types

Network

Supported Content Types

Facebook

status, photo, video, link, carousel, story, reel, gif

Instagram

photo, video, carousel, story, reel

Twitter/X

status, photo, video, link, gif, poll

LinkedIn

status, photo, video, link, document, poll, gif

Pinterest

photo, video, carousel

Google Business

status, photo, event, offer

YouTube

video, short

TikTok

video, photo, carousel

WordPress

article

Telegram

status, photo, video, link, gif

Mastodon

status, photo, video, link, gif, poll

Threads

status, photo, video, link

Bluesky

status, photo, video, link

Best Practices

Content Optimization

  • Test each format on a single account before scaling.

  • Use network-specific overrides to tailor text length, captions, and metadata.

  • Always provide alt_text for images to enhance accessibility.

  • Follow each platform’s style and character limits for optimal engagement.

Technical Considerations

  • Preprocess media (resize, compress) before upload to meet platform requirements.

  • Verify media upload success before referencing media IDs in your post payload.

  • Review provider documentation for specific limits (e.g., LinkedIn document size, TikTok clip length).

  • Poll the job status endpoint to ensure the content was processed and published without errors.

Related Topics

  • Media Handling - Detailed guide for uploading and managing media

  • Network Reference - Platform-specific capabilities and limitations

  • Publishing Methods - Ways to publish different content types

Twitter/X Long-Form Posts

Unlock the ability to schedule and publish long-form posts (up to 25,000 characters) to Twitter/X using the Publer API—exclusively for accounts with an X Premium subscription.

Overview

Twitter/X supports long-form posts (sometimes called "long posts" or "extended tweets") for users with an X Premium (formerly Twitter Blue) subscription, even at the Basic tier. These posts can contain up to 25,000 characters, far exceeding the standard 280-character limit.

With Publer, you can programmatically schedule and publish long-form posts via the API. Publer automatically detects your account’s eligibility and switches to the appropriate post type.

How It Works

  • Accounts with X Premium: You can create and schedule long-form posts up to 25,000 characters.

  • Accounts without X Premium: Your post text will be truncated to the standard 280-character limit, and the long-form post type will be disabled.

Tip: Validate the post length in your integration to avoid surprises when publishing.

Key Differences

  • Long-form posts are not the same as Twitter threads. Threads are multiple connected posts; long-form posts are a single post with expanded character count.

  • Scheduling long-form posts is not possible directly on X/Twitter—use Publer’s API or platform to achieve this functionality.

Request Example

To schedule a Twitter/X long-form post, set the network type to "long_post" inside the details object for the "twitter" network:

{
  "bulk": {
    "state": "scheduled",
    "posts": [
      {
        "networks": {
          "twitter": {
            "type": "status",
            "details": {
              "type": "long_post"
            },
            "text": "This is a twitter long post"
          }
        },
        "accounts": [
          {
            "id": "66e011b94e299eb49376c715",
            "scheduled_at": "2025-09-24T14:16+02:00"
          }
        ]
      }
    ]
  }
}
Field
Type
Description

networks.twitter.details.type

string

Must be "long_post" for long-form posts

networks.twitter.text

string

Content of your long-form post (max 25,000 characters with X Premium)

Important Notes

  • X Premium Required: Only X Premium accounts can publish long-form posts. For other accounts, posts will be truncated to 280 characters.

  • Not for Threads: Use this format for single extended posts, not for multi-part threads.

  • API Detection: Publer automatically detects account eligibility for long-form posting.

  • Scheduling Limitation: Twitter/X doesn’t natively support scheduling long-form posts; this is enabled via Publer’s platform and API.

Best Practices

  • Check your account’s X Premium status before relying on long-form functionality.

  • Always validate post length to ensure your content is not unintentionally truncated.

  • Use long-form posts for in-depth announcements, articles, or detailed updates—threads remain better for sequential storytelling.

Related Topics

  • Content Types Overview

  • Publishing Methods

Text Posts

Simple yet powerful status updates without media attachments. Text posts are widely supported, versatile, and often drive high engagement.

Overview

Text posts (status updates) let you share plain-text messages across all major social networks. With the Publer API you can:

  • Publish or schedule text updates simultaneously to multiple platforms

  • Customize each network’s copy to match character limits and conventions

  • Leverage network-specific features: hashtags, mentions, rich formatting

Key Features

  • Cross-Platform Publishing Send consistent or tailored copy to every network in one API call.

  • Character Limit Handling Automatic enforcement of each platform’s text length.

  • Rich Text Support Use hashtags, emojis, and markdown styling where supported.

  • Flexible Scheduling Instant publish, scheduled posts, or auto-optimized time slots.

Platform Support & Limitations

Network

Character Limit

Notes

Facebook

10,000

Full text supported with formatting

Twitter/X

280

25,000 for premium accounts

LinkedIn

3,000

Supports formatting like bold, italic

Instagram

2,200

For feed post captions

Google Business

1,500

For business updates

Pinterest

500

For pin descriptions

Telegram

4,096

Per message

Mastodon

500+

Varies by server (usually 500 minimum)

Threads

500

Maximum length

Bluesky

300

Maximum length

Request Structure

Below is an example showing a text post scheduled for multiple platforms:

{
  "bulk": {
    "state": "scheduled",
    "posts": [
      {
        "networks": {
          "facebook": {
            "type": "status",
            "text": "Exciting news! We're launching our new product line next week. #NewLaunch #ProductAnnouncement"
          },
          "twitter": {
            "type": "status",
            "text": "Big announcement coming next week! Our new product line is almost here 🚀 #NewLaunch #ProductAnnouncement"
          },
          "linkedin": {
            "type": "status", 
            "text": "We're thrilled to announce our new product line launching next week. Stay tuned for more details! #NewLaunch #ProductAnnouncement"
          }
        },
        "accounts": [
          {
            "id": "account_id_for_facebook",
            "scheduled_at": "2025-05-20T14:30:00Z" // Optional, depending on publishing method
          },
          {
            "id": "account_id_for_twitter",
            "scheduled_at": "2025-05-20T15:00:00Z" // Optional, depending on publishing method
          },
          {
            "id": "account_id_for_linkedin",
            "scheduled_at": "2025-05-20T16:00:00Z" // Optional, depending on publishing method
          }
        ]
      }
    ]
  }
}

Required Parameters

Field
Description

networks.{provider}.type

Must be set to "status"

networks.{provider}.text

Your post copy string

accounts[].id

Target social account ID

accounts[].scheduled_at

ISO 8601 timestamp (for scheduling)

Best Practices

  • Optimize per Platform Tailor messaging length and tone: concise on Twitter, detailed on LinkedIn.

  • Use Hashtags Strategically Add relevant tags to boost discoverability; match platform conventions.

  • Schedule for Peak Times Publish when your audience is most active across time zones.

  • Include Clear CTAs Encourage engagement with direct calls-to-action.

  • A/B Test Variations Schedule multiple text variants to measure which resonates best.

Related Topics

  • Publishing Methods

  • Media Handling

  • Content Types

Post with Signature

Automatically append a branded or informative signature to your social posts. Signatures help drive consistency and professionalism across your accounts.

Overview

A signature is a reusable block of text (such as a disclaimer, call-to-action, or branded tagline) you can attach to posts on supported networks. You can manage multiple signatures per account and select which one to append when scheduling or publishing.

Step 1: Fetch Available Signatures

Before attaching a signature to your post, retrieve the available signatures for your account(s):

Step 2: Create or Schedule a Post with a Signature

When scheduling or publishing a post, use the signature parameter within the relevant accounts object to append a signature to the post.

Example Request:

Parameters

Field
Type
Description

Key Notes & Limitations

  • Account-specific: Up to 10 signatures per account.

  • Supported Networks: Most networks except Twitter/X and Bluesky (unless you have X Premium, due to character limits).

  • Photo Captions: On Facebook, configure whether the signature is included in photo captions for multi-photo posts.

  • Auto-Share: Signatures are not included when you auto-share a scheduled post.

  • Signature Management: Signatures must be created and managed for each social account individually.

Best Practices

  • Craft signatures that reinforce your brand identity.

  • Use signatures for legal disclaimers, campaign CTAs, or promotional blurbs.

  • Set a default signature for frequent use.

Related Topics

Twitter/X Community Posts

Publish posts directly to Twitter/X Communities using the Publer API. This feature enables you to reach targeted audiences and participate in focused discussions within X Communities—right from your own app or workflow.

Overview

Twitter/X Communities are spaces for people to connect, share, and discuss specific topics. Posts made in a Community are visible to anyone on X, but only Community members can engage (like, reply, etc.) with them.

  • You can only post to Communities you have joined.

  • Community posts help foster deeper engagement on niche topics or interests.

How It Works

To publish a post inside a Twitter/X Community via the API, you need:

  • The Community ID (found in the X Community URL: https://x.com/i/communities/{COMMUNITY_ID})

  • The Community Name (for reference and clarity)

  • Whether to share the post with followers or not

Example Request

Set the community object inside the details for the twitter network configuration:

Field
Type
Description

How to Find the Community ID

  1. Go to the Community on X.

  2. Look at the URL: https://x.com/i/communities/1492410432069451776

  3. The number at the end is your COMMUNITY_ID.

Important Notes

  • Membership Required: You must be a member of the Community to post.

  • Engagement: Only members can engage with Community posts, but all users can view them.

  • Visibility: Community posts are public, but participation is limited to members.

  • Scheduling: You can schedule Community posts just like any other X post using Publer.

Best Practices

  • Join Relevant Communities: Ensure your X account has joined the Communities you wish to post in.

  • Use for Focused Engagement: Target posts to specific Communities for more relevant discussions.

  • Check Community Guidelines: Each Community may have its own moderation and content rules.

Related Topics

{
  "bulk": {
    "state": "scheduled",
    "posts": [
      {
        "networks": {
          "twitter": {
            "type": "status",
            "details": {
              "community": {
                "id": "1508851391443484686",
                "share_with_followers": true,
                "name": "ALBANIANS"
              }
            },
            "text": "Post to X communities"
          }
        },
        "accounts": [
          {
            "id": "66e011b94e299eb49376c715",
            "scheduled_at": "2025-07-03T10:28+02:00"
          }
        ]
      }
    ]
  }
}

networks.twitter.details.community.id

string

Community ID (from the Community URL)

networks.twitter.details.community.name

string

Name of the Community (optional, for clarity in requests/logs)

networks.twitter.details.community.share_with_followers

boolean

Whether to share the post with followers or not (defaulted to true)

Twitter/X Long-Form Posts
Content Types Overview

GIF Posts

Animated GIFs are a fun, engaging way to capture attention. Use the Publer API to create or schedule single‐GIF posts with caption and thumbnail support across multiple platforms.

Overview

GIF posts let you share looping animations with optional captions and metadata. Perfect for reactions, announcements, or adding personality to your feed.

Key Features

  • Cross-Platform GIF Publishing

  • Custom Caption Support

  • Thumbnail Preview

  • Immediate or Scheduled Posting

Platform Support & Limits

Network
Size Limit
Notes

Facebook

4 MB

—

Twitter/X

15 MB

4×4 to 2048×2048 px resolution

LinkedIn

Unlimited

Native GIF support

Telegram

50 MB

—

Mastodon

8 MB

Supports JPEG, PNG, WEBP, and GIF

Pinterest

Unlimited

—

Request Structure

Send to the scheduling endpoint (/posts/schedule) or immediate‐publish (/posts/schedule/publish):

POST /api/v1/posts/schedule
{
  "bulk": {
    "state": "scheduled",
    "posts": [
      {
        "networks": {
          "facebook": {
            "type": "gif",
            "text": "Check out this fun GIF!",
            "media": [
              {
                "id": "external",
                "type": "gif",
                "url": "https://media.giphy.com/media/xyz/giphy.gif",
                "path": "https://media.giphy.com/media/xyz/giphy.gif",
                "thumbnail": "https://media.giphy.com/media/xyz/200w.webp",
                "name": "Fun Reaction GIF"
              }
            ]
          }
        },
        "accounts": [
          { 
            "id": "ACCOUNT_ID", 
            "scheduled_at": "2025-08-02T23:18:00+02:00" 
          }
        ]
      }
    ]
  }
}

Required Parameters

Field
Description

networks.{provider}.type

Must be "gif".

networks.{provider}.media

Array of exactly one media object

networks.{provider}.media[].id

"external" or your uploaded media ID

networks.{provider}.media[].type

Must be "gif".

networks.{provider}.media[].url

Direct URL to the GIF file

networks.{provider}.media[].path

Same as URL or CDN path

networks.{provider}.media[].thumbnail

URL to a GIF thumbnail (e.g., WebP format)

networks.{provider}.media[].name

Descriptive name or title for the GIF

accounts[].id

Target social media account ID

accounts[].scheduled_at

ISO 8601 timestamp for scheduling (omit for immediate)

Workflow

  1. Reference or upload your GIF via the Media Handling API.

  2. Build your post object with "type": "gif".

  3. (Optional) Add "thumbnail" and "name" for preview.

  4. Call /posts/schedule or /posts/schedule/publish.

  5. Monitor /api/v1/job_status/{job_id} for completion.

Best Practices

  • Compress GIFs to meet platform size limits without sacrificing quality.

  • Provide a clear, engaging thumbnail to boost click-through.

  • Use concise captions to add context or calls-to-action.

Related Topics

  • Platform-Specific Formats

  • Publishing Methods

  • Content Types

Platform-Specific Formats

Each social network offers unique post formats. Publer’s API supports these specialized types—click a format to dive into its implementation details:

  • Text Posts with Background

  • Multi-Link Posts (Facebook Carousels)

  • Polls

  • LinkedIn PDF Carousels

  • Pinterest Pins with a Link URL

  • Google Events, Offers, and Photos

  • Reels, Shorts, or Stories

Best Practices

  • Choose the Right Format Select the layout that matches your content goal and platform norms.

  • Follow Platform Guidelines Observe character limits, aspect ratios, and file-size rules.

  • Enhance Engagement Interactive formats (polls, carousels) tend to drive higher user interaction.

  • Test & Iterate Experiment across formats to discover what resonates best with your audience.

Related Topics

  • Media Handling

  • Publishing Methods

  • Content Types

{
  "bulk": {
    "state": "scheduled",
    "posts": [
      {
        "networks": {
          "facebook": {
            "type": "status",
            "text": "Check out our latest news!"
          }
        },
        "accounts": [
          {
            "id": "63c675b54e299e9cf2b667ea",
            "scheduled_at": "2025-06-13T10:16:00+02:00",
            "signature": "680fa73ebd7195d33da6630b"
          }
        ]
      }
    ]
  }
}

accounts[].id

string

Target account ID

accounts[].scheduled_at

string

ISO 8601 timestamp for scheduling (omit for immediate publishing)

accounts[].signature

string

Signature ID to append (from the fetched signatures for this account)

networks.{provider}.type

string

Post type (e.g., "status", "photo", etc.)

networks.{provider}.text

string

Main post text (the signature is appended to this on publish)

Publishing Methods
Content Types
Media Handling

Post with Location

Tag your posts with a real-world location to increase engagement and reach more local audiences. Publer supports location tagging for Facebook Pages, Instagram Business accounts and Threads accounts.

Overview

Location tagging attaches a physical place (such as a city, office, or venue) to your Facebook, Instagram or Threads post. This is especially helpful for businesses, events, and local marketing.

Step 1: Search for a Location

Use Publer’s dedicated endpoints to search and select the correct location for your post:

Location Object Example:

{
  "id": "308281375929281",
  "name": "Tirana",
  "info": "Tirana, Albania ⋅ 590 follow this",
  "verified": true
}

Step 2: Schedule or Publish a Post with a Location

When creating or scheduling a post, use the location object inside the relevant accounts array:

Example Request:

{
  "bulk": {
    "state": "scheduled",
    "posts": [
      {
        "networks": {
          "facebook": {
            "type": "status",
            "text": "Facebook location"
          }
        },
        "accounts": [
          {
            "id": "63c675b54e299e9cf2b667ea",
            "scheduled_at": "2025-06-14T10:21:00+02:00",
            "location": {
              "id": "308281375929281",
              "name": "Tirana",
              "info": "Tirana, Albania ⋅ 590 follow this",
              "verified": null,
              "address": "Tirana, Albania",
              "checkins": "590"
            }
          }
        ]
      }
    ]
  }
}

Parameters

Field
Type
Description

accounts[].id

string

Target account ID

accounts[].scheduled_at

string

ISO 8601 timestamp for scheduling (omit for immediate publish)

accounts[].location

object

Location object to tag (see below)

location.id

string

Unique identifier of the location (from search results)

location.name

string

Name of the location

location.info

string

Additional info about the location (optional)

location.verified

boolean

Whether the location is verified (optional)

location.address

string

Physical address (optional)

location.checkins

integer

Number of check-ins (optional)

Key Notes & Limitations

  • Supported Networks: Location tagging is supported for Facebook Pages, Instagram Business and Threads accounts only.

  • Media Types Restrictions: You cannot add locations to Facebook regular videos, GIFs, Stories, or Reels scheduled via reminders.

  • Other Networks: Twitter/X no longer supports location tagging via API.

  • Search Required: Always search and select the correct location using the endpoints above before scheduling your post.

Best Practices

  • Always verify the location by name and address before tagging.

  • Tagging your business or event location can boost local discovery and engagement.

  • Use location tags for promotions, events, or posts relevant to specific regions

Related Topics

  • Publishing Methods

  • Content Types

  • Media Handling

Photo Posts

Visual content that drives engagement across social networks. Use photo posts to share high-quality images—single or multiple—while respecting each platform’s unique requirements.

Key Features

  • Multi-Platform Publishing Post images simultaneously to all supported networks.

  • Multiple Image Support Single photos or carousels (up to platform limits).

  • Advanced Customization Captions, alt text, and location tags where available.

  • Resolution Optimization Automatic resizing and format handling per network.

Platform Support & Limits

Platform
Max Photos
Photo Size Limit
Caption Support
Notes

Facebook

Unlimited

No restriction

Yes

Supports alt text, no restrictions on photo size.

Instagram

10

8 MB

Yes

Minimum resolution: 320x320 px, automatically cropped.

TikTok

35

No restriction

No

Cannot mix photos with GIFs or videos.

Threads

20

8 MB

No

Cannot mix photos with GIFs or videos.

Twitter

4

5 MB

No

Supports only up to 4 photos per post.

LinkedIn

20

No restriction

No

Photos and GIFs are supported, cannot mix with videos.

Telegram

10

10 MB

No

Cannot mix photos with GIFs or videos.

Mastodon

4

8 MB

No

Supports JPEG, PNG, or WEBP formats.

Request Structure

Below is an example showing a photo post scheduled for multiple platforms.

Omit scheduled_at for immediate posts.

{
  "bulk": {
    "state": "scheduled",
    "posts": [
      {
        "networks": {
          "facebook": {
            "type": "photo",
            "text": "Our new office is complete! #OfficeLife",
            "media": [
              {
                "id": "asset123456",
                "type": "photo",
                "alt_text": "Modern office with open layout"
              },
              {
                "id": "asset123457",
                "type": "photo",
                "alt_text": "Collaborative meeting area"
              }
            ]
          },
          "instagram": {
            "type": "photo",
            "text": "We’ve moved into our new HQ! 🏢✨",
            "media": [
              { "id": "asset123456", "type": "photo", "alt_text": "Modern office space" },
              { "id": "asset123457", "type": "photo", "alt_text": "Meeting area" }
            ]
          }
        },
        "accounts": [
          { "id": "FB_ACCOUNT_ID", "scheduled_at": "2025-05-20T14:30:00Z" },
          { "id": "IG_ACCOUNT_ID", "scheduled_at": "2025-05-20T15:00:00Z" }
        ]
      }
    ]
  }
}

Required Parameters

Field
Description

networks.{provider}.type

Must be "photo".

networks.{provider}.media

Array of { id, type, alt_text? } objects.

accounts[].id

Target social account ID.

accounts[].scheduled_at*

ISO 8601 timestamp for scheduling (optional).

* Omit scheduled_at when publishing immediately.

Media Workflow

  1. Upload Images: Use the Media Handling API to upload files.

  2. Receive IDs: Note each media object’s id.

  3. Compose Post: Reference those IDs in your media array.

  4. Publish/Schedule: Send the payload to the posts endpoint.

Best Practices

  • Optimize Quality: Compress and resize images to platform specs.

  • Descriptive Alt Text: Enhance accessibility and SEO.

  • Tailor Captions: Adjust tone and length per network.

  • Experiment Carousels: Test image order to boost engagement.

  • Consistent Branding: Use uniform styles and watermarks.

Related Topics

  • Media Handling

  • Content Types

  • Publishing Methods

Post with Watermark

Protect your creative content and reinforce your brand by automatically applying watermarks to photos and videos you share across your social accounts.

Overview

A watermark is a logo or symbol placed on your media to discourage unauthorized use and promote your brand. With Publer, you can save, manage, and apply unique watermarks per account—no editing skills required.

Watermarking is available on the Professional Plan for images and the Business Plan for videos.

Step 1: Fetch Available Watermarks

Use the Media Options endpoint to get all saved watermarks for your account(s):

Response Example:

[
  {
    "id": "63c675b54e299e9cf2b667ea",
    "albums": [],
    "watermarks": [
      {
        "id": "680fa7bebd7195d33da6630d",
        "name": "Brand Logo",
        "opacity": 80,
        "size": 6,
        "position": "bottom_right",
        "default": true,
        "image": "https://cdn.example.com/watermarks/logo.png"
      }
    ]
  }
]
  • Each watermark is account-specific.

  • You can create and manage multiple watermarks per account in Publer.

Step 2: Schedule or Publish a Post with a Watermark

When creating or scheduling a post, specify the full watermark object in the relevant accounts array. The watermark settings will be applied to all attached media.

Example Request:

{
  "bulk": {
    "state": "scheduled",
    "posts": [
      {
        "networks": {
          "facebook": {
            "type": "video",
            "text": "Watermark posts",
            "media": [
              {
                "id": "67da8532075cdb33821384c4",
                "name": "Follow your dreams.mp4",
                "path": "https://cdn.example.com/videos/67da8532075cdb33821384c4.mp4",
                "type": "video"
              }
            ],
            "details": {
              "type": "reel"
            }
          }
        },
        "accounts": [
          {
            "id": "63c675b54e299e9cf2b667ea",
            "scheduled_at": "2025-08-02T10:16:00+02:00",
            "watermark": {
              "id": "680fa7bebd7195d33da6630d",
              "name": "Brand Logo",
              "opacity": 80,
              "size": 6,
              "position": "bottom_right",
              "default": true,
              "image": "https://cdn.example.com/watermarks/logo.png"
            }
          }
        ]
      }
    ]
  }
}

Parameters

Field
Type
Description

accounts[].id

string

Target account ID

accounts[].scheduled_at

string

ISO 8601 timestamp for scheduling (omit for immediate publish)

accounts[].watermark

object

Watermark object to apply (see below)

watermark.id

string

Watermark ID (from fetched media options)

watermark.name

string

Watermark label

watermark.opacity

number

Opacity (0–100, higher = more opaque)

watermark.size

number

Relative size percentage (e.g., 6 = 6% of media size)

watermark.position

string

Position on media (bottom_right, top_left, etc.)

watermark.default

boolean

Whether this is the default watermark

watermark.image

string

URL to the watermark image (PNG recommended)

Best Practices

  • Use PNG logos with transparent backgrounds for cleaner results.

  • Place watermarks in corners with moderate opacity to protect without distracting.

  • Watermarking is available per account and per post—choose the right watermark for each audience.

Key Notes & Limitations

  • Plan Requirements: Watermarking images requires the Professional Plan, videos require the Business Plan.

  • Unlimited Media: No limit on the number of photos you can watermark per post.

  • Account-specific: Watermarks are managed and applied per account.

  • Media Orientation: Watermarks are applied consistently regardless of image/video orientation.

Related Topics

  • Media Options

  • Media Handling

  • Publishing Methods

Multi-Link Posts (Facebook Carousels)

Create and schedule multi‐link carousel posts on Facebook Pages. Carousels let you showcase up to 10 clickable cards—each with its own image, title, description, and call-to-action—in a single organic post.

Request Body

{
  "bulk": {
    "state": "scheduled",
    "posts": [
      {
        "networks": {
          "facebook": {
            "type": "carousel",
            "text": "Explore our top features!",
            "sublinks": [
              {
                "url": "https://publer.com",
                "title": "Publer Dashboard",
                "description": "Manage all your social accounts in one place.",
                "images": [
                  "https://cdn.publer.com/images/dashboard1.jpg",
                  "https://cdn.publer.com/images/dashboard2.jpg"
                ],
                "default_image": 0,
                "call_to_action": "LEARN_MORE"
              },
              {
                "url": "https://publer.com/pricing",
                "title": "Pricing Plans",
                "description": "Find the right plan for your team.",
                "images": [
                  "https://cdn.publer.com/images/pricing.jpg"
                ],
                "default_image": 0,
                "call_to_action": "SIGN_UP"
              }
            ]
          }
        },
        "accounts": [
          {
            "id": "63c675b54e299e9cf2b667ea",
            "scheduled_at": "2025-07-06T23:18:00Z"
          }
        ]
      }
    ]
  }
}

Parameters

networks.facebook

Field
Type
Description

type

string

Must be "carousel".

text

string

Caption shown above the carousel cards.

sublinks[]

array

List of carousel items (max 10).

sublinks[] Object

Field
Type
Description

url

string

Target link for this card.

provider_display

string

(Optional) Display domain or provider name.

title

string

Card title (overrides fetched metadata).

description

string

Card description (overrides fetched metadata).

images

string[]

Array of image URLs for this card.

default_image

integer

Index (0-based) of the default image in images.

call_to_action

string

CTA button type: NO_BUTTON, LEARN_MORE, SIGN_UP, etc.

phone_number

string

(Optional) Phone number for call-to-action cards.

customized

boolean

(Optional) true if overriding the link’s default thumbnail or metadata.

Key Notes & Limitations

  • Pages Only: Supported on Facebook Pages. Group posts will include only the first sublink.

  • Max Sublinks: Up to 10 cards per carousel.

  • No Cost: Carousel posts are organic (no ad spend).

  • Syncing: Published carousel posts can only sync back as regular link posts (no carousel structure).

Workflow

  1. Select Page Choose a Facebook Page account in the accounts array.

  2. Define Sublinks Provide url, title, description, and images for each card.

  3. Arrange Order Order sublinks as they should appear (array index defines order).

  4. Schedule or Publish

    • For scheduled: set scheduled_at under accounts.

    • For immediate: omit scheduled_at and use /posts/schedule/publish.

Best Practices

  • Engaging Thumbnails Use high-quality images that clearly represent each link.

  • Clear Titles & Descriptions Keep text concise and action-oriented to drive clicks.

  • Focused Carousels Limit to 5–7 cards to avoid overwhelming users.

  • A/B Test CTAs Experiment with LEARN_MORE, SIGN_UP, and other button types.

Related Topics

  • Platform-Specific Formats

  • Publishing Methods

  • Content Types

Pinterest Pins With a Link URL

Share visually engaging Pins with an external link URL to drive traffic from Pinterest boards.

Overview

Create or schedule a Pinterest Pin by setting type: "photo", adding your media, specifying url for the external link, and the album_id to select the destination board.

Key Features

  • Single API call to schedule or publish…

  • Supports up to 5 photos or 1 video per Pin

  • Clickable external URL

  • Specify the target board with album_id

  • Optional alt text for accessibility

Supported Features & Limits

Feature
Details

Request Structure

Parameters

Field
Type
Description

Workflow

  1. Select Account & Board Add your Pinterest account.id and target album_id.

  2. Upload/Reference Media Upload up to 5 photos or 1 video to Publer, then reference each with its id.

  3. Compose Pin

    • Set type: "photo".

    • Provide text, title, and url.

    • Optionally add alt_text.

  4. Schedule or Publish

    • To schedule, include scheduled_at.

    • To publish now, call /posts/schedule/publish or omit scheduled_at.

Best Practices

  • Use high-resolution images or video for best display.

  • Keep the title and text concise to encourage clicks.

  • Ensure the URL is valid and leads to valuable content.

  • Organize Pins into relevant Boards for better discoverability.

  • Add alt text for accessibility and SEO benefits.

Related Topics

LinkedIn PDF Carousels

Turn multiple images or documents into a scrollable PDF carousel in a single LinkedIn post. Perfect for presentations, portfolios, and multi-page documents.

Overview

Include type: "photo" and set details.type: "document" to bundle your media into a PDF carousel. You may upload images, PDFs, Word, or PowerPoint files up to 100 pages/photos.

Request Structure

Parameters

Field
Type
Description

Supported Features & Limitations

Feature
Details

Workflow

  1. Upload Media Use the to upload images or documents and collect their IDs.

  2. Compose Post

    • Set type: "photo", add media IDs.

    • Under details, set "type": "document".

    • Provide a title.

  3. Schedule or Publish

    • Add scheduled_at under accounts to schedule.

    • Omit scheduled_at to publish immediately.

Best Practices

  • Use high-resolution images or properly formatted documents for clarity.

  • Craft a concise title that accurately represents the carousel content.

  • Organize slides in logical order to guide viewers.

Related Topics

Link Posts

Share URLs with rich previews (title, description, image, and call-to-action) across your social networks via the Publer API.

Overview

Link posts display a URL preview alongside optional caption text. You control metadata (title, description, images, CTA) to enhance engagement.

Key Features

  • Rich previews with title, description, and image

  • Custom call-to-action buttons (e.g., LEARN_MORE, SIGN_UP)

  • Platform-specific metadata overrides

  • Schedule or publish immediately

Platform Support

Network
Preview Elements
Notes

Step 1: Extract Link Metadata

Before scheduling a link post, you can extract rich metadata from any URL using the /posts/links endpoint. This step is optional but highly recommended for accurate previews.

Use this extracted metadata to build your link post payload.

Step 2: Create or Schedule a Link Post

Use the unified scheduling endpoint (/posts/schedule) or the immediate-publish endpoint (/posts/schedule/publish):

Parameters

Field
Type
Description

Note: You can also include original_title, original_description, and original_images if you pre‐fetch metadata yourself, but only the link.* fields above are required.

Workflow

  1. Extract Metadata Use /posts/links to fetch title, description, and images from your target URL.

  2. Compose Metadata Define url, title, description, and images in the link object.

  3. Set Caption Add optional text to introduce or contextualize the link.

  4. Choose Default Image Use default_image to highlight your preferred preview image.

  5. Schedule or Publish

    • For future posts: include scheduled_at under accounts.

    • For immediate posting: call /posts/schedule/publish or omit scheduled_at.

Best Practices

  • Provide Complete Metadata: Supply title, description, and images for compelling previews.

  • Optimize Image Dimensions: Match each network’s recommended preview size for best display.

  • Use Clear CTAs: Select a relevant call_to_action to guide user action.

Related Topics

Polls

Create and schedule interactive polls on LinkedIn, Mastodon, and Twitter to engage your audience and gather feedback.

Key Features

  • Cross-Platform Polls: One payload to post polls on multiple networks

  • Flexible Duration: Support for platform-specific duration limits

  • Option Constraints: Enforce character limits and unique choices

  • Scheduling: Publish immediately or at a specified time

Supported Platforms & Limits

Network
Question Field
Options
Duration
Editable
Notes

Tip: When sending a multi-network poll, adhere to Twitter’s 25-character option limit and common duration (e.g., 1, 3, 7 days).

Request Structure

Use the unified scheduling endpoint:

Parameters

Field
Type
Description

Platform-Specific Notes

Twitter/X

  • Options live in options array; question must be in text.

  • 2–4 options, ≤25 characters each.

  • Cannot edit after publishing.

LinkedIn

  • Uses separate question and text.

  • Options ≤30 characters.

  • Up to 14-day duration.

Mastodon

  • Question goes in text.

  • Options ≤50 characters.

  • Poll can be edited after posting.

Best Practices

  • Keep questions clear and concise.

  • Use unique, contrasting options.

  • Align durations with campaign timelines.

Related Topics

Max Media

1 video or up to 5 photos

Supported Formats

JPEG, PNG, GIF, MP4

Link URL

External links only (use url field)

Alt Text

Optional (media[].alt_text)

Board Selection

Use accounts[].album_id to pick a Pinterest board

{
  "bulk": {
    "state": "scheduled",
    "posts": [
      {
        "networks": {
          "pinterest": {
            "type": "photo",
            "text": "Check out our new blog post!",
            "media": [
              {
                "id": "external-0",
                "type": "photo",
                "path": "https://cdn.example.com/images/post1.jpg",
                "thumbnail": "https://cdn.example.com/images/post1-thumb.jpg",
                "alt_text": "Screenshot of our blog homepage"
              }
            ],
            "title": "Our Latest Blog Article",
            "url": "https://publer.com/blog"
          }
        },
        "accounts": [
          {
            "id": "YOUR_PINTEREST_ACCOUNT_ID",
            "scheduled_at": "2025-07-05T14:16:00+02:00",
            "album_id": "934145216398624390"
          }
        ]
      }
    ]
  }
}

networks.pinterest.type

string

Must be "photo".

networks.pinterest.text

string

Caption or description for the Pin.

networks.pinterest.media

array

List of media objects (1 video or up to 5 photos).

networks.pinterest.media[].id

string

"external-X" or media ID from Publer.

networks.pinterest.media[].path

string

URL to the full-size image or video.

networks.pinterest.media[].thumbnail

string

URL to the thumbnail image.

networks.pinterest.media[].type

string

Must be "photo" or "video".

networks.pinterest.media[].alt_text

string

Accessible description of the image (optional).

networks.pinterest.title

string

Pin title displayed on hover.

networks.pinterest.url

string

Clickable external link URL.

accounts[].id

string

Pinterest account identifier.

accounts[].album_id

string

Board ID where the Pin will be posted.

accounts[].scheduled_at

string

ISO 8601 timestamp for scheduling (omit to publish immediately).

Platform-Specific Formats
Publishing Methods
Content Types
{
  "bulk": {
    "state": "scheduled",
    "posts": [
      {
        "networks": {
          "linkedin": {
            "type": "photo",
            "text": "Description",
            "media": [
              {
                "id": "680fa5cc48487c4ccbf8c146",
                "name": "",
                "caption": "Photo by KaLisa Veer on Unsplash:\n\nhttps://unsplash.com/photos/the-chrysler-building-is-framed-by-other-buildings-sdU2K71G8TI",
                "path": "https://publer-dev.s3.amazonaws.com/uploads/photos/680fa5cc48487c4ccbf8c146.jpg",
                "type": "photo",
                "thumbnail": "https://publer-dev.s3.amazonaws.com/uploads/photos/thumb_680fa5cc48487c4ccbf8c146.jpg"
              },
              {
                "id": "66f54e664e299e991eaafaeb",
                "name": "pexels-christian-heitz-285904-842711.jpg",
                "caption": null,
                "path": "https://publer-dev.s3.amazonaws.com/uploads/photos/66f54e664e299e991eaafaeb.jpg",
                "type": "photo",
                "thumbnail": "https://publer-dev.s3.amazonaws.com/uploads/photos/thumb_66f54e664e299e991eaafaeb.jpg"
              },
              {
                "id": "66f122324e299eb6bcc9af55",
                "name": "",
                "caption": "Photo by David Villasana on Unsplash:\n\nhttps://unsplash.com/photos/a-black-car-parked-in-front-of-a-white-building-Pf9KhOIylaM",
                "path": "https://publer-dev.s3.amazonaws.com/uploads/photos/66f122324e299eb6bcc9af55.jpg",
                "type": "photo",
                "thumbnail": "https://publer-dev.s3.amazonaws.com/uploads/photos/thumb_66f122324e299eb6bcc9af55.jpg"
              },
              {
                "id": "66df7c954e299e47dae172ac",
                "name": "Cabin life",
                "caption": "Photo by Karsten Winegeart on Unsplash:\n\nhttps://unsplash.com/photos/a-house-sitting-on-top-of-a-lush-green-hillside-xUyOWyCjJ_I",
                "path": "https://publer-dev.s3.amazonaws.com/uploads/photos/66df7c954e299e47dae172ac.jpg",
                "type": "photo",
                "thumbnail": "https://publer-dev.s3.amazonaws.com/uploads/photos/thumb_66df7c954e299e47dae172ac.jpg"
              },
              {
                "id": "66df7c8d4e299e47dae172ab",
                "name": "",
                "caption": "Photo by Edgar.infocus on Unsplash:\n\nhttps://unsplash.com/photos/a-car-driving-on-a-foggy-road-AwRcfU8T4dg",
                "path": "https://publer-dev.s3.amazonaws.com/uploads/photos/66df7c8d4e299e47dae172ab.jpg",
                "type": "photo",
                "thumbnail": "https://publer-dev.s3.amazonaws.com/uploads/photos/thumb_66df7c8d4e299e47dae172ab.jpg"
              },
              {
                "id": "66d04c6d4e299e51d9e1f747",
                "name": "5574042b224543ecaf6989f6725dd555.jpeg",
                "caption": null,
                "path": "https://publer-dev.s3.amazonaws.com/uploads/photos/66d04c6d4e299e51d9e1f747.jpeg",
                "type": "photo",
                "thumbnail": "https://publer-dev.s3.amazonaws.com/uploads/photos/thumb_66d04c6d4e299e51d9e1f747.jpeg"
              }
            ],
            "details": {
              "type": "document"
            },
            "title": "Title of the document"
          }
        },
        "accounts": [
          {
            "id": "64c90c0d4e299e38dc86a284",
            "scheduled_at": "2025-06-21T14:16+02:00"
          }
        ]
      }
    ]
  }
}

networks.linkedin.type

string

Must be "photo"

networks.linkedin.text

string

Post caption (optional)

networks.linkedin.media[]

array

Up to 100 items; each with "id" from Media Upload

networks.linkedin.details.type

string

Must be "document" to enable PDF carousel

networks.linkedin.title

string

Document title (required)

accounts[].id

string

LinkedIn profile or page account ID

accounts[].scheduled_at

string

ISO 8601 timestamp for scheduling (omit to publish immediately)

Max Items

100 photos/pages

Supported Formats

JPEG, PNG, PDF, DOCX, PPTX

Media Mix

No GIFs or videos—photos/documents only

Title Requirement

title field is mandatory

File Size

No explicit size limit for photos; follows Media API rules

Editing

Cannot change media type after scheduling

Media Upload API
Platform-Specific Formats
Publishing Methods
Content Types

Twitter/X

In text

2–4, ≤25 chars

Up to 7 days

No

Options limit applies across all networks

LinkedIn

Separate question

2–4, ≤30 chars

Up to 14 days

No

Mastodon

In text

2–4, ≤50 chars

Up to 7 days

Yes

POST /api/v1/posts/schedule
Content-Type: application/json
Authorization: Bearer YOUR_API_KEY

{
  "bulk": {
    "state": "scheduled",
    "posts": [{
      "networks": {
        "twitter": {
          "type": "poll",
          "text": "What’s your favorite season?",
          "options": ["Spring", "Summer", "Autumn", "Winter"],
          "duration": 7
        },
        "linkedin": {
          "type": "poll",
          "question": "What’s your favorite season?",
          "text": "Vote now!",
          "options": ["Spring", "Summer", "Autumn", "Winter"],
          "duration": 7
        },
        "mastodon": {
          "type": "poll",
          "text": "What’s your favorite season?",
          "options": ["Spring", "Summer", "Autumn", "Winter"],
          "duration": 7
        }
      },
      "accounts": [
        { "id": "TW_ACCOUNT_ID", "scheduled_at": "2025-06-10T09:00:00Z" },
        { "id": "LI_ACCOUNT_ID", "scheduled_at": "2025-06-10T09:00:00Z" },
        { "id": "MA_ACCOUNT_ID", "scheduled_at": "2025-06-10T09:00:00Z" }
      ]
    }]
  }
}

networks.{provider}.type

string

Must be "poll".

networks.{provider}.text

string

Caption or question (Twitter/Mastodon).

networks.linkedin.question

string

Poll question (LinkedIn only).

networks.{provider}.options

string[]

Array of 2–4 unique options.

networks.{provider}.duration

integer

Poll duration in days (platform max limits apply).

accounts[].id

string

Target social account ID.

accounts[].scheduled_at

string

ISO 8601 timestamp for scheduling (omit to publish immediately).

Text Posts
Platform-Specific Formats
Publishing Methods

Video Posts

Dynamic, high-impact video content for social networks. Video posts drive significantly more views and shares than static media, and the Publer API makes it easy to upload, configure, and schedule videos across multiple platforms.

Overview

Programmatically create and schedule video content—standard uploads, short-form (Reels/Shorts/Stories), and rich metadata (titles, descriptions, custom thumbnails)—while meeting each network’s format rules and size limits.

Key Capabilities

  • Cross-Platform Publishing One API call to distribute videos to Facebook, Instagram, YouTube, TikTok, LinkedIn, and more.

  • Format Versatility Support for standard videos, short-form (Reels, Shorts), and Stories.

  • Rich Metadata Attach titles, captions, and custom thumbnail selections.

  • Advanced Scheduling Schedule per time zone or publish immediately; poll job status for completion.

Platform Support & Specifications

Network
Video Types
Duration
Size Limit
Aspect Ratio
Additional Features

Facebook

Standard, Reels, Story

Standard: up to 5 h Reels: 3–90 s Stories: ≤60 s

< 2 GB

Flexible

Auto-captions, premiere scheduling

Instagram

Feed, Reels, Story

Feed: any Reels: 3 s–15 min Stories: ≤60 s

< 1 GB

1.91:1–4:5 (feed) 9:16 (Reels/Stories)

Location tagging, first comment

YouTube

Standard, Shorts

Standard: up to 12 h Shorts: up to 3 min

< 2 GB

16:9 (standard) 9:16 (Shorts)

Custom thumbnails, tags, categories

TikTok

Standard

3 s–10 min

< 2 GB

9:16 (recommended)

Sound attribution

LinkedIn

Standard

3 s–15 min

< 2 GB

1:2.4–2.4:1

Native profile/page posting

Pinterest

Standard

4 s–15 min

< 2 GB

—

—

Twitter/X

Standard

Up to 10 min

< 512 MB

Flexible

Alt text support

Telegram

Standard

Unlimited

< 50 MB

Flexible

—

Mastodon

Standard

Unlimited

< 40 MB

Up to 1920×1200 px

—

Threads

Standard

Up to 5 min

< 1 GB

Flexible

—

Bluesky

Standard

Up to 3 min

< 50 MB

Flexible

—

Request Structure

Schedule a video post using the unified scheduling endpoint:

{
  "bulk": {
    "state": "scheduled",
    "posts": [
      {
        "networks": {
          "facebook": {
            "type": "video",
            "media": [
              {
                "id": "67da8532075cdb33821384c4",
                "thumbnails": [
                  {
                    "id": "67da852b075cdb33821384ba",
                    "small": "https://.../thumb_67da852b075cdb33821384ba.jpg",
                    "real":  "https://.../67da852b075cdb33821384ba.jpg"
                  },
                  {
                    "id": "67da852c075cdb33821384bb",
                    "small": "https://.../thumb_67da852c075cdb33821384bb.jpg",
                    "real":  "https://.../67da852c075cdb33821384bb.jpg"
                  }
                ],
                "title": "My Video Title",
                "default_thumbnail": 1
              }
            ],
            "text": "Optional description or caption"
          }
        },
        "accounts": [
          {
            "id": "YOUR_ACCOUNT_ID",
            "scheduled_at": "2025-05-24T23:07:00+02:00"
          }
        ]
      }
    ]
  }
}

Required Parameters

Field
Description

bulk.state

Must be "scheduled".

networks.{provider}.type

Set to "video".

networks.{provider}.media

Array of video metadata objects.

networks.{provider}.media[].id

ID returned by the Media Upload endpoint.

networks.{provider}.media[].thumbnails

Array of thumbnail objects with id, small, and real URLs.

networks.{provider}.media[].default_thumbnail

1-based index to select default thumbnail.

networks.{provider}.text

Optional caption or description.

accounts[].id

Target social media account ID.

accounts[].scheduled_at*

ISO 8601 timestamp (omit for immediate publishing).

* Optional if you publish immediately via /posts/schedule/publish.

Workflow for Creating Video Posts

  1. Upload Video Use the Media Handling endpoint to upload your video.

  2. Receive Media ID Note the returned id for referencing in your post payload.

  3. Configure Thumbnails Upload or select thumbnail images and include their IDs/URLs.

  4. Compose & Schedule Build your post object, set state and scheduled_at, then send to /posts/schedule.

  5. Monitor Job Poll /api/v1/job_status/{job_id} until status is completed.

Best Practices

  • Select Engaging Thumbnails Choose a frame or custom image that drives clicks.

  • Provide Clear Titles & Descriptions Improve accessibility and SEO with detailed metadata.

  • Validate Platform Requirements Confirm aspect ratio, encoding, and file format (MP4/H.264 recommended).

Related Topics

  • Media Handling

  • Content Types

  • Publishing Methods

Post Callbacks

Automate follow-up actions when you publish or schedule posts: auto-share to other accounts, post delayed comments, or auto-delete content after a set time.

Overview

Post callbacks are powerful automation features that can be configured within your API requests when creating posts. They allow you to:

  • AutoShare: Automatically share published posts to other social accounts

  • Follow-up Comments: Schedule comments to be posted after the original post is published

  • Auto-Delete: Automatically remove posts after a specified time period on the specified networks

Endpoints

  • Schedule with callbacks: POST /api/v1/posts/schedule

  • Publish now with callbacks: POST /api/v1/posts/schedule/publish

Callbacks live inside each account object in your request payload.

Request Structure

{
  "bulk": {
    "state": "scheduled",
    "posts": [
      {
        "networks": {
          "facebook": {
            "type": "status",
            "text": "Your post content here"
          }
        },
        "accounts": [
          {
            "id": "ACCOUNT_ID",
            "scheduled_at": "2025-05-15T14:30:00Z", // Optional for immediate publishing
            "share":   { /* AutoShare config */ },
            "comments":[ /* Follow-up comments */ ],
            "delete":  { /* Auto-Delete config */ }
          }
        ]
      }
    ]
  }
}

Auto-Sharing

Automatically share your published post to other accounts.

Parameters

Field
Type
Description

share.text

string

Custom caption for the shared post (defaults to original text).

share.account_ids

string[]

Target account IDs for auto-sharing.

share.after.duration

number

Delay value before first share.

share.after.unit

string

Time unit: Minute, Hour, Day, Week.

share.delay.duration

number

Delay between shares to multiple accounts.

share.delay.unit

string

Time unit for delay: Minute, Hour, Day, Week.

Example

"share": {
  "text": "Check out our latest blog post!",
  "account_ids": ["A_ID_1", "A_ID_2"],
  "after": { "duration": 1, "unit": "Hour" },
  "delay": { "duration": 15, "unit": "Minute" }
}

Supported Networks

Facebook Pages→Groups, Twitter/X, LinkedIn, Pinterest, Mastodon, Threads, BlueSky, TikTok, Telegram, Google Business.

Note: Google Business Profiles require non-empty text. Push-notification posts cannot be auto-shared.

Follow-Up Comments

Schedule comments on your own post at specified delays.

Parameters

Field
Type
Description

comments[].text

string

Comment text.

comments[].language

string

Language code (optional).

comments[].delay.duration

number

Delay value after original post.

comments[].delay.unit

string

Minute, Hour, Day, or Week.

comments[].media

object

Optional media to include in the comment.

comments[].media.type

string

photo, video, or gif.

comments[].media.path

string

File path or URL for the media.

comments[].media.caption

string

Caption for the attached media (optional).

comments[].media.thumbnail

string

Thumbnail URL for video media (optional).

Example

"comments": [
  {
    "text": "First 100 customers get 10% off!",
    "delay": { "duration": 2, "unit": "Hour" }
  },
  {
    "text": "24 hours left—don’t miss out!",
    "delay": { "duration": 1, "unit": "Day" },
    "media": {
      "type": "photo",
      "path": "/path/to/countdown.jpg",
      "caption": "Only one day left!"
    }
  }
]

Supported Networks

Twitter/X, LinkedIn, Facebook Pages→Groups (when posting as a Page to a Group), Mastodon, Threads, BlueSky.

For Twitter/X, Mastodon, BlueSky, and Threads, comments become new posts in a thread. Recurring posts carry their comments each time; drafts and re-schedules require manual comment setup.

Auto-Delete

Automatically hide or delete a post after a set time.

Parameters

Field
Type
Description

delete.hide

boolean

true to hide instead of delete (platform-dependent).

delete.delay.duration

number

Delay value after original post.

delete.delay.unit

string

Time unit: Minute, Hour, Day, or Week.

Example

"delete": {
  "hide": false,
  "delay": { "duration": 7, "unit": "Day" }
}

Supported Networks

All scheduled networks except Instagram and story formats on Facebook/Instagram.

Instagram API does not support auto-delete. Certain post types (e.g., Stories) cannot be auto-deleted.

Complete Example

{
  "bulk": {
    "state": "scheduled",
    "posts": [
      {
        "networks": {
          "facebook": {
            "type": "status",
            "text": "Annual sale starts tomorrow—50% off sitewide!"
          }
        },
        "accounts": [
          {
            "id": "A_ID_MAIN",
            "scheduled_at": "2025-05-15T14:30:00Z",
            "share": {
              "text": "Don't miss our HUGE sale!",
              "account_ids": ["A_ID_2", "A_ID_3"],
              "after": { "duration": 1, "unit": "Hour" },
              "delay": { "duration": 15, "unit": "Minute" }
            },
            "comments": [
              {
                "text": "Extra 10% off for first 100 buyers!",
                "delay": { "duration": 2, "unit": "Hour" }
              }
            ],
            "delete": {
              "hide": false,
              "delay": { "duration": 2, "unit": "Day" }
            }
          }
        ]
      }
    ]
  }
}

Best Practices

  • AutoShare: Provide custom text, respect audience time zones, and space out shares.

  • Comments: Keep them relevant, varied (text/media), and well-timed to maintain engagement.

  • Auto-Delete: Use for time-sensitive offers; prefer hiding to preserve history.

Related Topics

  • Content Types - Details on different content formats

  • Scheduled Posts - Information about scheduling posts

  • Immediate Publishing - How to publish content immediately

Facebook

Title, description, images, CTA

Full link card support

LinkedIn

Title, description, images, CTA

Full link card support

Twitter/X

Automatic card preview

Metadata driven by Twitter Card tags

Pinterest

Custom images

Requires uploaded images in media

Telegram

Title, description

Native link preview

Mastodon

Title, description

Native link preview

Threads

Title, description

Native link preview

Bluesky

Title, description

Native link preview

{
  "bulk": {
    "state": "scheduled",
    "posts": [
      {
        "networks": {
          "facebook": {
            "type": "link",
            "text": "This is the link post type",
            "link": {
              "url": "http://publer.com",
              "provider_display": "publer.com",
              "description": "Boost your social media strategy with Publer’s suite of tools. Manage multiple accounts, schedule posts, collaborate with your team, and analyze performance—all in one place.",
              "title": "Powerful Social Media Management & Scheduling Tools | Publer",
              "images": [
                "https://framerusercontent.com/assets/20xDElBhD9Xg3L7Cx7jVMwL56FU.png",
                "https://framerusercontent.com/images/OVMI4DbyRxf9neKFkqKesfnSlHE.png",
                "https://framerusercontent.com/images/ShxTAH03BsTSB29AeYZzpPZqi8.jpg",
                "https://framerusercontent.com/images/iuLpS9a0syZanung3ZFGrbYXTKM.jpg",
                "https://framerusercontent.com/images/d7Gg6Hvachd0DuRzXGKoB1szAl4.jpg"
              ],
              "default_image": 0,
              "call_to_action": "LEARN_MORE",
              "phone_number": ""
            }
          }
        },
        "accounts": [
          {
            "id": "63c675b54e299e9cf2b667ea",
            "scheduled_at": "2025-05-24T23:18+02:00"
          }
        ]
      }
    ]
  }
}

bulk.state

string

scheduled, publish, or a draft state

networks.{provider}.type

string

Must be "link"

networks.{provider}.text

string

Caption or message to accompany the link (optional)

networks.{provider}.link.url

string

The target URL

networks.{provider}.link.title

string

Preview title (overrides fetched metadata)

networks.{provider}.link.description

string

Preview description (overrides fetched metadata)

networks.{provider}.link.images

array

Array of image URLs for the preview (overrides fetched metadata)

networks.{provider}.link.default_image

integer

Index (0-based) of the default image in the images array

networks.{provider}.link.call_to_action

string

CTA button type (e.g., LEARN_MORE, SIGN_UP)

accounts[].id

string

Target account identifier

accounts[].scheduled_at

string

ISO 8601 timestamp for scheduling (omit to publish immediately)

Media Handling
Content Types
Publishing Methods

Reels, Shorts & Stories

Short-form, immersive content formats for deep engagement. Use Publer’s API to schedule or publish Reels (Instagram & Facebook), Shorts (YouTube), and Stories (Instagram & Facebook) with a single JSON payload.

Supported Formats & Specs

Format
Platform
Max Duration
Aspect Ratio
Max Size
Notes

Reels

Instagram, Facebook

3–90 seconds

9:16

1 GB

Optional audio rename, feed toggle

Shorts

YouTube

≤ 60 seconds

9:16

2 GB

privacy: public/private/unlisted

Stories

Instagram, Facebook

≤ 15 seconds

9:16

1 GB

Photo or video, link stickers on IG

Request Structure

Send to the scheduling endpoint or use /posts/schedule/publish for immediate posting:

1. Instagram/Facebook Reel

{
  "bulk": {
    "state": "scheduled",
    "posts": [{
      "networks": {
        "instagram": {
          "type": "video",
          "text": "Our summer Reel!",
          "media": [{
            "id": "67c9630bedeb539dd87dd23c",
            "path": "https://cdn.publer.com/videos/67c9630b.mp4",
            "type": "video",
            "default_thumbnail": 1
          }],
          "details": {
            "type": "reel",
            "audio": "Custom audio name",
            "feed": false
          }
        }
      },
      "accounts": [{
        "id": "67d1f5f13d9895bab04393ec",
        "scheduled_at": "2025-07-27T14:16:00+02:00"
      }]
    }]
  }
}

2. YouTube Short

{
  "bulk": {
    "state": "scheduled",
    "posts": [{
      "networks": {
        "youtube": {
          "type": "video",
          "title": "Our Latest Short",
          "text": "Quick highlights!",
          "media": [{
            "id": "67c9630bedeb539dd87dd23c",
            "path": "https://cdn.publer.com/videos/67c9630b.mp4",
            "type": "video"
          }],
          "details": {
            "type": "short",
            "privacy": "public"
          }
        }
      },
      "accounts": [{
        "id": "64abc34d4e299e662bfd6389",
        "scheduled_at": "2025-08-01T14:16:00+02:00"
      }]
    }]
  }
}

3. Instagram/Facebook Story

{
  "bulk": {
    "state": "scheduled",
    "posts": [{
      "networks": {
        "instagram": {
          "type": "photo",
          "text": "Behind the scenes!",
          "media": [{
            "id": "680fa5cc48487c4ccbf8c146",
            "path": "https://cdn.publer.com/photos/680fa5cc.jpg",
            "type": "photo"
          }],
          "details": {
            "type": "story"
          }
        }
      },
      "accounts": [{
        "id": "67d1f5f13d9895bab04393ec",
        "scheduled_at": "2025-08-24T14:16:00+02:00"
      }]
    }]
  }
}

Common Parameters

Field
Type
Description

networks.{provider}.type

string

"video" for Reels/Shorts, "photo" for Stories

networks.{provider}.text

string

Caption or overlay text

networks.youtube.title

string

Title for YouTube Shorts

networks.{provider}.media[]

array

Media array (IDs from Media API)

media[].id

string

Publer media identifier

media[].path

string

URL to the video or image

media[].type

string

"video" or "photo"

media[].default_thumbnail

integer

Index of the thumbnail image (Reels only)

networks.{provider}.details

object

Format-specific settings

details.type

string

"reel", "short", or "story"

details.audio

string

Custom audio name for Reels (optional)

details.feed

boolean

true to also post Reel in Feed tab (Instagram only)

details.privacy

string

"public", "private", or "unlisted" (Shorts only)

accounts[].id

string

Target account identifier

accounts[].scheduled_at

string

ISO 8601 timestamp for scheduling (omit for immediate publishing)

Workflow

Reels

  1. Upload: Use Media API to upload vertical video (9:16).

  2. Compose: Set "details.type": "reel", optional audio and feed flags.

  3. Schedule: Provide scheduled_at or publish immediately.

  4. Verify: Monitor job status and preview in dashboard.

Shorts

  1. Upload: Upload video ≤ 60 sec, 9:16 ratio.

  2. Configure: Set "details.type": "short" and privacy.

  3. Add Title/Text: Populate title and text.

  4. Publish: Schedule or publish immediately.

Stories

  1. Upload: Add photo or video ≤ 15 sec.

  2. Tag as Story: Use "details.type": "story".

  3. Caption: Add text overlay.

  4. Schedule: Set scheduled_at or publish now.

Best Practices

  • Use high-quality, platform-compliant media (9:16 ratio).

  • Rename Reel audio to match branding.

  • Schedule according to audience peak times.

Related Topics

  • Platform-Specific Formats

  • Publishing Methods

  • Content Types

Google Business Profiles: Updates, Photos, Events & Offers

Share updates, photos, events, and special offers on your Google Business Profile via the Publer API. Each post type has its own fields—use the right payload to drive engagement and conversions.

Request Examples

1. Update Post

General news or announcement with an image and a CTA button.

2. Photo Post

Standalone photo update (no special details).

3. Event Post

Promote an upcoming event with start/end times and an optional link.

4. Offer Post

Advertise discounts or promotions with coupon codes and terms.

Parameters

Field
Type
Description

Supported Features & Limits

Feature
Details

Workflow

  1. Select Profile Choose the Google Business Profile in accounts[].id.

  2. Choose Post Type

    • Update: general news with image & CTA.

    • Photo: standalone image.

    • Event: include details.type = "event", dates, and optional link.

    • Offer: include details.type = "offer", dates, coupon, and terms URL.

  3. Add Media Upload or reference one photo via the .

  4. Compose & Schedule Build your JSON, set state and scheduled_at, then POST to /posts/schedule.

Best Practices

  • Use high-resolution images (≥250×250 pixels).

  • Craft clear CTAs to direct user action.

  • Include complete offer details (coupon & terms).

  • Set accurate event dates for reliable reminders.

Related Topics

{
  "bulk": {
    "state": "scheduled",
    "posts": [
      {
        "networks": {
          "google": {
            "type": "photo",
            "text": "Our new feature is live!\npubler.com",
            "title": "LEARN_MORE",
            "media": [
              {
                "id": "68133d70f09cb4aa6377d2dc",
                "path": "https://cdn.publer.com/uploads/photos/68133d70f09cb4aa6377d2dc.png",
                "thumbnail": "https://cdn.publer.com/uploads/photos/thumb_68133d70f09cb4aa6377d2dc.png",
                "type": "photo"
              }
            ]
          }
        },
        "accounts": [
          {
            "id": "GOOGLE_ACCOUNT_ID",
            "scheduled_at": "2025-05-24T08:46:00-04:00"
          }
        ]
      }
    ]
  }
}
{
  "bulk": {
    "state": "scheduled",
    "posts": [
      {
        "networks": {
          "google": {
            "type": "photo",
            "details": { "type": "photo" },
            "text": "Our office view today!",
            "title": "PROFILE",
            "media": [
              {
                "id": "68133d70f09cb4aa6377d2dc",
                "path": "https://cdn.publer.com/uploads/photos/68133d70f09cb4aa6377d2dc.png",
                "thumbnail": "https://cdn.publer.com/uploads/photos/thumb_68133d70f09cb4aa6377d2dc.png",
                "type": "photo"
              }
            ]
          }
        },
        "accounts": [
          {
            "id": "GOOGLE_ACCOUNT_ID",
            "scheduled_at": "2025-05-24T08:50:00-04:00"
          }
        ]
      }
    ]
  }
}
{
  "bulk": {
    "state": "scheduled",
    "posts": [
      {
        "networks": {
          "google": {
            "type": "photo",
            "details": {
              "type": "event",
              "title": "Summer Workshop",
              "start": "2025-06-07T12:50:00Z",
              "end":   "2025-08-03T12:50:00Z"
            },
            "text": "Join our Summer Workshop series!",
            "title": "LEARN_MORE",
            "url": "https://publer.com/events",
            "media": [
              {
                "id": "68133d70f09cb4aa6377d2dc",
                "path": "https://cdn.publer.com/uploads/photos/68133d70f09cb4aa6377d2dc.png",
                "thumbnail": "https://cdn.publer.com/uploads/photos/thumb_68133d70f09cb4aa6377d2dc.png",
                "type": "photo"
              }
            ]
          }
        },
        "accounts": [
          {
            "id": "GOOGLE_ACCOUNT_ID",
            "scheduled_at": "2025-06-07T08:50:00-04:00"
          }
        ]
      }
    ]
  }
}
{
  "bulk": {
    "state": "scheduled",
    "posts": [
      {
        "networks": {
          "google": {
            "type": "photo",
            "details": {
              "type": "offer",
              "title": "Spring Sale",
              "start":   "2025-05-28T12:50:00Z",
              "end":     "2025-10-02T12:50:00Z",
              "coupon":  "30%OFF",
              "terms":   "https://publer.com/terms"
            },
            "text": "Enjoy 30% off sitewide!",
            "url": "https://publer.com/sale",
            "media": [
              {
                "id": "68133d70f09cb4aa6377d2dc",
                "path": "https://cdn.publer.com/uploads/photos/68133d70f09cb4aa6377d2dc.png",
                "thumbnail": "https://cdn.publer.com/uploads/photos/thumb_68133d70f09cb4aa6377d2dc.png",
                "type": "photo"
              }
            ]
          }
        },
        "accounts": [
          {
            "id": "GOOGLE_ACCOUNT_ID",
            "scheduled_at": "2025-06-14T08:50:00-04:00"
          }
        ]
      }
    ]
  }
}

networks.google.type

string

"photo"

networks.google.text

string

Main caption or description.

networks.google.title

string

CTA button label (LEARN_MORE, PROFILE, etc.).

networks.google.url

string

External URL (for events/offers).

networks.google.media[]

array

Array of 1 media object with keys: id, path, thumbnail, and type: "photo".

networks.google.details.type

string

One of: "photo", "event", "offer".

networks.google.details.title

string

Event or offer title (required for event/offer).

networks.google.details.start

string

ISO 8601 start date/time (for events/offers).

networks.google.details.end

string

ISO 8601 end date/time (for events/offers).

networks.google.details.coupon

string

Coupon code (offers only).

networks.google.details.terms

string

URL to terms & conditions (offers only).

accounts[].id

string

Google Business Profile account ID.

accounts[].scheduled_at

string

ISO 8601 timestamp for scheduling (omit for immediate publish).

Post Types

Updates, Photos, Events, Offers

Max Photo Size

5 MB

Min Photo Resolution

250 × 250 pixels

Call-to-Action Buttons

Supported (LEARN_MORE, PROFILE, etc.)

Events

Requires start and end fields

Offers

Supports coupon and terms

Video Support

Not supported

Media Upload API
Platform-Specific Formats
Publishing Methods
Content Types

Facebook Text Posts with Background

Create and schedule Facebook status updates with vibrant backgrounds to boost engagement and visual appeal.

Request Body

Include text_format_preset_id in details under the facebook network:

{
  "bulk": {
    "state": "scheduled",
    "posts": [
      {
        "networks": {
          "facebook": {
            "type": "status",
            "details": {
              "text_format_preset_id": "1868855943417360"
            },
            "text": "Status update with background color\n\npubler.com"
          }
        },
        "accounts": [
          {
            "id": "63c675b54e299e9cf2b667ea",
            "scheduled_at": "2025-06-21T23:18:00+02:00"
          }
        ]
      }
    ]
  }
}

Parameters

Field
Type
Description

networks.facebook.type

string

Must be "status".

networks.facebook.details

object

Facebook-specific settings.

networks.facebook.details.text_format_preset_id

string

ID of the background preset (see list below).

networks.facebook.text

string

Your post copy.

Background Presets

Use one of these text_format_preset_id values to select a background:

ID

Background Description

106018623298955

Solid purple, background

365653833956649

Pink tropical plants, background image

618093735238824

Brown illustration, background image

191761991491375

3D hearts, background image

2193627793985415

3D heart eyes emojis, background image

200521337465306

3D flame emojis, background image

1821844087883360

Walking Yellow illustration, background image

177465482945164

Light purple 3D cube pattern, background image

160419724814650

Orange with Pink illustration, background image

248623902401250

3D smiling emoji background, background image

240401816771706

3D rose emojis, background image

1868855943417360

3D crying laughter emoji, background image

255989551804163

Eye Pink illustration, background image

1792915444087912

1792915444087912 illustration, background image

1654916007940525

Light grey illustration, background image

1679248482160767

Light blue illustration, background image

518948401838663

Pink heart pattern on pink background, background image

423339708139719

Illustration, background image

204187940028597

Solid red, background

621731364695726

Solid red, background

518596398537417

Red illustration, background image

134273813910336

Tree Red illustration, background image

217321755510854

Pink and purple hearts on a pink background, background image

323371698179784

Sunset Red illustration, background image

901751159967576

Gradient, dark orange red, background

552118025129095

Brown illustration, background image

263789377694911

Apple Red illustration, background image

606643333067842

Tulip Light orange illustration, background image

458988134561491

Cat Dark orange illustration, background image

548109108916650

Unicorn Red illustration, background image

175493843120364

Pink and yellow gradient, background image

338976169966519

Stairs Beige illustration, background image

206513879997925

Spiral Beige illustration, background image

168373304017982

Cube Beige illustration, background image

1271157196337260

Solid red, background

174496469882866

Lemon Yellow illustration, background image

862667370603267

Egg Light yellow illustration, background image

127541261450947

Ball Green illustration, background image

218067308976029

218067308976029 Light grey illustration, background image

688479024672716

Gradient, teal light green, background

238863426886624

Cat Light blue illustration, background image

301029513638534

Solid teal, background

154977255088164

Solid teal, background

1941912679424590

Gradient, grey dark grey, background

396343990807392

Flower Teal illustration, background image

143093446467972

Blue clouds on a dark blue background, background image

161409924510923

Rocket ship makes a heart in the sky, background image

145893972683590

Solid dark purple, background

217761075370932

Solid blue, background

931584293685988

Wave Blue illustration, background image

148862695775447

Pink and purple hearts on a purple background, background image

100114277230063

Deep Sea Blue illustration, background image

558836317844129

Spiral purple illustration, background image

172497526576609

Watermelon Light purple illustration, background image

433967226963128

Solid purple, background

197865920864520

Donut Light purple illustration, background image

643122496026756

Pink illustration, background image

762009070855346

Ballon Light grey illustration, background image

228164237768720

Grey heart pattern on a black background, background image

146487026137131

Rain Black illustration, background image

221828835275596

Glasses Light grey illustration, background image

1903718606535395

Solid red, background

1881421442117417

Solid black, background

249307305544279

Gradient, red blue, background

1777259169190672

Gradient, purple magenta, background

303063890126415

Yellow and orange and pink gradient, background image

122708641613922

Gradient, dark grey black, background

319468561816672

Dark blue illustration, background image

121945541697934

121945541697934 Pink illustration, background image

288211338285858

Blue illustration, background image

446330032368780

Gradient, red, background

219266485227663

Solid magenta, background

1289741387813798

Solid dark red, background

1365883126823705

Solid blue, background

Key Notes & Limitations

  • No Other Media: Background posts cannot include images or videos.

  • Facebook Pages Only: Not supported on personal profiles or groups.

  • Links as Plain Text: URLs in your text appear without link previews.

  • Editing: You may change—but not remove—a background on published posts.

  • Character Limit: Publer allows unlimited text; Facebook enforces a 130-character cap on background posts.

  • Syncing: Background posts sync back as plain text, not background posts.

Best Practices

  • Select Complementary Backgrounds: Match your brand palette and message.

  • Keep Copy Concise: Short, punchy text reads best over busy backgrounds.

  • Preview Before Posting: Verify legibility and overall visual balance.

Related Topics

  • Platform-Specific Formats

  • Publishing Methods

  • Content Types

Get Signatures for Accounts

get

Retrieves signatures associated with specified accounts in a workspace.

Authorizations
Path parameters
workspace_idanyRequired

ID of the workspace to retrieve signatures from

Query parameters
accountsanyRequired

Array of account IDs to filter signatures by

Responses
200
Successful operation
application/json
401
Unauthorized
application/json
403
Permission denied or missing required scope
application/json
get
GET /api/v1/workspaces/{workspace_id}/signatures HTTP/1.1
Host: app.publer.com
Authorization: YOUR_API_KEY
Accept: */*
[
  {
    "account_id": "text",
    "signatures": [
      {
        "id": "text",
        "label": "text",
        "text": "text",
        "default": true,
        "in_photo_captions": true
      }
    ]
  }
]

Search for Facebook locations

get

Search and retrieve Facebook locations based on a query string.

Query parameters
qanyRequired

Search query for Facebook locations

Responses
200
List of Facebook locations matching the search query
application/json
403
Authentication failure or invalid token
application/json
422
Invalid request or Facebook API error
application/json
get
GET /api/v1/locations/facebook HTTP/1.1
Host: app.publer.com
Accept: */*
[
  {
    "id": "text",
    "name": "text",
    "info": "Main office in New York City ⋅ 1,030 follow this",
    "verified": true
  }
]

Search for Instagram locations

get

Search and retrieve Instagram locations based on a query string.

Query parameters
qanyRequired

Search query for Instagram locations

Responses
200
List of Instagram locations matching the search query
application/json
403
Authentication failure, invalid token, or no Instagram account with Facebook login
application/json
422
Invalid request or Instagram API error
application/json
get
GET /api/v1/locations/instagram HTTP/1.1
Host: app.publer.com
Accept: */*
[
  {
    "id": "text",
    "name": "text",
    "info": "Main office in New York City ⋅ 1,030 follow this",
    "verified": true
  }
]

Search for Threads locations

get

Search and retrieve Threads locations based on a query string.

Query parameters
qanyRequired

Search query for Threads locations

Responses
200
List of Threads locations matching the search query
application/json
403
Authentication failure, invalid token, or no Threads account
application/json
422
Invalid request or Threads API error
application/json
get
GET /api/v1/locations/threads HTTP/1.1
Host: app.publer.com
Accept: */*
[
  {
    "id": "text",
    "name": "text",
    "info": "Main office in New York City"
  }
]

Extract Link Metadata

post

Extracts metadata from a URL including title, description, images, and more. Useful for previewing links before creating a post.

Authorizations
Body
urlstringRequired

The URL to extract metadata from

Responses
200
Successful operation
application/json
401
Unauthorized
application/json
422
Unprocessable Entity - Invalid URL
application/json
post
POST /api/v1/posts/links HTTP/1.1
Host: app.publer.com
Authorization: YOUR_API_KEY
Content-Type: application/x-www-form-urlencoded
Accept: */*
Content-Length: 14

"url='text'"
{
  "link": {
    "title": "text",
    "description": "text",
    "url": "text",
    "original_url": "text",
    "images": [
      "text"
    ],
    "favicon": "text",
    "provider_display": "text",
    "type": "link"
  }
}