Publishing Methods
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.
Available Methods
Immediate Publishing
Send your post to networks right away.
Endpoint:
POST /api/v1/posts/schedule/publishRequest example:
{
"bulk": {
"state": "scheduled",
"posts": [
{
"networks": {
"facebook": {
"type": "status",
"text": "Breaking news update!"
}
},
"accounts": [
{
"id": "66db83154e299efa19a2d8eb"
// No scheduled_at parameter
}
]
}
]
}
}Implementation Notes
Omit
scheduled_atentirelyContent is processed immediately via the schedule/publish endpoint
Supports all content types and network-specific options
Learn more about immediate publishing
Scheduled Publishing
Plan posts for future dates and times across multiple networks.
Endpoint:
POST /api/v1/posts/scheduleRequest example:
{
"bulk": {
"state": "scheduled",
"posts": [
{
"networks": {
"facebook": {
"type": "status",
"text": "Scheduled announcement for next week!"
}
},
"accounts": [
{
"id": "66db83154e299efa19a2d8eb",
"scheduled_at": "2025-05-15T14:30:00Z"
}
]
}
]
}
}Implementation Notes
Include a valid ISO 8601
scheduled_attimestampTimes must be at least 1 minute in the future
Supports timezone offsets
Each account can have its own
scheduled_at
Learn more about scheduled publishing
Draft Posts
Save work-in-progress content for review or refinement.
Endpoint:
POST /api/v1/posts/scheduleRequest example (private draft):
{
"bulk": {
"state": "draft_private",
"posts": [
{
"networks": {
"facebook": {
"type": "status",
"text": "Draft post for later review"
}
},
"accounts": [
{
"id": "66f509f7db2797026a37ba76"
}
]
}
]
}
}Visibility Options
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
Auto-Scheduling
Let Publer pick the best posting times within a date range.
Endpoint:
POST /api/v1/posts/scheduleBefore auto-scheduling, you need to keep in mind that:
You need a posting schedule. Posting schedules 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 Duplicating Settings.
Request example:
{
"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
}
]
}
}Key Auto-Scheduling Parameters
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
Learn more about auto-scheduling
Recycling Content
Automatically repost content multiple times on a defined cadence.
Endpoint:
POST /api/v1/posts/scheduleTo Recycle a post:
First, you need to create a post and a posting schedule. Click here to learn how to set up a new time slot for your posts.
Request example:
{
"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"
}
}
]
}
}Key recycling parameters:
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)
Learn more about recycle posts
Recurring Posts
Schedule content to repeat on a predefined pattern.
Endpoint:
POST /api/v1/posts/scheduleRequest example:
{
"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")
Learn more about recurring posts
Response Handling
All publishing methods return a job ID for asynchronous processing:
{
"job_id": "6810dec617eae6d55d7a5e5b"
}Checking Job Status
Always verify success by checking the job status:
GET /api/v1/job_status/6810dec617eae6d55d7a5e5bExample success response:
{
"status": "complete",
"payload": {
"failures": {}
},
"plan": {
// Current user's plan details
}
}Job Status Values
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
Advanced Usage Tips
Network-specific content: Override content for specific platforms
Multi-account publishing: Target multiple accounts in a single request
Last updated
Was this helpful?

