Create Image Post
Creating a post with an image works in the same way as creating a text post, with the addition of the imageUrl argument. This argument is used to specify the URL of the image that you want to include in 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"
assets: {
images:[
{
url:"https://images.unsplash.com/photo-1742850541164-8eb59ecb3282?q=80&w=3388&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D"
}
]
}
}) {
... 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 assets: {\n images:[\n {\n url:\"https://images.unsplash.com/photo-1742850541164-8eb59ecb3282?q=80&w=3388&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D\"\n }\n ]\n }\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"
assets: {
images:[
{
url:"https://images.unsplash.com/photo-1742850541164-8eb59ecb3282?q=80&w=3388&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D"
}
]
}
}) {
... 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"
assets: {
images:[
{
url:"https://images.unsplash.com/photo-1742850541164-8eb59ecb3282?q=80&w=3388&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D"
}
]
}
}) {
... 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);