Skip to content

Publish or schedule a draft

POST
/public/v1/posts/{id}/publish
curl --request POST \
--url https://api.loomta.com/public/v1/posts/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/publish \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "mode": "now" }'

Promote a DRAFT post into the direct-publish queue — publish it now or schedule it. TikTok drafts may supply reviewed content and current Direct Post settings in this request. Only works on posts in the DRAFT state.

id
required
string format: uuid

The post UUID.

Media typeapplication/json
object
mode

Optional (default now). now publishes immediately; schedule requires scheduledFor.

string
default: now
Allowed values: now schedule
scheduledFor

ISO 8601. Required when mode is schedule; ignored otherwise.

string format: date-time
content

Optional reviewed content to store before publishing.

string
>= 1 characters
settings

Optional reviewed provider settings to store before publishing.

object
key
additional properties
any
Examples

Publish the draft now

{
"mode": "now"
}

The updated post group (now QUEUE).

Media typeapplication/json
object
root
required
object
id
string format: uuid
groupId
string format: uuid
parentPostId
string | null format: uuid
integrationId
string format: uuid
content
string
state
string
Allowed values: DRAFT QUEUE PUBLISHED ACTION_REQUIRED ERROR
scheduledFor
string | null format: date-time
delayInMinutes
integer | null
releaseId
string | null
releaseUrl
string | null
settings
object
key
additional properties
any
mediaIds
Array<string>
errorText
string | null
createdAt
string format: date-time
updatedAt
string format: date-time
children
required
Array<object>
object
id
string format: uuid
groupId
string format: uuid
parentPostId
string | null format: uuid
integrationId
string format: uuid
content
string
state
string
Allowed values: DRAFT QUEUE PUBLISHED ACTION_REQUIRED ERROR
scheduledFor
string | null format: date-time
delayInMinutes
integer | null
releaseId
string | null
releaseUrl
string | null
settings
object
key
additional properties
any
mediaIds
Array<string>
errorText
string | null
createdAt
string format: date-time
updatedAt
string format: date-time
Example
{
"root": {
"state": "DRAFT"
},
"children": [
{
"state": "DRAFT"
}
]
}

The request body failed validation.

Media typeapplication/json
object
code
required

A stable, machine-readable error code to branch on.

string
message
required

A human-readable description.

string
details

Optional structured detail (for example Zod validation issues).

Example
{
"code": "invalid_request",
"message": "The request payload is invalid.",
"details": [
{
"path": [
"slideCount"
],
"message": "Number must be greater than or equal to 3"
}
]
}

The API key is missing or invalid.

Media typeapplication/json
object
code
required

A stable, machine-readable error code to branch on.

string
message
required

A human-readable description.

string
details

Optional structured detail (for example Zod validation issues).

Examples
{
"code": "missing_api_key",
"message": "A Bearer API key is required."
}

The resource was not found in this workspace.

Media typeapplication/json
object
code
required

A stable, machine-readable error code to branch on.

string
message
required

A human-readable description.

string
details

Optional structured detail (for example Zod validation issues).

Example
{
"code": "invalid_api_key",
"message": "The API key is invalid."
}

The post is not a draft.

Media typeapplication/json
object
code
required

A stable, machine-readable error code to branch on.

string
message
required

A human-readable description.

string
details

Optional structured detail (for example Zod validation issues).

Example
{
"code": "not_a_draft",
"message": "Only draft posts can be published this way."
}