Skip to content

Update a publication

PATCH
/projects/{id}/publications/{publicationId}
curl --request PATCH \
--url https://api.warmup.social/projects/00000000-0000-0000-0000-000000000000/publications/00000000-0000-0000-0000-000000000000 \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "scheduledAt": "2026-11-03T09:00:00.000Z", "timezone": "Europe/Kyiv" }'

Partial update of a publication that has not been sent yet (state is draft or scheduled). The merged result must satisfy the same rules as “Create a publication”. scheduledAt: null removes the date. Changing state to scheduled without a date sends the publication right away.

id
required
string format: uuid

Example

00000000-0000-0000-0000-000000000000

Project UUID.

publicationId
required
string format: uuid

Example

00000000-0000-0000-0000-000000000000

Publication UUID.

Media typeapplication/json

Any subset of the fields below; at least one. Unknown fields are rejected. null in text, mediaId or scheduledAt clears the field.

object
>= 1 properties
kind
string
Allowed values: text photo story
platforms
Array<string>
>= 1 items <= 3 items unique items
Allowed values: facebook instagram threads
text
string
nullable >= 1 characters
mediaId
string format: uuid
nullable
state
string
Allowed values: draft scheduled
scheduledAt

null removes the date.

string format: date-time
nullable
timezone
string
<= 64 characters

Example

{
"scheduledAt": "2026-11-03T09:00:00.000Z",
"timezone": "Europe/Kyiv"
}

The updated publication.

Media typeapplication/json
object
id
required
string format: uuid
kind
required
string
Allowed values: text photo story
state
required

draft and scheduled — not sent yet. After sending: publishing while any network is still in progress, published when every network succeeded, otherwise failed (see targets[] for the per-network outcome).

string
Allowed values: draft scheduled publishing published failed
platforms
required
Array<string>
Allowed values: facebook instagram threads
text
required
string
nullable
media
required
object
id
required
string format: uuid
url
required
string format: uri
width
required
integer
height
required
integer
scheduledAt
required

When the publication goes (or went) out. null only for a draft without a date.

string format: date-time
nullable
timezone
required
string
createdAt
required
string format: date-time
updatedAt
required
string format: date-time
targets
required

Per-network outcome. Empty until the publication is sent.

Array<object>
object
platform
required
string
Allowed values: facebook instagram threads
status
required
string
Allowed values: queued publishing published failed
externalPostId
required
string
nullable
permalink
required
string
nullable
errorCode
required

Why the target failed. published_unconfirmed — Meta published the post but did not return its id; the post most likely went out.

string
nullable
Allowed values: connection_missing connection_not_ready media_not_found media_aspect_ratio needs_reauth rate_limit meta_unavailable media_rejected published_unconfirmed
publishedAt
required
string format: date-time
nullable

Example

{
"kind": "text",
"state": "draft",
"platforms": [
"facebook"
],
"media": {
"width": 1080,
"height": 1350
},
"timezone": "Europe/Kyiv",
"targets": [
{
"platform": "facebook",
"status": "queued",
"errorCode": "connection_missing"
}
]
}

Validation failed (same codes as “Create a publication”, plus empty_patch) or scheduledAt is in the past (scheduled_at_past).

Media typeapplication/json

Error with a machine-readable code. Body validation errors come as formErrors / fieldErrors; business errors carry a code.

object
code
string
platform
string
Allowed values: facebook instagram threads
formErrors
Array<string>
fieldErrors
object
key
additional properties
Array<string>

Example

{
"code": "connection_missing",
"platform": "facebook",
"fieldErrors": {
"mediaId": [
"media_required"
]
}
}

The Bearer token is missing or invalid.

Media typeapplication/json
object
statusCode
required
integer
message
required
One of:
string
error
string
key
additional properties
any

Example

{
"statusCode": 400,
"message": "Invalid request",
"error": "Bad Request"
}

The requested resource was not found.

Media typeapplication/json
object
statusCode
required
integer
message
required
One of:
string
error
string
key
additional properties
any

Example

{
"statusCode": 400,
"message": "Invalid request",
"error": "Bad Request"
}

The publication was already sent (publication_dispatched), the network is not connected (connection_missing) or the connection is not active (connection_not_ready).

Media typeapplication/json

Error with a machine-readable code. Body validation errors come as formErrors / fieldErrors; business errors carry a code.

object
code
string
platform
string
Allowed values: facebook instagram threads
formErrors
Array<string>
fieldErrors
object
key
additional properties
Array<string>

Example

{
"code": "connection_missing",
"platform": "facebook",
"fieldErrors": {
"mediaId": [
"media_required"
]
}
}