For the complete documentation index, see llms.txt. This page is also available as Markdown.

Unpublished Posts

Once a post exists, you can move it, promote it, change its state, or delete it — without rebuilding the payload. These endpoints complement PUT /api/v1/posts/{id}, which only changes text and title.

Requirements

  • Authentication: Bearer API token

  • Scope: posts

  • Headers:

    • Authorization: Bearer-API YOUR_API_KEY

    • Publer-Workspace-Id: YOUR_WORKSPACE_ID

All four endpoints require that the API key's user is the creator of the post. A key belonging to a different member of the same workspace can read the post but not modify it.

Reschedule Post

Move a scheduled post to a new time.

PUT /api/v1/posts/{id}/reschedule

Reschedule Post

put

Reschedules a post to a new date and time. This may trigger approval workflows depending on workspace settings.

Authorizations
AuthorizationstringRequired

API key authentication. Format: "Bearer-API YOUR_API_KEY"

Path parameters
idstringRequired

ID of the post to reschedule

Header parameters
Publer-Workspace-IdstringRequired

ID of the workspace containing the post

Body
scheduled_atstring · date-timeRequired

New date and time for the post in ISO 8601 format

Responses
200

Post successfully rescheduled

application/json
idstringOptional

Unique identifier for the post

statestringOptional

Current state of the post

scheduled_atstring · date-timeOptional

New scheduled date and time for the post

detailsobjectOptional

Additional details about the post

put/posts/{id}/reschedule
PUT /api/v1/posts/{id}/reschedule HTTP/1.1
Host: app.publer.com
Authorization: YOUR_API_KEY
Publer-Workspace-Id: text
Content-Type: application/json
Accept: */*
Content-Length: 43

{
  "scheduled_at": "2026-01-01T00:00:00.000Z"
}
{
  "id": "text",
  "state": "text",
  "scheduled_at": "2026-01-01T00:00:00.000Z",
  "details": {}
}

Example:


Publish Post Now

Publish a draft, scheduled or failed post immediately.

Publish Post Now

post

Immediately publishes a scheduled/draft post to its associated social media account.

Authorizations
AuthorizationstringRequired

API key authentication. Format: "Bearer-API YOUR_API_KEY"

Path parameters
idstringRequired

ID of the post to publish

Header parameters
Publer-Workspace-IdstringRequired

ID of the workspace containing the post

Responses
200

Post publishing job started successfully

application/json
job_idstringOptional

ID of the background job that will publish the post

post/posts/{id}/publish_now
POST /api/v1/posts/{id}/publish_now HTTP/1.1
Host: app.publer.com
Authorization: YOUR_API_KEY
Publer-Workspace-Id: text
Accept: */*
{
  "job_id": "text"
}

Returns { "job_id": "..." }. Poll Job Status for the outcome. Retrying a failed post clears its upload checkpoints first, so the publish starts cleanly.


Change Post State

Promote a draft to scheduled, or move a post back to draft.

Change Post State

put

Changes the state of a post, for example promoting a draft to scheduled.

Authorizations
AuthorizationstringRequired

API key authentication. Format: "Bearer-API YOUR_API_KEY"

Path parameters
idstringRequired

ID of the post

Header parameters
Publer-Workspace-IdstringRequired

ID of the workspace containing the resource

Body
Responses
200

Post updated

application/json
idstringOptional

Unique identifier for the post

Example: 68176f0e8bee9dc9b0ce3427
textstringOptional

Post text content

Example: Check out our new product launch!
statestringOptional

Current state of the post

Example: scheduled
typestringOptional

Type of post

Example: photo
account_idstringOptional

ID of the social account

Example: 63c675b54e299e9cf2b667ea
scheduled_atstringOptional

Scheduled publication time

Example: 2025-05-15T14:30:00.000+02:00
created_atstringOptional

Creation timestamp

Example: 2025-04-28T10:15:23.000+02:00
updated_atstringOptional

Last update timestamp

Example: 2025-04-29T11:30:45.000+02:00
post_linkstringOptional

Link to the published post on the social network

Example: https://facebook.com/post/123456789
autobooleanOptional

Whether this post was auto-scheduled

put/posts/{id}/state
PUT /api/v1/posts/{id}/state HTTP/1.1
Host: app.publer.com
Authorization: YOUR_API_KEY
Publer-Workspace-Id: text
Content-Type: application/json
Accept: */*
Content-Length: 25

{
  "post": {
    "state": "text"
  }
}
{
  "id": "68176f0e8bee9dc9b0ce3427",
  "text": "Check out our new product launch!",
  "state": "scheduled",
  "type": "photo",
  "account_id": "63c675b54e299e9cf2b667ea",
  "account": {
    "id": "63c675b54e299e9cf2b667ea",
    "type": "facebook_page",
    "name": "My Business Page",
    "picture": "https://graph.facebook.com/123456789/picture"
  },
  "user": {
    "id": "5b1ec026db27977424e8599e",
    "name": "ervintorra",
    "picture": "https://publer-dev.s3.amazonaws.com/uploads/photos/thumb_mini_magick20250123-28707-otuw0w.png"
  },
  "scheduled_at": "2025-05-15T14:30:00.000+02:00",
  "created_at": "2025-04-28T10:15:23.000+02:00",
  "updated_at": "2025-04-29T11:30:45.000+02:00",
  "post_link": "https://facebook.com/post/123456789",
  "media": [
    {
      "id": "66fba4234e299e531f5dc100",
      "type": "image",
      "url": "https://publer-media.s3.amazonaws.com/uploads/images/product-launch.jpg",
      "alt_text": "Product launch announcement image"
    }
  ],
  "link": {
    "url": "https://example.com/product-launch",
    "title": "New Product Launch",
    "description": "Check out our latest product innovation",
    "image_url": "https://example.com/images/product.jpg"
  },
  "labels": [
    {
      "id": "607c2f9a5e2c3d0789abcdef",
      "name": "Product Launch",
      "color": "#FF5733"
    }
  ],
  "auto": false,
  "recycling": {
    "solo": true,
    "gap": 2,
    "gap_freq": "Week",
    "start_date": "2025-06-01",
    "expire_count": 3
  },
  "recurring": {
    "frequency": "Week",
    "repeat_every": 1,
    "weekdays": [
      "Monday"
    ],
    "start_date": "2025-06-02T09:00:00.000Z"
  }
}

Example:

This is the intended "build as a draft, release later" flow: create with state: "draft", verify with GET /api/v1/posts/{id}, then flip to scheduled.


Delete Post

Delete one post.

Use this to remove a single post. DELETE /api/v1/posts remains the bulk operation, taking post_ids[] or state filters.

Notes

  • A post that does not exist returns 422, not 404. A post in another workspace returns 403.

  • Posts already in the publishing queue cannot be rescheduled, published, or edited — wait for the queue to drain.

  • Posts published under an approval workflow cannot be deleted by editors.

  • Get Post — Read a single post back

  • Updating Posts — Change text and title

  • Deleting Posts — Bulk deletion

Last updated

Was this helpful?