Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Publish content to social networks instantly using the Publer API. This method skips scheduling and sends posts for immediate delivery.
POST /api/v1/posts/schedule/publish
Authorization
Yes
Bearer-API YOUR_API_KEY
Publer-Workspace-Id
Yes
Workspace ID
Content-Type
Yes
application/json
Accept
No
application/json
(default)
Use the standard bulk structure. Omit scheduled_at
under accounts
:
{
"bulk": {
"state": "scheduled",
"posts": [
{
"networks": {
// network provider as key, e.g., facebook, twitter etc.
"[network_provider]": {
"type": "[content_type]",
"text": "Post content",
// Additional properties based on content type
}
},
"accounts": [
{
"id": "account_id"
// No scheduled_at parameter
}
]
}
]
}
}
state
: must be "scheduled"
for immediate publishing
networks
: per-network content configuration (facebook
, twitter
, linkedin
, etc.)
accounts
: list of target account IDs (no scheduled_at
timestamp)
curl -X POST https://app.publer.com/api/v1/posts/schedule/publish \
-H "Authorization: Bearer-API YOUR_API_KEY" \
-H "Publer-Workspace-Id: YOUR_WORKSPACE_ID" \
-H "Content-Type: application/json" \
-d '{
"bulk": {
"state": "scheduled",
"posts": [
{
"networks": {
"facebook": {
"type": "status",
"text": "Just published this update via the Publer API! #RealTimePosting"
}
},
"accounts": [
{ "id": "66db83154e299efa19a2d8eb" }
]
}
]
}
}'
Status: 200 OK
{
"job_id": "6810dec617eae6d55d7a5e5b"
}
Use the returned job_id
to poll /api/v1/job_status/{job_id}
until status: "completed"
.
Delivery Timing
Posts are sent as soon as Publer processes the request.
Network-side processing may introduce slight delays.
Job remains in working
state until all targets confirm receipt.
Platform Requirements
All network-specific content rules still apply (e.g., character limits, media formats).
Some networks may perform additional reviews before public display.
Ensure the connected accounts have immediate-posting permissions.
Issue
Solution
Rate limiting
Space out immediate publishing requests to avoid triggering platform limits
Authentication errors
Check that social accounts are properly connected and authorized
Content rejection
Review platform guidelines for content that might be flagged
Processing delays
For media posts, allow extra time for media processing
Content Types - Details on different content formats
Media Handling - Information about uploading and managing media
Network Reference - Platform-specific capabilities and limitations
Schedule posts for future publication across one or more social networks using the Publer API.
POST /api/v1/posts/schedule
Authorization
Yes
Bearer-API YOUR_API_KEY
Publer-Workspace-Id
Yes
Workspace ID for scheduling posts
Content-Type
Yes
application/json
Accept
No
application/json
(default)
Include a valid ISO 8601 scheduled_at
timestamp under each account:
{
"bulk": {
"state": "scheduled",
"posts": [
{
"networks": {
// network provider as key, e.g., facebook, twitter, etc
"facebook": {
"type": "status",
"text": "This post was scheduled through the Publer API! #ScheduledContent"
}
},
"accounts": [
{
"id": "66db83154e299efa19a2d8eb",
"scheduled_at": "2025-06-01T09:00:00Z"
}
]
}
]
}
}
curl -X POST https://app.publer.com/api/v1/posts/schedule \
-H "Authorization: Bearer-API YOUR_API_KEY" \
-H "Publer-Workspace-Id: YOUR_WORKSPACE_ID" \
-H "Content-Type: application/json" \
-d '{
"bulk": {
"state": "scheduled",
"posts": [{
"networks": {
"facebook": {
"type": "status",
"text": "This post was scheduled through the Publer API! #ScheduledContent"
}
},
"accounts": [{
"id": "66db83154e299efa19a2d8eb",
"scheduled_at": "2025-06-01T09:00:00Z"
}]
}]
}
}'
Status: 200 OK
{
"job_id": "6810dec617eae6d55d7a5e5b"
}
state
Must be set to "scheduled"
for future publishing.
accounts[].scheduled_at
ISO 8601 timestamp (with Z
or offset) specifying when to publish.
networks
Per-platform content configuration (e.g., facebook
, twitter
, linkedin
).
Use full ISO 8601 format, including timezone (e.g., 2025-06-01T09:00:00+02:00
).
Timestamps must be at least 1 minute in the future.
Buffer Time: Space posts 1–2 minutes apart to avoid collisions.
Timezone Awareness: Schedule using your audience’s local time.
Batch Scheduling: Combine related posts in a single request for efficiency.
Verify: Poll /api/v1/job_status/{job_id}
to confirm scheduling success.
Content Types - Details on different content formats
Auto-Scheduling - Advanced AI-based scheduling options
Recurring Posts - Setting up repeating content
Network Reference - Platform-specific scheduling limitations
Automatically pick the optimal posting time for your content within a specified date window. Publer analyzes your posting schedule and audience engagement to fill gaps and maximize reach.
POST /api/v1/posts/schedule
Authorization
Yes
Bearer-API YOUR_API_KEY
Publer-Workspace-Id
Yes
Workspace ID
Content-Type
Yes
application/json
Accept
No
application/json
(default)
Set auto: true
and define range
to enable auto-scheduling:
{
"bulk": {
"state": "scheduled",
"posts": [
{
"networks": {
"facebook": {
"type": "status",
"text": "Let Publer pick the best time for this post!"
}
},
"accounts": [
{ "id": "ACCOUNT_ID" }
],
"range": {
"start_date": "2025-05-23T07:45:00Z",
"end_date": "2025-05-31T23:59:00Z"
},
"auto": true
}
]
}
}
auto
boolean
Set to true
to enable auto-scheduling
range.start_date
string
Earliest ISO 8601 timestamp for posting (inclusive)
range.end_date
string
Latest ISO 8601 timestamp for posting (inclusive, optional)
share_next
boolean
(Optional) When true
, schedule in the very next available slot
{
"bulk": {
"state": "scheduled",
"posts": [{
"networks": {
"facebook": {
"type": "status",
"text": "Let Publer choose the best time!"
}
},
"accounts": [{ "id": "66f509f7db2797026a37ba76" }],
"range": {
"start_date": "2025-05-23T07:45:00Z",
"end_date": "2025-05-31T23:59:00Z"
},
"auto": true
}]
}
}
Omit end_date
and set share_next
to schedule at the next open slot:
{
"bulk": {
"state": "scheduled",
"posts": [{
"networks": {
"facebook": {
"type": "status",
"text": "Post in next available slot"
}
},
"accounts": [{ "id": "66f509f7db2797026a37ba76" }],
"range": { "start_date": "2025-05-23T07:45:00Z" },
"share_next": true,
"auto": true
}]
}
}
Analyze Schedule: Publer looks at your existing posting queue and calendar.
Identify Slots: Finds open time slots based on your account’s posting schedule.
Optimize: Uses audience engagement data to pick a high-impact time within your range.
Schedule: Creates the post at the selected time.
Fill Gaps: Keep your queue full without manual scheduling.
Engagement Boost: Leverage data-driven timing for better reach.
Bulk Campaigns: Auto-schedule large batches within a window.
Hands-Off Workflow: Let Publer handle timing so you focus on content.
Define Posting Schedule: Ensure your account has active time slots configured.
Reasonable Ranges: Provide a wide enough window for better slot selection.
Mix Methods: Combine auto-scheduling with manual posts for flexibility.
Monitor Jobs: Poll /api/v1/job_status/{job_id}
to confirm success.
No available slots
Add or open time slots in your posting schedule within the date range.
Suboptimal timing
Expand the date range or refine your posting schedule.
Data insufficient
Post more content manually to build up engagement metrics.
Efficiently schedule up to 500 posts across multiple accounts and networks in a single API request. Bulk scheduling in Publer streamlines content planning and helps you stay organized at scale.
Bulk scheduling lets you prepare, customize, and schedule a large number of posts at once—supporting both text and media content for all supported networks. Each post in the bulk payload can have unique content, network targeting, and scheduling options.
Create and schedule up to 500 posts in a single API call.
Combine multiple social accounts and networks per post.
Supports text, images, videos, and more.
Choose between Schedule, Auto Schedule, or Recycle modes.
Individually customize each post (content, media, timing, etc.).
Posts without a scheduled_at
field use the account’s posting schedule.
Send a POST request to the scheduling endpoint with your bulk payload:
POST /api/v1/posts/schedule
Authorization
Yes
Bearer-API YOUR_API_KEY
Publer-Workspace-Id
Yes
Workspace ID for scheduling posts
Content-Type
Yes
application/json
Accept
No
application/json
(default)
Example Payload:
{
"bulk": {
"state": "scheduled",
"posts": [
{
"networks": {
"facebook": {
"type": "status",
"text": "Bulk Scheduling"
},
"mastodon": {
"type": "status",
"text": "Bulk Scheduling"
}
},
"accounts": [
{
"id": "63c675b54e299e9cf2b667ea"
},
{
"id": "650170394e299e33b427c2ff",
"scheduled_at": "2025-08-17T16:19+02:00"
}
]
},
{
"accounts": [
{
"id": "63c675b54e299e9cf2b667ea"
},
{
"id": "650170394e299e33b427c2ff",
"scheduled_at": "2025-07-17T17:19+02:00"
}
],
"networks": {
"facebook": {
"type": "status",
"text": "Second Post"
},
"mastodon": {
"type": "status",
"text": "Second Post"
}
}
},
{
"accounts": [
{
"id": "63c675b54e299e9cf2b667ea"
},
{
"id": "650170394e299e33b427c2ff",
"scheduled_at": "2025-06-17T18:19+02:00"
}
],
"networks": {
"facebook": {
"type": "status",
"text": "Third post"
},
"mastodon": {
"type": "status",
"text": "Third post"
}
}
}
]
}
}
bulk.state
string
Scheduling mode: "scheduled"
(manual schedule), "auto"
, or "recycle"
bulk.posts
array
Array of up to 500 post objects
posts[].networks
object
Networks and their post data (e.g., Facebook, Mastodon, etc.)
posts[].networks.{network}
object
Post content for each targeted network
posts[].accounts
array
Array of account objects that will receive this post
accounts[].id
string
Target social account ID
accounts[].scheduled_at
string
ISO 8601 time for scheduled post (omit for auto or recycle based on posting schedule)
...
...
All other post options (media, watermarks, signature, location, etc.) supported per post type
Schedule:
Add scheduled_at
to specify exact publish time per account/post.
Auto Schedule:
Omit scheduled_at
and set bulk.state
to "auto"
to use the account's posting schedule.
Recycle:
Set bulk.state
to "recycle"
to enable cyclical republishing based on the account's recycle settings.
Recurring posts are not supported in bulk scheduling.
Prepare Your Bulk Payload: List each post with its content, targeted networks, and accounts.
Customize Each Post: Add media, captions, hashtags, locations, watermarks, and more individually per post.
Choose Scheduling Mode:
Use scheduled_at
for manual scheduling or let Publer auto-schedule based on your rules.
Submit:
Send your payload to /posts/schedule
and monitor job status for completion.
Use bulk scheduling for campaigns, product launches, or large-scale social content plans.
Individually tailor each post for its platform and audience.
Use the scheduling modes for flexibility—manual times for some posts, auto-schedule for others.
Create, manage, and collaborate on draft posts that aren't published immediately. Drafts help you save work-in-progress content, collaborate with your team, and schedule posts for later publishing.
Publer supports three types of draft states, each with different visibility and account connection requirements:
draft
- Connected to specific social accounts with optional scheduling
draft_public
- Workspace-wide drafts visible to all workspace members (posts without social accounts)
draft_private
- Private drafts visible only to you (posts without social accounts)
POST /api/v1/posts/schedule
Authorization
Yes
Bearer-API YOUR_API_KEY
Publer-Workspace-Id
Yes
Workspace ID for scheduling posts
Content-Type
Yes
application/json
Accept
No
application/json
(default)
Use the same scheduling endpoint—with a draft state—to save work-in-progress content without publishing.
draft
)Drafts connected to specific social accounts that can optionally include scheduling information.
{
"bulk": {
"state": "draft",
"posts": [
{
"networks": {
"facebook": {
"type": "status",
"text": "First Draft"
}
},
"accounts": [
{
"id": "647a0edddb2797b89044e2c1",
"scheduled_at": "2025-06-23T10:43:00+02:00"
}
]
}
]
}
}
Key Features:
Must include accounts
array with account IDs
Can include scheduled_at
for future publishing
Uses specific network configurations (e.g., facebook
, instagram
)
draft_public
)Drafts visible to all workspace members for collaboration and review.
{
"bulk": {
"state": "draft_public",
"posts": [
{
"networks": {
"default": {
"type": "status",
"text": "Draft"
}
}
}
]
}
}
Key Features:
No accounts
array required
No scheduled_at
field
Uses default
network configuration
Visible to all workspace members
draft_private
)Drafts visible only to the creator for personal use and planning.
{
"bulk": {
"state": "draft_private",
"posts": [
{
"networks": {
"default": {
"type": "status",
"text": "Private Draft"
}
}
}
]
}
}
Key Features:
No accounts
array required
No scheduled_at
field
Uses default
network configuration
Visible only to the creator
bulk.state
string
Yes
Draft type: "draft"
, "draft_public"
, or "draft_private"
posts[].networks
object
Yes
Network configurations for the post
posts[].accounts
array
Only for "draft"
state
Array of account objects with IDs and optional scheduling
accounts[].id
string
Yes (when accounts present)
Social account ID
accounts[].scheduled_at
string
No
ISO 8601 timestamp (only for "draft"
state)
For draft
state: Use specific network keys (facebook
, instagram
, twitter
, etc.)
For draft_public
and draft_private
: Use default
as the network key
Save Often: Create drafts early in your content creation process to avoid data loss
Use Public Drafts for Collaboration: Share draft_public
posts with your team for feedback and approvals
Pre-schedule Account Drafts: Add scheduled_at
to draft
posts for seamless transition to scheduled state
Organize by Purpose: Use private drafts for personal planning and public drafts for team collaboration
Automatically re-share a post on a regular cadence. Recycling is ideal for evergreen content, reminders, and promotional campaigns.
POST /api/v1/posts/schedule
Authorization
Yes
Bearer-API YOUR_API_KEY
Publer-Workspace-Id
Yes
Your workspace identifier
Content-Type
Yes
application/json
Accept
No
application/json
(default)
Include a recycling
object in your payload:
{
"bulk": {
"state": "scheduled",
"posts": [
{
"networks": {
"facebook": {
"type": "status",
"text": "This content will be recycled multiple times."
}
},
"accounts": [
{ "id": "66f509f7db2797026a37ba76" }
],
"recycling": {
"solo": true,
"gap": 2,
"gap_freq": "Week",
"start_date": "2025-06-01",
"expire_count": 3
}
}
]
}
}
solo
boolean
true
to recycle this post individually (not grouped)
gap
number
Interval between reposts (e.g., 2
for every 2 units)
gap_freq
string
Unit of interval: Day
, Week
, or Month
start_date
string
ISO date when recycling begins (e.g., YYYY-MM-DD
)
expire_count
number
Maximum number of reposts
expire_date
string
ISO date to stop recycling (alternative to expire_count
)
Recycle every 2 weeks, up to 3 times:
{
"bulk": {
"state": "scheduled",
"posts": [{
"networks": {
"facebook": { "type": "status", "text": "Evergreen reminder!" }
},
"accounts": [{ "id": "66f509f7db2797026a37ba76" }],
"recycling": {
"gap": 2,
"gap_freq": "Week",
"expire_count": 3
}
}]
}
}
Recycle monthly until end of year:
{
"bulk": {
"state": "scheduled",
"posts": [{
"networks": {
"default": { "type": "status", "text": "Monthly promotion reminder!" }
},
"accounts": [{ "id": "66f509f7db2797026a37ba76" }],
"recycling": {
"gap": 1,
"gap_freq": "Month",
"start_date": "2025-06-01",
"expire_date": "2025-12-31"
}
}]
}
}
Create a post with recycling
settings.
Publer queues the post for reuse.
After each gap
interval, the post is republished.
Recycling stops when expire_count
or expire_date
is reached.
Due to API limitations and anti-spam policies, recycling has some platform-specific constraints:
Platform
Recycling Support
Notes
Full support
No special requirements
Full support
No special requirements
Full support
No special requirements
Limited
Requires 10+ variations using Spintax Generator
Limited
Requires 10+ variations using Spintax Generator
Google Business Profile
Limited
Requires 10+ variations using Spintax Generator
YouTube
Not supported
API limitations
TikTok
Not supported
API limitations
WordPress
Not supported
API limitations
Promote evergreen blog posts or resources.
Remind followers of ongoing events or offers.
Keep your feed active with minimal manual effort.
Vary content slightly using Spintax to avoid spam filters.
Choose sensible intervals—don’t recycle too frequently.
Always set an expiration (expire_count
or expire_date
).
Monitor engagement metrics to adjust recycling strategy.
Recycling fills open slots based on gap
and gap_freq
—ideal for evergreen content.
Recurring publishes at exact times on a fixed repeat schedule (e.g., every Monday at 9 AM).
A concise guide to all content publishing methods available via the Publer API. Choose the method that best fits your workflow, from instant publishing to automated recycling and recurring schedules.
Send your post to networks right away.
Endpoint:
Request example:
Omit scheduled_at
entirely
Content is processed immediately via the schedule/publish endpoint
Supports all content types and network-specific options
Plan posts for future dates and times across multiple networks.
Endpoint:
Request example:
Include a valid ISO 8601 scheduled_at
timestamp
Times must be at least 1 minute in the future
Supports timezone offsets
Each account can have its own scheduled_at
Save work-in-progress content for review or refinement.
Endpoint:
Request example (private draft):
Let Publer pick the best posting times within a date range.
Endpoint:
You need a posting schedule. are account-specific. You can have only one posting schedule per account, however, it can consist of many time slots.
If you want the same posting schedule across multiple social accounts, you can do so by .
Request example:
Automatically repost content multiple times on a defined cadence.
Endpoint:
First, you need to create a post and a posting schedule. Click to learn how to set up a new time slot for your posts.
Request example:
Key recycling parameters:
Schedule content to repeat on a predefined pattern.
Endpoint:
Request example:
All publishing methods return a job ID for asynchronous processing:
Always verify success by checking the job status:
Example success response:
Network-specific content: Override content for specific platforms
Multi-account publishing: Target multiple accounts in a single request
Publish content right away
No scheduled_at
Time-sensitive announcements, breaking news
Publish at specific date/time
scheduled_at
Content calendar planning, timed campaigns
Save for later use
state: draft
Workspace collaboration, content preparation
Automatically scheduling posts
auto: true
Engagement optimization, workload reduction
Reuse content multiple times
recycling
object
Evergreen content, extended reach
Create repeating posts
recurring
object
Regular updates, consistent presence
POST /api/v1/posts/schedule/publish
{
"bulk": {
"state": "scheduled",
"posts": [
{
"networks": {
"facebook": {
"type": "status",
"text": "Breaking news update!"
}
},
"accounts": [
{
"id": "66db83154e299efa19a2d8eb"
// No scheduled_at parameter
}
]
}
]
}
}
POST /api/v1/posts/schedule
{
"bulk": {
"state": "scheduled",
"posts": [
{
"networks": {
"facebook": {
"type": "status",
"text": "Scheduled announcement for next week!"
}
},
"accounts": [
{
"id": "66db83154e299efa19a2d8eb",
"scheduled_at": "2025-05-15T14:30:00Z"
}
]
}
]
}
}
POST /api/v1/posts/schedule
{
"bulk": {
"state": "draft_private",
"posts": [
{
"networks": {
"facebook": {
"type": "status",
"text": "Draft post for later review"
}
},
"accounts": [
{
"id": "66f509f7db2797026a37ba76"
}
]
}
]
}
}
State Value
Description
Access Control
draft_private
Private draft
Only accessible to the creator
draft_public
or draft
Workspace-visible draft
Available to all workspace members with appropriate permissions
POST /api/v1/posts/schedule
{
"bulk": {
"state": "scheduled",
"posts": [
{
"networks": {
"facebook": {
"type": "status",
"text": "Autoschedule post"
}
},
"accounts": [
{
"id": "66f509f7db2797026a37ba76"
}
],
"share_next": false,
"range": {
"start_date": "2025-05-23T07:45:00.000Z",
"end_date": "2025-05-31T07:45:00.000Z"
},
"auto": true
}
]
}
}
Parameter
Type
Required
Description
auto
boolean
Yes
Set to true
to enable auto-scheduling
range.start_date
string
Yes
ISO 8601 timestamp for earliest possible posting time
range.end_date
string
No
ISO 8601 timestamp for latest possible posting time
share_next
boolean
No
When true
, uses next available optimal slot
POST /api/v1/posts/schedule
{
"bulk": {
"state": "scheduled",
"posts": [
{
"networks": {
"default": {
"type": "status",
"text": "This content will be recycled multiple times"
}
},
"accounts": [
{
"id": "66f509f7db2797026a37ba76",
"labels": [""]
}
],
"range": {
"start_date": "2025-05-23T07:45:00.000Z",
"end_date": null
},
"recycling": {
"solo": true,
"gap": 2,
"gap_freq": "Week",
"start_date": "2025-06-01",
"expire_count": "3",
"expire_date": "2025-07-15"
}
}
]
}
}
Parameter
Type
Description
recycling.solo
boolean
When true
, recycles as individual post; otherwise groups with other recycled content
recycling.gap
number
Frequency number (1, 2, 3, etc.)
recycling.gap_freq
string
Frequency unit (Day
, Week
, or Month
)
recycling.start_date
string
Date to begin recycling (ISO 8601 format)
recycling.expire_count
string or number
Maximum number of times to recycle
recycling.expire_date
string
Date to stop recycling (ISO 8601 format, alternative to count)
POST /api/v1/posts/schedule
{
"bulk": {
"state": "recurring",
"posts": [
{
"networks": {
"default": {
"type": "status",
"text": "Weekly update post"
}
},
"accounts": [
{
"id": "66f509f7db2797026a37ba76"
}
],
"recurring": {
"start_date": "2025-05-01T03:45-04:00",
"end_date": "2025-06-01T03:45-04:00",
"repeat": "weekly",
"days_of_week": [1, 5],
"repeat_rate": 1
}
}
]
}
}
Parameter
Type
Required
Description
state
string
Yes
Must be set to recurring
recurring.start_date
string
Yes
First occurrence date (ISO 8601 format)
recurring.end_date
string
No
Last occurrence date (ISO 8601 format)
recurring.repeat
string
Yes
Frequency type: daily
, weekly
, or monthly
recurring.days_of_week
array
For weekly
Array of weekdays (1=Monday, 7=Sunday)
recurring.repeat_rate
number
No
How often to repeat (e.g., 1=every week, 2=every other week)
recurring.time
string
No
Fixed time for posts (format: "HH:MM")
{
"job_id": "6810dec617eae6d55d7a5e5b"
}
GET /api/v1/job_status/6810dec617eae6d55d7a5e5b
{
"status": "complete",
"payload": {
"failures": {}
},
"plan": {
// Current user's plan details
}
}
Status
Description
Next Action
working
Job is still being processed
Wait and check again
complete
Job finished (check failures object for partial failures)
Review results
failed
Job failed completely
Check error details and retry
Automatically publish the same post at regular intervals, indefinitely or until a specified stop condition.
POST /api/v1/posts/schedule
Authorization
Yes
Bearer-API YOUR_API_KEY
Publer-Workspace-Id
Yes
Your workspace identifier
Content-Type
Yes
application/json
Accept
No
application/json
(default)
Include a recurring
object under each post:
{
"bulk": {
"state": "scheduled",
"posts": [
{
"networks": {
"default": {
"type": "status",
"text": "Weekly reminder: Check our latest updates every Monday!"
}
},
"accounts": [
{ "id": "ACCOUNT_ID" }
],
"recurring": {
"frequency": "Week",
"repeat_every": 1,
"start_date": "2025-06-02T09:00:00Z",
"weekdays": ["Monday"]
}
}
]
}
}
frequency
string
Unit of recurrence: Day
, Week
, Month
, or Year
repeat_every
integer
Interval between posts (e.g., 1
for every week, 2
for every 2 weeks)
start_date
string
ISO 8601 timestamp for the first occurrence
weekdays
array
Days of week for weekly recurrence (e.g., ["Monday", "Wednesday"]
)
days
array
Days of month for monthly/yearly recurrence (e.g., [1, 15, 28]
)
end_date
string
ISO 8601 timestamp to stop recurrence (optional)
occurrences
integer
Maximum number of total occurrences (optional)
Every Monday at 9:00 AM:
{
"bulk": {
"state": "scheduled",
"posts": [{
"networks": {
"facebook": {
"type": "status",
"text": "Weekly reminder: Check our latest updates every Monday!"
}
},
"accounts": [{
"id": "66f509f7db2797026a37ba76"
}],
"recurring": {
"frequency": "Week",
"repeat_every": 1,
"start_date": "2025-06-02T09:00:00Z",
"weekdays": ["Monday"]
}
}]
}
}
Every other Tuesday and Thursday, for 10 occurrences:
{
"bulk": {
"state": "scheduled",
"posts": [{
"networks": {
"facebook": {
"type": "status",
"text": "Biweekly product update: See what's improved!"
}
},
"accounts": [{
"id": "66f509f7db2797026a37ba76"
}],
"recurring": {
"frequency": "Week",
"repeat_every": 2,
"start_date": "2025-06-03T15:30:00Z",
"weekdays": ["Tuesday", "Thursday"],
"occurrences": 10
}
}]
}
}
Create a post with recurring
settings.
Schedule first occurrence at start_date
.
Generate subsequent posts at each interval (repeat_every
+ frequency
).
Stop when reaching occurrences
count or passing end_date
.
Platform
Recurring Support
Notes
Full support
No special requirements
Full support
No special requirements
Full support
No special requirements
Limited
Requires 10+ variations using Spintax Generator
Limited
Requires 10+ variations using Spintax Generator
Google Business Profile
Limited
Requires 10+ variations using Spintax Generator
YouTube
Not supported
API limitations
TikTok
Not supported
API limitations
WordPress
Not supported
API limitations
Regular reminders (e.g., weekly tips).
Monthly newsletters or reports.
Annual event notifications (e.g., holidays).
Routine promotions or offers.
Evergreen Content: Use for timeless messages that benefit from repetition.
Stop Conditions: Always set end_date
or occurrences
to avoid indefinite runs.
Combine Actions: Add follow-up comments or auto-deletion for full lifecycle management.
Audience Consideration: Avoid fatigue by spacing posts appropriately.
Recurring Posts: Fixed dates/times on a repeating schedule.
Recycling Posts: Fills open slots based on your posting calendar.