Create Scheduled Post
Scheduled posts can be created using the createPost mutation with the customScheduled mode and a dueAt timestamp. When creating a scheduled post, there are several required arguments:
The channel ID that the post is being created for
The scheduling type to be used for the post (automatic or notification)
The sharing mode set to
customScheduledto schedule the post for a specific timeThe
dueAttimestamp for when the post should be publishedThe text to be used when creating the Post
When performing the mutation, the PostActionSuccess type can be used to retrieve the information for the Post that was created. Similarly, the MutationError will provide you with information on the error that was triggered when trying to create the post.
mutation CreatePost {
createPost(input: {
text: "Hello there, this is another one!",
channelId: "some_channel_id",
schedulingType: automatic,
mode: customScheduled,
dueAt: "2026-03-26T10:28:47.545Z"
}) {
... on PostActionSuccess {
post {
id
text
assets {
id
mimeType
}
}
}
... on MutationError {
message
}
}
}
curl -X POST 'https://api.buffer.com' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-d '{"query": "mutation CreatePost {\n createPost(input: {\n text: \"Hello there, this is another one!\",\n channelId: \"some_channel_id\",\n schedulingType: automatic,\n mode: customScheduled,\n dueAt: \"2026-03-26T10:28:47.545Z\"\n }) {\n ... on PostActionSuccess {\n post {\n id\n text\n assets {\n id\n mimeType\n }\n }\n }\n ... on MutationError {\n message\n }\n }\n}"}'
const response = await fetch('https://api.buffer.com', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer YOUR_API_KEY',
},
body: JSON.stringify({
query: `
mutation CreatePost {
createPost(input: {
text: "Hello there, this is another one!",
channelId: "some_channel_id",
schedulingType: automatic,
mode: customScheduled,
dueAt: "2026-03-26T10:28:47.545Z"
}) {
... on PostActionSuccess {
post {
id
text
assets {
id
mimeType
}
}
}
... on MutationError {
message
}
}
}
`,
}),
});
const data = await response.json();
console.log(data);
<?php
$query = '
mutation CreatePost {
createPost(input: {
text: "Hello there, this is another one!",
channelId: "some_channel_id",
schedulingType: automatic,
mode: customScheduled,
dueAt: "2026-03-26T10:28:47.545Z"
}) {
... on PostActionSuccess {
post {
id
text
assets {
id
mimeType
}
}
}
... on MutationError {
message
}
}
}
';
$payload = [
'query' => $query,
];
$ch = curl_init('https://api.buffer.com');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => [
'Content-Type: application/json',
'Authorization: Bearer YOUR_API_KEY',
],
CURLOPT_POSTFIELDS => json_encode($payload),
CURLOPT_RETURNTRANSFER => true,
]);
$response = curl_exec($ch);
curl_close($ch);
$data = json_decode($response, true);
print_r($data);