Create Text Post
Text posts can be created using the createPost mutation. When creating a 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 to be used for the post (add the post to the queue, share it now or share it next)
The 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: customSchedule,
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: customSchedule,\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: customSchedule,
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: customSchedule,
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);