GraphQL API
Buffer's current API shape, at /api/graphql — query exactly what you need, schedule with createPost and createSchedule.
Endpoint
POST https://api.buffersass.dev/api/graphql — Bearer auth, JSON body { query, variables }. Same tokens as REST.Queries
query
query Account {
account {
name
plan
workspaceName
sandbox
}
channels {
id
service
serviceUsername
schedules { days times }
}
}GraphQL returns only the fields you select — fetch less, pay fewer round-trips. See Efficient API Usage.
query
query Queue($channelId: ID!, $first: Int) {
posts(channelId: $channelId, status: "scheduled", first: $first) {
id
text
scheduledAt
channel { service serviceUsername }
metrics { reach likes comments shares clicks }
}
usage {
successfulPostsUsed
successfulPostsLimit
overageRatePerPost
}
}Mutations — scheduling
mutation
mutation Ship {
createPost(input: {
channels: ["cha_9a1…"]
text: "Ship day! v2.4 is live 🚀"
scheduledAt: "2026-11-10T14:30:00Z"
media: [{ url: "https://cdn.acme.dev/launch.png" }]
}) {
id
status
scheduledAt
}
}mutation
mutation Reslot($channelId: ID!) {
createSchedule(channelId: $channelId, schedules: [
{ days: ["mon","wed","fri"], times: ["09:30","17:30"] }
]) {
id
schedules { days times }
}
}createSchedule mirrors Buffer's scheduling mutation; use it to set the weekly time slots behind “Add to Queue”.
All mutations
| Parameter | Type | Description |
|---|---|---|
| createPost(input) | CreatePostInput | channels, text, media, scheduledAt, now, top, draft → [Post!] |
| updatePost(id, input) | UpdatePostInput | edit text / scheduledAt |
| destroyPost(id) | ID | delete an update |
| publishNow(id) | ID | publish immediately |
| moveToTop(id) | ID | front of the queue |
| approvePost(id) / declinePost(id) | ID | approvals workflow |
| createSchedule(channelId, schedules) | ScheduleInput | weekly time slots |
| connectChannel(service) | String | connect a network |
| disconnectChannel(id) | ID | remove a channel |
| createIdea(text) / destroyIdea(id) | String | ideas inbox |
Test queries without leaving the docs in the API Explorer — it runs against your signed-in workspace.