Retrieves the authenticated user's account information
Example Response
{
"data": {
"account": {
"id": "...",
"email": "...",
"backupEmail": "...",
"avatar": "..."
}
}
}
Connect Buffer to your agents, automation tools, or build something entirely new.
Retrieves the authenticated user's account information
{
"data": {
"account": {
"id": "...",
"email": "...",
"backupEmail": "...",
"avatar": "..."
}
}
}
Fetches a single channel using the provided ID
| Name | Type | Description |
|---|---|---|
| input Required | ChannelInput! | Query's input. |
{
"data": {
"channel": {
"id": "...",
"allowedActions": [
"backfillChannel"
],
"avatar": "...",
"descriptor": "..."
}
}
}
Fetch all channels for the organization taking into account the current's user permissions
| Name | Type | Description |
|---|---|---|
| input Required | ChannelsInput! | Query's input. |
{
"data": {
"channels": [
{
"id": "...",
"allowedActions": [
"backfillChannel"
],
"avatar": "...",
"descriptor": "..."
}
]
}
}
Aggregate normalized post metrics across a filtered post set. Useful for yearly summaries, channel-level rollups, and BI exports without paginating through thousands of posts.
For per-post metrics, use posts(input) or post(input) with a
metrics { … } selection — this query is purely for aggregation.
The result always contains a baseline trio of entries: postCount
(number of matched posts in the window), reactions, and comments.
Posts on networks that don't track reactions or comments contribute 0
to those totals.
Beyond the baseline, additional metric types are returned only when every channel in the filter set supports them. A single-network filter surfaces that network's richer metrics (e.g. impressions, reach, engagementRate on LinkedIn); a mixed-network filter trims the extras to those common to every network in the set.
| Name | Type | Description |
|---|---|---|
| input Required | AggregatedPostMetricsInput! | Query's input: organization, date range, optional channel and tag filters. Date range is capped to 365 days. |
{
"data": {
"aggregatedPostMetrics": {
"metrics": [
{
"description": "...",
"name": "...",
"type": "averageTimeWatched",
"unit": "count"
}
],
"metricsUpdatedAt": "..."
}
}
}
Returns daily posting limit status for the given channels on the specified date.
| Name | Type | Description |
|---|---|---|
| input Required | DailyPostingLimitsInput! | Query's input. |
{
"data": {
"dailyPostingLimits": [
{
"channelId": "...",
"isAtLimit": true,
"limit": 0,
"scheduled": 0
}
]
}
}
Refresh metadata and preview availability for one Instagram audio asset. Requires Facebook Login. Instagram Login channels return ChannelRefreshRequired.
| Name | Type | Description |
|---|---|---|
| input Required | InstagramAudioInput! | Channel and audio asset used to refresh metadata. |
{
"data": {
"instagramAudio": {}
}
}
Fetches a post by PostID for the given organization: first and last can be set for forward pagination using Relay convention
| Name | Type | Description |
|---|---|---|
| input Required | PostInput! | Query's input. |
{
"data": {
"post": {
"id": "...",
"allowedActions": [
"addPostNote"
],
"assets": [
{
"id": "...",
"mimeType": "...",
"source": "...",
"thumbnail": "..."
}
],
"author": {
"id": "...",
"avatar": "...",
"email": "...",
"isDeleted": true
}
}
}
}
Fetches posts for the given organization: first and last can be set for forward pagination using Relay convention
| Name | Type | Description |
|---|---|---|
| after Optional | String | The cursor of the post to start fetching from |
| first Optional | Int | The number of posts to return |
| input Required | PostsInput! | Query's input. |
{
"data": {
"posts": {
"edges": [
{
"cursor": "...",
"node": {}
}
],
"pageInfo": {
"endCursor": "...",
"hasNextPage": true,
"hasPreviousPage": true,
"startCursor": "..."
}
}
}
}
Fetch a single post template by ID. Returns null if not found.
| Name | Type | Description |
|---|---|---|
| input Required | PostTemplateInput! | Input for fetching a single post template. |
{
"data": {
"postTemplate": {
"id": "...",
"body": "...",
"description": "...",
"emoji": "..."
}
}
}
Fetch the templates visible to the current actor for the template
library: public templates, plus internal templates from the supplied
organizationId, plus private templates owned by the actor's
account. The visibility scope is always pinned to the actor and the
supplied organization — the input filter can only narrow within that
scope, never widen it.
| Name | Type | Description |
|---|---|---|
| after Optional | String | The cursor after which to return results. |
| first Optional | Int | The number of templates to return. |
| input Required | PostTemplatesInput! | Input containing the organization scope and optional filters. |
{
"data": {
"postTemplates": {
"edges": [
{
"cursor": "...",
"node": {}
}
],
"pageInfo": {
"endCursor": "...",
"hasNextPage": true,
"hasPreviousPage": true,
"startCursor": "..."
},
"totalCount": 0
}
}
}
Search Instagram audio for one channel. Requires Facebook Login. Instagram Login channels return ChannelRefreshRequired.
| Name | Type | Description |
|---|---|---|
| input Required | SearchInstagramAudioInput! | Channel, catalog type, and search text. |
{
"data": {
"searchInstagramAudio": {}
}
}
Return Meta trending Instagram audio for one channel. Requires Facebook Login. Instagram Login channels return ChannelRefreshRequired.
| Name | Type | Description |
|---|---|---|
| input Required | TrendingInstagramAudioInput! | Channel and catalog type for Meta trending audio. |
{
"data": {
"trendingInstagramAudio": {}
}
}
Create post for channel
| Name | Type | Description |
|---|---|---|
| input Required | CreatePostInput! | The mutation's input |
{
"data": {
"createPost": {}
}
}
Create a post template visible only to the caller (private) or to
the caller's organization (internal).
| Name | Type | Description |
|---|---|---|
| input Required | CreatePostTemplateInput! | Input for creating a post template. |
{
"data": {
"createPostTemplate": {}
}
}
Delete a post by id.
| Name | Type | Description |
|---|---|---|
| input Required | DeletePostInput! | Input for the deletePost mutation. |
{
"data": {
"deletePost": {}
}
}
Delete a post template owned by the caller (or an internal template in the caller's organization, if the caller is an org admin/owner).
| Name | Type | Description |
|---|---|---|
| input Required | DeletePostTemplateInput! | Input for deleting a post template. |
{
"data": {
"deletePostTemplate": {}
}
}
Edit post for channel
| Name | Type | Description |
|---|---|---|
| input Required | EditPostInput! | The mutation's input |
{
"data": {
"editPost": {}
}
}
Move a queued post to the top or bottom of its channel's queue. Unlike editPost, this is a scheduling-only operation that never re-validates the post's content.
| Name | Type | Description |
|---|---|---|
| input Required | MovePostInQueueInput! | The mutation's input |
{
"data": {
"movePostInQueue": {}
}
}
Promote a channel-less draft into channel-specific posts. One-way: once promoted, the content item can no longer be edited as a draft. If any post fails validation, none are created. A failure can also be reported when a post could not be fully processed after the promotion already took effect; re-fetch the content item to check its state before retrying.
This API is an early preview and can change without a deprecation period.
| Name | Type | Description |
|---|---|---|
| input Required | PromoteContentItemDraftToPostsInput! | Input for promoteContentItemDraftToPosts. |
{
"data": {
"promoteContentItemDraftToPosts": {}
}
}
Update a content item's title or target date. Fields that are omitted keep their current value.
This API is an early preview and can change without a deprecation period.
| Name | Type | Description |
|---|---|---|
| input Required | UpdateContentItemInput! | Input for updateContentItem. |
{
"data": {
"updateContentItem": {}
}
}
Replace a channel-less draft's content in full, and optionally set the content item's target date in the same write. The draft needs text or at least one asset. Only valid while the content item is still a draft.
This API is an early preview and can change without a deprecation period.
| Name | Type | Description |
|---|---|---|
| input Required | UpdateContentItemDraftInput! | Input for updateContentItemDraft. |
{
"data": {
"updateContentItemDraft": {}
}
}
Update a post template owned by the caller (or an internal template in the caller's organization, if the caller is an org admin/owner).
| Name | Type | Description |
|---|---|---|
| input Required | UpdatePostTemplateInput! | Input for updating a post template. |
{
"data": {
"updatePostTemplate": {}
}
}
Retrieves idea groups based on the provided input parameters.
| Name | Type | Description |
|---|---|---|
| input Required | IdeaGroupsInput! | Input for retrieving idea groups. |
{
"data": {
"ideaGroups": [
{
"id": "...",
"isLocked": true,
"name": "..."
}
]
}
}
Fetch a paginated list of ideas with optional filtering
| Name | Type | Description |
|---|---|---|
| after Optional | String | Cursor for pagination, marks where to start fetching from |
| first Optional | Int | Maximum number of items to return |
| input Required | IdeasInput! | Filtering criteria for the ideas list |
{
"data": {
"ideas": {
"edges": [
{
"cursor": "...",
"node": {}
}
],
"pageInfo": {
"endCursor": "...",
"hasNextPage": true,
"hasPreviousPage": true,
"startCursor": "..."
}
}
}
}
Create a new idea with the given content and metadata
| Name | Type | Description |
|---|---|---|
| input Required | CreateIdeaInput! | Input to create an idea |
{
"data": {
"createIdea": {}
}
}
Global, per-organization configuration: the connected channels the actor can
view (with per-feature authorization) plus the service-level capability
catalog (services). One round trip for every capability domain; clients
select only what they need.
| Name | Type | Description |
|---|---|---|
| input Required | ConfigurationInput! | Input for the configuration query. |
{
"data": {
"configuration": {
"channels": [
{
"authorizationStatus": [
{}
],
"channelId": "...",
"channelType": "account",
"content": [
{}
]
}
],
"services": [
{
"channelType": "account",
"content": [
{}
],
"engagement": [
{}
],
"service": "bluesky"
}
]
}
}
}
Fetch a single content item by id. Errors if no content item with that id exists.
This API is an early preview and can change without a deprecation period.
| Name | Type | Description |
|---|---|---|
| input Required | ContentItemInput! | Input for fetching a single content item. |
{
"data": {
"contentItem": {
"id": "...",
"accountId": "...",
"allowedActions": [
"deleteContentItem"
],
"author": {
"id": "...",
"avatar": "...",
"email": "...",
"isDeleted": true
}
}
}
}
Fetch an organization's content items in the requested order, newest first
by default. Uses standard cursor pagination: pass the previous page's
pageInfo.endCursor as after to fetch the next page. Requesting more than
100 items in a single page is rejected.
This API is an early preview and can change without a deprecation period.
| Name | Type | Description |
|---|---|---|
| after Optional | String | The cursor after which to return results. Cursors are opaque: treat them as a black box and reset to null when the input changes, since a cursor from a different result set produces undefined behavior. |
| first Optional | Int | The number of content items to return, up to 100. |
| input Required | ContentItemsInput! | Input for listing content items. |
{
"data": {
"contentItems": {
"edges": [
{
"cursor": "...",
"node": {}
}
],
"pageInfo": {
"endCursor": "...",
"hasNextPage": true,
"hasPreviousPage": true,
"startCursor": "..."
},
"totalCount": 0
}
}
}
Create a content item together with all of its channel-specific post variants in a single operation. Validation is all-or-nothing: if any variant fails validation, no content item and no variants are created. Variants that fail while being processed after creation are reported per channel in the failure payload; the content item and its variants are still created in that case.
This API is an early preview and can change without a deprecation period.
| Name | Type | Description |
|---|---|---|
| input Required | CreateContentItemInput! | Input for createContentItem. |
{
"data": {
"createContentItem": {}
}
}
Create a content item holding a channel-less draft, before any channels are selected. No network-specific validation applies to the draft content. The draft needs text or at least one asset.
This API is an early preview and can change without a deprecation period.
| Name | Type | Description |
|---|---|---|
| input Required | CreateContentItemDraftInput! | Input for createContentItemDraft. |
{
"data": {
"createContentItemDraft": {}
}
}
Delete a content item: the item itself and any posts created from it. Deletion is all-or-nothing. Every post must be deletable on its own, or nothing is deleted and every blocked post is reported at once. A post can only be deleted while it is a draft, awaiting approval, scheduled, or failed, so an item cannot be deleted while any of its posts is publishing or already published. An item still holding a channel-less draft has no posts, so nothing blocks it. An error can also be reported when a post could not be fully processed after the deletion already took effect; re-fetch before retrying.
This API is an early preview and can change without a deprecation period.
| Name | Type | Description |
|---|---|---|
| input Required | DeleteContentItemInput! | Input for deleteContentItem. |
{
"data": {
"deleteContentItem": {}
}
}
Indicates exactly one field must be supplied and this field must not be null.
Locations: INPUT_OBJECT