Retrieves the authenticated user's account information
{
"data": {
"account": {
"id": "...",
"email": "...",
"backupEmail": "...",
"avatar": "..."
}
}
}
| [ Web Proxy ] |
| Viewing: https://developers.buffer.com/examples/../guides/../reference.html#posts | [Back] [Original] |
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": "..."
}
]
}
}
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": {}
}
}
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": "clicks",
"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
}
]
}
}
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
}
}
}
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": {}
}
}
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": {}
}
}
Indicates exactly one field must be supplied and this field must not be null.
Locations: INPUT_OBJECT
Account is a representation of a Buffer user.
Unique identifier for the account
Primary email address for the account
Backup email address for account recovery
URL to the account's avatar image
Date the account was created in the Core DB. For older customers, it's possible a Publish account existed in the Publish DB for this customer before this date
| Name | Type | Description |
|---|---|---|
| filter Optional | OrganizationFilterInput | No description |
The account-level timezone - this is used as a default input for streaks, posting plans, and new channel channel connections.
The account name, different from the organization name
The accounts preferences
The connected apps for the account
Aggregated post metrics across a filtered post set. Each entry in
metrics mirrors the shape of a Post.metrics entry; the total number
of matched posts is carried as a regular PostMetric entry with
type: postCount.
Normalized metric aggregates across the matched posts. Always includes
a baseline trio (postCount, reactions, comments) posts on
networks that don't track reactions or comments contribute 0 to those
totals. Beyond the baseline, additional metric types are included only
when every channel in the filter set supports them.
The latest metricsUpdatedAt across the matched posts, indicating the
freshness of the aggregate. Metrics are refreshed daily, so values can
be up to ~24h behind the source network. Null when no posts matched
the filter.
Annotation representing all the entities in the text
The content of the annotation. Annotations can sometimes be different from the actual text content. E.g., Mastodon mentions have 'text: @buffer', but includes the server name in the content, 'content: @buffer@threads.net'
The indices of the annotation in the text
The text representation of the annotation, eg '@buffer'
The type of the annotation
The URL the annotation points to
Represent the author of a post or note.
The unique identifier of the author.
The avatar URL of the author.
The email address of the author.
Indicates whether the author is a deleted.
The name of the author. Null if the user has not yet set a name.
Bluesky metadata
The instance of bluesky of the channel
Annotations representing entities in the text
Link attachment
The list of threaded posts (not paginated)
The number of threaded posts
The channel-specific type of the post, eg, post, story, reel for Instagram
Channel entity
The ID of the channel
The allowed actions for the current user
The avatar URL of the channel
Formatted name of the channel service and type: e.g. 'Twitter Profile' or 'Facebook Page'
The display name of the channel - nullable (reason?)
The channel's URL on the social network (e.g. instagram.com/username or facebook.com/page) Returns null if the channel is not supported
Whether at least one member of the orginization who have access to this channel also has a user device registered for push notifications
Indicates if the channel is properly connected to Buffer
Indicates if the channel is locked - Locked channels can't be used for posting. A channel can be locked when the organization downgrades and reduces the channel quantity of their plan.
Indicates if the channel was recently created (in less than 10 seconds). This is used to determine the redirect modal after channel authorization
Indicates is the queue is paused for the channel. A paused queue means schedules posts won't be published.
Link Shortening settings for the channel
Metadata or settings depending on the service type - such as the server URL for Mastodon or Location data for Facebook/GPB
The name of the channel - the handle name, username, etc.
The organization ID of the channel
The posting goal for the channel
Provides the posting slots for each day of the week
Products that support a given channel
Scopes requested for a given channel - empty array if we don't have them tracked
Represents the social network
Represents the external ID of the channel on social network API
Indicates if trending topic suggestions should be shown in the composer. When false, users can still access trends via the trending icon button. Defaults to true for backward compatibility.
The timezone of the channel - Default if not set is Europe/London
The type of the channel - Page, Profile, Business, Group, Account, etc.
Weekly posting limit for the channel
Deprecation reason: This field is not used anymore
The creation date of the channel
The last time the channel was updated
Settings for link shortening
Configuration of link shortening integration. Null if disabled.
If link shortening is enabled for the channel
Connected App
The category of the connected app, when known.
The id of the connectedApp.
A brief description of the connected app.
The name of the connected app.
The access scopes granted to this connection for Buffer's public API resources. Empty when the connection holds none.
The id of the user that has granted access to the app.
The website URL of the connected app.
The date and time when the connected app was created.
Successful result of an end user creating a post template.
The newly created post template.
Status of daily posting limits for a channel on a given day.
The channel ID this status refers to.
Whether the channel has reached its daily posting limit.
The network daily posting limit. Null means unlimited.
Number of posts scheduled for this day.
Number of posts already sent on this day.
deletePost success response returns the post id that was deleted.
Post id that was delete.
The ID of the asset in the database
Document specific metadata
The MIME type of the asset
URL to the file source
URL to the static thumbnail of the asset
The type of the asset
Document metadata
Document fileSize in bytes
Number of pages in the document
URLs to the static thumbnails of the document pages
Document title
Empty mutation success response used when client doesn't need any data back or simply needs to respond to a success or error.
The value is always an empty string '' Note: GraphQL doesn't allow types with no fields, so we have to add this field
Facebook metadata
Metadata about the location of the business associated with the channel. Only available for Facebook and GPB
Annotations representing entities in the text
Facebook post's first comment
Link attachment
Title of Facebook reel
The channel-specific type of the post, eg, post, story, reel for Instagram
Metadata for a GBP post that is an event
Action button
End date of the event
End time of the event
Deprecation reason: get time from the endDate
Indicate whether the event has a start or end time.
Link to the action
Start date of the event
Start time of the event
Deprecation reason: get time from the startDate
Title of the event
Google Business metadata
Metadata about the location of the business associated with the channel. Only available for Facebook and GPB
Metadata for a GBP post that is an offer
Google Business Profile post metadata @deprecated: pending proposal for specific GBP post types: update, offer and event metadata types
Annotations representing entities in the text
Details of the metadata
Title if available in the given GBP post type: event and offer
The channel-specific type of the post, eg, post, story, reel for Instagram
Metadata for a GBP post of type Whats new
Action button
Link to the action
Ideas are the main entity in the create space
Unique identifier for the idea
The actual content and metadata of the idea
ID of the group this idea belongs to (if any)
ID of the organization that owns this idea
Numerical position for ordering within a group
Unix timestamp of when the idea was created
Unix timestamp of when the idea was last modified
Content of an idea
Indicates whether AI tools were used in creating this idea
DateTime set by user associated with the idea - this often reflects a target publish date.
List of media items attached to the idea
Services tagged by the user - this is typically used to annotate ideas with their target services
Tags used to categorize and organize the idea
Main body text or description of the idea
Title or headline of the idea
Pagination type for Ideas
Opaque cursor for pagination, used to fetch subsequent pages
The idea object
Idea groups are used to organize ideas in the board
Unique identifier for the idea group.
Whether the idea group is locked.
The name of the idea group.
Media attached to an idea
Unique identifier for the media in Buffer's upload system
Alternative text description for accessibility
File size in bytes
Source platform information for the media
URL to a smaller version of the media for preview purposes
Type of media (e.g., image, video, gif)
Direct URL to access the media file
Media source for the idea, e.g. Unsplash, Gifphy, etc.
Unique identifier from the source platform
Name of the content creator/author
URL to the author's profile on the source platform
Name of the media source platform (e.g., 'Unsplash', 'Giphy')
createIdea response type
The affected idea
If true, the client should refresh the ideas list because other ideas might have been moved
Relay connection for paginated ideas.
List of idea edges containing the ideas and their cursors
Pagination metadata including hasNextPage and endCursor
The ID of the asset in the database
Image specific metadata
The MIME type of the asset
URL to the file source
URL to the static thumbnail of the asset
The type of the asset
Image metadata
Alternative text for accessibility
Animated thumbnail URL
Image height in pixels
Is the image animated?
User tags in the image
Image width in pixels
Instagram Geolocation
The id of this location
The name of this location
Instagram metadata
Indicates if we should default to reminder for Instagram
Annotations representing entities in the text
Instagram post's first comment
Geolocation of the post
Whether the post discloses AI-generated content
Shop Grid link for the post
Sticker fields for reminder-based publishing
The channel-specific type of the post, eg, post, story, reel for Instagram
Instagram fields for reminder-based publishing. Upon the reminder for publishing, the user is prompted to copy and paste these fields into the Instagram app to complete the post.
Placeholder text for the post's music
Additional field for any other post content
Placeholder text for the post's linked products
Text for the Story or Reel
Placeholder text for the post's topics (Reels only)
Error message
Error message
Full URL that the link asset has been built from
Description for the scraped link
Selected thumbnail for this link preview
Thumbnails of media available in the link
Title for the link attachment
URL that the link asset has been built from
LinkedIn metadata
Property parsed from scopes indicating whether the client should show the LinkedIn analytics refresh banner
Annotations representing entities in the text
LinkedIn post's first comment
Link attachment
The channel-specific type of the post, eg, post, story, reel for Instagram
Link Shortening Configuration
Domain of the link shortener - eg buff.ly, dub.co, or the user's custom domain.
Human readable string to describe the link shortening service.
Location data about the channel
Google Account Id of the business
Location of the business associated with the channel
Link to the map
Mastodon metadata
Maximum character limit allowed for this channel's server instance
The instance of mastodon of the channel
Annotations representing entities in the text
Spoiler text hiding the root text of this post
The list of threaded posts (not paginated)
The number of threaded posts
The channel-specific type of the post, eg, post, story, reel for Instagram
Represents the members connection edge. Later, we can add the list of members with the page info to follow our connection edge pattern.
The total count of team members counting the org owner and team members from the Publish DB.
Note entity
The unique identifier of the note.
The allowed actions a user can perform on the note.
The author of the note - null if the user is deleted or left the organization.
The content of the note.
The type of the note.
The date and time when the note was created.
The date and time when the note was last edited.
Error message
Organization is a representation of a Buffer Organization.
The ID of the organization.
The total number of channels connected to the organization.
The limits of the organization. Can be used to check if the organization has reached the limit of channels, members, etc.
The members of the organization. Can be used to check the total number of members in the organization. In the future, it might contain more information about the members.
The name of the organization.
The owner email of the organization.
Whether the requesting actor should be sent through 2FA setup before they
can use this organization. Derived: true only when the org has
settings.enforce2FA ON, the organization-enforced-2fa rollout Split is
ON for the org, and the actor has no 2FA configured on their own account.
This is the single source of truth for the forced-2FA gate; app-shell and publish-frontend redirect to the setup flow when it's true. Exposed to the API gateway so any stitched consumer reads the same value.
Resource limits for an organization including channels, members, and content limits
The maximum number of channels allowed for the organization.
The maximum number of content generations allowed for the organization.
The maximum number of idea groups allowed for the organization.
The maximum number of ideas allowed for the organization.
The maximum number of members allowed for the organization.
The maximum number of post templates allowed for the organization.
The maximum number of saved replies allowed for the organization.
The maximum number of scheduled posts allowed for the organization.
The maximum number of scheduled stories allowed per channel.
The maximum number of scheduled threads allowed per channel.
The maximum number of tags allowed for the organization.
Information to aid in pagination.
The last cursor in the list. It can be used to fetch the next page.
When set to true, it means there is a next page available.
When set to true, it means there is a previous page available. Will always return false for now as we only support forward pagination.
The first cursor in the list. It can be used to fetch the previous page.
A Pinterest board
The ID of the board
The board avatar
The board description
The board name
The ID of the service
The board URL
Pinterest metadata
The list of boards the user has on Pinterest
Annotations representing entities in the text
The board the Pin is saved to
The title of the Pin
The channel-specific type of the post, eg, post, story, reel for Instagram
The Pin destination link
Post entity
ObjectId of the post
Indicates what actions the current account can perform on the post
assets
Represents the user who created the post
channel
channel ID (faster than resolving the channnel.id)
channel service (faster than resolving the channnel.service)
Date when the post is scheduled to be published
error
The external URL of the post at the destination service
Is set when the Post is generated from an Idea
Indicates whether time to publish was manually selected by the user
Metadata of the post which differs based on the social network/service @see post.metadata.graphql
Metrics for the sent post. If post is not yet sent, this field will be null
Timestamp of when metrics were last refreshed from the network. Null
until the daily ingestion job has processed the post. Buffer pulls
fresh metrics once per day, so this can lag the network value by ~24h.
notes
notificationStatus: notified or markedAsPublished
How the post publishes: notification for a reminder that asks someone to
publish it by hand, automatic for one the publishing workers send.
Date when the post is published
status
tags - sorted by name in ascending order
Text content of the Post
Indicates if the post is created from Buffer or the API
Date when the post was created
Date when the post was updated
Success response returns the full up-to-date post from after the action was performed.
Post on which the action was successfully performed.
Represents a posting goal for a channel, including target, progress, and status information.
The target number of posts for this goal.
The end date of the period for this posting goal.
The start date of the period for this posting goal.
The number of posts that are scheduled to be sent for this goal.
The number of posts that have been sent (published or ingested) for this goal.
The current status of the posting goal.
A single metric for a post (or an entry in an aggregated metrics response).
A human-readable description of what the metric represents.
The human-readable name of the metric (e.g. "Reactions", "Eng. Rate").
The type of metric. Cross-network metrics use unified naming (reactions,
comments, etc.); network-specific metrics retain their network's
vocabulary (saves, quotes, etc.). See PostMetricType for the full
catalog including deprecated values.
The unit (count vs percentage) of value.
The metric value. Defaults to 0 when the network did not report the metric.
Post publishing error
Error message to display
The original error from the publishing service (internal use only)
Link to a help center article to help resolve the error
Represent a node in the pagination result using the Connect Relay convention.
Opaque cursor to be used in pagination to fetch from current node.
Represents the current post in the list.
Results for the posts query.
The list of posts that match the query.
Information to aid in pagination.
A post template used for content inspiration.
The unique identifier for the template.
The main content body of the template, may contain {{placeholders}}.
A short user-facing description of the template.
The emoji associated with the template.
The organization that owns this template.
The title of the template.
The visibility level of the template. public is returned for
Buffer-managed templates.
The date and time the template was created.
The date and time the template was last updated.
An edge in a post template connection.
A cursor for pagination.
The post template node at the end of the edge.
A paginated connection of post templates.
The list of post template edges.
Pagination information for the connection.
The total number of templates matching the filters.
Account preferences
Tag snapshot associated with content
Hex color for tag e.g #F523F1
Stable Buffer palette identifier derived from color.
Clients should map this value to platform- and theme-specific presentation,
falling back to color when this field is null or unsupported.
Returns null for custom or unrecognized colors.
Error code from the REST API response - https://buffer.com/developers/api/errors
Link to our Help center from the REST API response
An error message from the REST API response that we proxied here
Retweet ID
Text of the original tweet
Thumbnails to media available in the link
Link to original tweet
User who created the original tweet
Date when the original tweet was created
Information about the initial author of the Tweet that was retweeted
Avatar of the user who created the original Tweet
Name of the user who created the original Tweet
Username of the user who created the original Tweet
Posting schedule for a specific day of the week
The day of the week: mon, tue, wed, thu, fri, sat, sun
Indicates if this day is paused in the posting schedule.
The times the channel is scheduled to post on the day: HH:MM
Tag entity
ObjectId of the tag
Hex color for tag e.g '#F523F1'
Stable Buffer palette identifier derived from color.
Clients should map this value to platform- and theme-specific presentation,
falling back to color when this field is null or unsupported.
Returns null for custom or unrecognized colors.
Locked tag cannot be assigned to new items in the UI. A Tag is locked after a customer downgrades and has more tags than the free plan limit allows
Name of the tag e.g 'Summer sales'
A post authored by the user which is posted to a thread. This is commonly used for long-format twitter and meta threads posts to allow authored content to span multiple threads. Threads are represented as a list of replies, each replying to the previous one.
Media assets of the threaded post
Use metadata.{service}.linkAttachment on the thread item instead. This field will be removed on December 15, 2026.
Deprecation reason: Use metadata.{service}.linkAttachment on the thread item instead. This field will be removed on December 15, 2026.
Service-specific fields for this threaded post
The text body content of the threaded post
Bluesky fields on a single item of a thread
Link attachment
Service-specific fields on a single item of a thread. The populated key matches the post's service.
Bluesky fields for this thread item
Threads fields for this thread item
Threads fields on a single item of a thread
Link attachment
Annotations representing entities in the text
Link attachment
LocationId associated with the post
Location name associated with the post
The list of threaded posts (not paginated)
The number of threaded posts
Topic associated with the post
The channel-specific type of the post, eg, post, story, reel for Instagram
Tiktok metadata
Indicates if we should default to reminder for Tiktok
Annotations representing entities in the text
Whether the post discloses AI-generated content (TikTok video only)
The title of the TikTok post (for photo posts)
The channel-specific type of the post, eg, post, story, reel for Instagram
Twitter metadata
Indicates the type of subscription the user has on Twitter
Annotations representing entities in the text
Whether the post discloses AI-generated content
The details of the tweet being retweeted
The list of threaded posts (not paginated)
The number of threaded posts
The channel-specific type of the post, eg, post, story, reel for Instagram
Error returned when the user is not authorized to perform the action
Error message
Error message
Successful result of an end user updating a post template.
The updated post template.
User tag in the image
The handle (username) of the tagged account, without the leading @.
Horizontal position of the tag as a normalized decimal float between 0.0 and 1.0 - the fraction of the image width from the left edge (0.5 is the horizontal center).
Vertical position of the tag as a normalized decimal float between 0.0 and 1.0 - the fraction of the image height from the top edge (0.5 is the vertical center).
The ID of the asset in the database
The MIME type of the asset
URL to the file source
URL to the static thumbnail of the asset
The type of the asset
Video specific metadata
Video metadata
Audio codec
Video container format
Video duration in seconds
Video fileSize in bytes
Video framerate
Video height in pixels
Whether the video needs to be transcoded before it can be broadcasted
Whether the video is currently being processed (transcoding in progress)
Rotation degree
Offset of the thumbnail chosen for the video, in ms
Video title
Video bitrate in kbps
Video codec
Video width in pixels
Error implementation that allows clients to resolve the MutationError on mutations that do not currently have typed errors. This allows clients to automatically handle errors that may be added to a mutation in future.
Do not directly throw this error, use a custom typed error instead
Error message
Weekly posting limit for a channel
The weekly posting limit for the channel
The number of posts the channel has scheduled for this week
The number of posts the channel has sent this week
Youtube metadata
Indicates if we should default to reminder for Youtube
Annotations representing entities in the text
Post category
Indicates whether the video allows embedding
Whether the post discloses AI-generated content
Video license
Indicates whether the video is suitable for kids
Indicates whether to notify subscribers on publish video
Privacy setting for post
Title of the Youtube post
The channel-specific type of the post, eg, post, story, reel for Youtube
Input for the aggregatedPostMetrics query.
Optional list of channel IDs to filter by. When omitted (null), the aggregate spans every channel in the organization the actor has insights access to. When set to an empty array, no channels match and the result is empty.
End of the aggregation window. Consumers typically pass UTC midnight of
the last calendar day in the window (the backend treats the range as
inclusive of that day), for example 2026-01-31T00:00:00Z. Date range
is capped to 365 days.
The organization ID
Start of the aggregation window. Consumers typically pass UTC midnight
of the first calendar day in the window, for example
2026-01-01T00:00:00Z.
Filter to posts with specific tags. When omitted, all posts are included regardless of tags.
Annotation representing all the entities in the text
The content of the annotation, e.g. '107509875938399'
The indices of the annotation in the text, e.g. [6, 9] (from 6 to 9 characters in the text)
The text representation of the annotation, eg 'Buffer'
The URL the annotation points to, e.g. https://www.facebook.com/107509875938399
Annotation representing all the entities in the text
The id of the annotation, e.g. 1521226
The entity of the annotation, e.g. urn:li:organization:1521226
The length of the annotation, e.g. 6
The link of the annotation, e.g. https://www.linkedin.com/company/bufferapp
The localized name of the annotation, e.g. Buffer
The start of the annotation, e.g. 5
The vanity name of the annotation, e.g. bufferapp
A single entity's asset. Exactly one variant must be provided.
Document asset
Image asset
Use metadata.{service}.linkAttachment instead. This field will be removed on December 15, 2026.
Video asset
Bluesky post metadata
Link attachment. Mutually exclusive with a non-empty assets array input providing both is rejected.
The ordered list of posts that make up the thread (not paginated). This
array is the source of truth for what gets published: every post in the
thread, including the root post, must be provided here. Posts are
published in order, each replying to the previous one. The first item is
the root post and should match the top-level text on the post input.
Input for the channel query
The ID of the channel to be retrieved
Filter to pass when fetching channels.
If not defined, it returns all channels Else, if true, it only returns locked channels if false, it only returns not locked channels
If not passed, it return all channels Else, it filters the channels based on what the product supports.
Input to pass when fetching channels.
A list of option filters - passing null means we don't want to filter
The Organization id to fetch channels for
createIdea input type
Content and metadata for the new idea
Call-to-action identifier for analytics tracking
Group placement (null for unassigned group)
Organization ID that will own the idea
Template ID used to create the idea
Create post's request input.
Note: metadata.{service}.linkAttachment is mutually exclusive with a non-empty assets
array. Input providing both is rejected.
If this post was created with the help of AI
Ordered list of assets on this post.
Channel's Id for which we want to create the post
Is set when the Post is generated from a Draft
Date when the post is scheduled to be published
Is set when the Post is generated from an Idea
Metadata of the post which differs based on the social network/service
How the post is being scheduled.
Submit the post for approval instead of scheduling it. A post submitted for
approval is always a draft, so this conflicts with turning saveToDraft off.
Only valid when your posting policy on the target channel requires approval.
If true, saves the post as a draft instead of scheduling it. When saving as draft:
Scheduling type to indicate notification publishing or automatic publishing
source where the composer was initiated from, used for tracking.
List of tag IDs
Text content of the Post.
Note: for threaded posts, this needs to match the first item in the thread array.
Input for an end user creating a post template. Buffer-curated taxonomy fields are server-defaulted; setting them is only available to official Buffer clients.
The main content body of the template, may contain {{placeholders}}.
A short user-facing description of the template. Nullable for backwards-compat at the GraphQL boundary the resolver rejects null/empty values with a clear input error so the underlying storage contract (non-empty string) is still honored.
The emoji associated with the template.
Organization the template belongs to. The caller must be a member of
this organization. For internal visibility this is the team scope;
for private it's recorded on the template but does not affect
visibility.
The title of the template.
Defaults to private if omitted. public is rejected it is only
available to official Buffer clients.
Input for the dailyPostingLimits query.
Comparator for filtering by date
deletePost mutation deletes a post by id.
Post id to delete.
Input for an end user deleting a post template.
The ID of the template to delete.
Document asset
Document thumbnail URL
Document title
Document URL
Edit post's request input.
Note: metadata.{service}.linkAttachment is mutually exclusive with a non-empty assets
array. Input providing both is rejected.
ID of the post to edit
If this post was edited with the help of AI
Change the post's approval state alongside this edit. Leave unset to keep the post's current approval state.
Only valid when your posting policy on the post's channel requires approval, and only on your own drafts. Asking for the state the post is already in does nothing.
Ordered list of assets on this post. Omit to preserve the existing list, pass an empty array to clear it
Is set when the Post is generated from a Draft
Date when the post is scheduled to be published
Is set when the Post is generated from an Idea
Metadata of the post which differs based on the social network/service
How the post is being scheduled. Omit the field or pass null to make no scheduling change null does not clear or reset the schedule: a scheduled post keeps its current share mode, queue slot, and any custom time, and the edit applies only the other provided fields. Pass a non-null ShareMode to apply that mode.
If true, saves the post as a draft instead of keeping it scheduled. When saving as draft:
Scheduling type to indicate notification publishing or automatic publishing.
Omit it, or send null, to leave the post publishing the way it already does.
source where the composer was initiated from, used for tracking.
tags
Text content of the Post. Omit the field to keep the current text; pass an empty string or null to clear it.
Note: for threaded posts, this needs to match the first item in the thread array.
Facebook post metadata
Annotations representing entities in the text
Facebook post's first comment
Link attachment. Mutually exclusive with a non-empty assets array input providing both is rejected.
The channel-specific type of the post, eg, post, story, reel for Facebook
Metadata for a GBP post that is an event
Action button. Optional: a post with no button, or none, publishes without a call-to-action. On edit, omitting it preserves the existing value.
End date of the event. Required on create; optional on edit (omitted preserves existing value).
Indicate whether the event has a start or end time.
Link to the action
Start date of the event. Required on create; optional on edit (omitted preserves existing value).
Title of the event. Required on create; optional on edit (omitted preserves existing value).
Metadata for a GBP post that is an offer
Coupon code for the offer
End date of the offer. Required on create; optional on edit (omitted preserves existing value).
Link to the offer
Start date of the offer. Required on create; optional on edit (omitted preserves existing value).
Terms and Conditions
Title of the offer. Required on create; optional on edit (omitted preserves existing value).
Google Business Profile post metadata @deprecated: pending proposal for specific GBP post types: update, offer and event metadata types
Details of the Event metadata
Details of the Offer metadata
Details of the Whats new metadata
Title if available in the given GBP post type: event and offer
The channel-specific type of the post, eg, post, offer, event for Google Business Profile
Metadata for a GBP post of type Whats new
Action button. Optional: a post with no button, or none, publishes without a call-to-action. On edit, omitting it preserves the existing value.
Link to the action
content input for creating/updating an idea
Whether AI tools were used in creation
Target date for the idea, often used for planning publish schedules
List of media items to attach
Services associated with the idea for targeting specific platforms
Tags to categorize the idea
Main body text or description
Title or headline of the idea
idea group input for create/update
Target group ID (null for unassigned group)
ID of idea to place after (null for top position)
Input type for retrieving idea groups by organization ID.
Unique identifier for the organization.
The URL of the media
Alternative text for the media
Thumbnail URL for the media
The type of media (image, gif, video, link, document, unsupported). Note: 'video' is not supported via public API
The size of the media in bytes
Source information for the media
Input type for the source information of media attached to an idea
for unsplash only
Selects which ideas to return by group membership. Exactly one field must be
provided (enforced by @oneOf). To return ideas from all groups, omit
groupFilter on IdeasInput rather than setting a field here.
Return only ideas that belong to these specific groups (union/OR).
Return ideas by a group-membership bucket rather than by specific group IDs.
Filtering criteria for the ideas list.
Filter ideas by group membership. Omit this field entirely to return ideas across all groups.
The organization to fetch ideas from.
Filter ideas by tags using TagComparator.
Image asset
Image specific metadata
URL to the static thumbnail of the asset
URL to the file source
Image dimensions
Image height in pixels
Image width in pixels
Image metadata
Alternative text for accessibility
Animated thumbnail URL
Ignored the API resolves image dimensions itself.
Accounts to tag at specific points on the image. Each tag's x/y position uses normalized 0.0-1.0 coordinates - see UserTagInput.
Instagram Geolocation
The id of this location
The name of this location
Instagram post metadata
Instagram post's first comment
Geolocation of the post
Whether the post discloses AI-generated content
Shop Grid link for the post
Sticker fields for reminder-based publishing
The channel-specific type of the post, eg, post, story, reel for Instagram
Instagram fields for reminder-based publishing. Upon the reminder for publishing, the user is prompted to copy and paste these fields into the Instagram app to complete the post.
Placeholder text for the post's music
Additional field for any other post content
Placeholder text for the post's linked products
Text for the Story or Reel
Placeholder text for the post's topics (Reels only)
Link attached to the post
Description of the link
Thumbnail URL of the link
Title of the link
URL to the link
Link attachment
Description shown on the link card
Thumbnail shown on the link card
Title shown on the link card
URL that the link asset has been built from
Thumbnail of a link attachment
URL of the thumbnail image
LinkedIn post metadata
Annotations representing entities in the text
LinkedIn post's first comment
Link attachment. Mutually exclusive with a non-empty assets array input providing both is rejected.
Mastodon post metadata
Spoiler text hiding the root text of this post
The ordered list of posts that make up the thread (not paginated). This
array is the source of truth for what gets published: every post in the
thread, including the root post, must be provided here. Posts are
published in order, each replying to the previous one. The first item is
the root post and should match the top-level text on the post input.
movePostInQueue mutation moves a queued post to the top or bottom of its channel's queue.
ID of the post to move.
Target position within the channel's queue.
Allow retrieving a specific Organization
Pinterest post metadata
The board ID of the Pin, can be obtained when fetching the channel details with the following query:
query GetChannelWithSubprofiles {
channel(input: { id: "[CHANNEL_ID_HERE]" }) {
metadata {
... on PinterestMetadata {
boards {
serviceId
}
}
}
}
}
Required on create; optional on edit (omitted preserves existing board).
The title of the Pin
The Pin destination link
Metadata of the post which differs based on the social network/service
Metadata for Bluesky post
Metadata for Facebook post
Metadata for Google Business Profile post
Metadata for Instagram post
Metadata for LinkedIn post
Metadata for Mastodon post
Metadata for Pinterest post
Metadata for Threads post
Metadata for TikTok post
Metadata for Twitter post
Metadata for Youtube post
Filter to apply to the posts query
When set, it will filter posts by channel
When set, it will filter posts by their scheduled posting date
When set, it will filter posts by whether their scheduled posting date exists.
absent cannot be combined with dueAt, because absent dates cannot also match a date range.
When set, it will return posts with createdAt or dueAt date before endDate
When set, it will filter posts by format.
post is a fallback bucket rather than one stored format: it matches every
post the other formats do not claim, which is what Post.metadata.type
reports for the same post. carousel and thread are rejected, because no
stored value resolves to them.
When set, it will return posts with createdAt or dueAt date after startDate
When set, it will filter posts by status
When set, it will filter posts by tag
Filter posts by tags. Supports specific tags, untagged posts, or union of both.
When set, it will filter posts by the date they were created
Input for the posts query
The filters to apply to the posts query
The Organization id to fetch posts for
The sort to apply to the posts results
Sort order of post results. List multiple to create tie-breaking order.
The direction to sort by.
The field to sort by.
Input for fetching a single post template by ID.
The unique identifier of the template to fetch.
Filters for the template library. Visibility narrows the actor-scoped result set; it can never widen it.
Narrow the result to a single visibility scope. Omit to receive the union of: public templates, internal templates from the supplied organization, and private templates from the actor's account.
Input for fetching templates accessible to the current actor for the
template library. A caller can never reach templates outside their own
scope the server pins private to the actor's account and internal
to the supplied organizationId regardless of input.
Optional filters to narrow the template list.
Organization to scope internal-visibility templates to. The caller
must be a member of this organization.
Information about the initial Tweet that was retweeted
Retweet ID
Optional user comment shown above the embedded retweet
Comparator for filtering by tags
Include results that have any of the specified tags (union/OR).
When true, include results that have no tags assigned. Can be combined with 'in' for union filtering. Defaults to false if not specified.
Input type for tag information used in idea creation
A post authored by the user which is posted to a thread.
This is commonly used for long-format twitter and meta threads posts to
allow authored content to span multiple threads.
Threads are represented as a list of replies, each replying to the previous one.
The first item in the list is the root post of the thread and should match the
top-level text on the post input; the remaining items are replies.
Ordered list of assets on this threaded post
Service-specific fields for this threaded post
The text body content of the threaded post
Bluesky fields on a single item of a thread
Link attachment. Mutually exclusive with a non-empty assets array input providing both is rejected.
Service-specific fields on a single item of a thread. The key must match the channel's service; input under any other key is rejected.
Bluesky fields for this thread item
Threads fields for this thread item
Threads fields on a single item of a thread
Link attachment. Mutually exclusive with a non-empty assets array input providing both is rejected.
Threads post metadata
Link attachment. Mutually exclusive with a non-empty assets array input providing both is rejected.
LocationId associated with the post
Location name associated with the post
The ordered list of posts that make up the thread (not paginated). This
array is the source of truth for what gets published: every post in the
thread, including the root post, must be provided here. Posts are
published in order, each replying to the previous one. The first item is
the root post and should match the top-level text on the post input.
Topic associated with the post
The type of the post
TikTok post metadata
Whether the post discloses AI-generated content (TikTok video only)
The title of the TikTok post (for photo posts)
Twitter post metadata
Whether the post discloses AI-generated content (original tweets only, never retweets)
The details of the tweet being retweeted
The ordered list of posts that make up the thread (not paginated). This
array is the source of truth for what gets published: every post in the
thread, including the root post, must be provided here. Posts are
published in order, each replying to the previous one. The first item is
the root post and should match the top-level text on the post input.
Input for an end user updating a post template. Buffer-curated taxonomy fields are ignored; setting them is only available to official Buffer clients.
The ID of the template to update.
The main content body of the template, may contain {{placeholders}}.
A short user-facing description of the template.
The emoji associated with the template.
The title of the template.
public is rejected it is only available to official Buffer
clients.
User tag in the image
The handle (username) of the account to tag, without the leading @.
Horizontal position of the tag as a normalized decimal float between 0.0 and 1.0 - the fraction of the image width from the left edge (0.5 is the horizontal center). Pass a number, not a string, and do not use pixel coordinates; to convert, divide the pixel X by the image width.
Vertical position of the tag as a normalized decimal float between 0.0 and 1.0 - the fraction of the image height from the top edge (0.5 is the vertical center). Pass a number, not a string, and do not use pixel coordinates; to convert, divide the pixel Y by the image height.
Video asset
Video specific metadata
Do not use: social networks do not accept custom video thumbnail images, and
the API rejects video assets that set this field. To choose the video
thumbnail, set metadata.thumbnailOffset to select a frame from the video
(supported for Instagram, TikTok, and Pinterest only).
URL to the file source
Video metadata
Offset of the thumbnail chosen for the video, in ms
Video title
Youtube post metadata
Youtube Category ID, one ID of this list: ID: 1 -> Film & Animation ID: 2 -> Autos & Vehicles ID: 10 -> Music ID: 15 -> Pets & Animals ID: 17 -> Sports ID: 19 -> Travel & Events ID: 20 -> Gaming ID: 22 -> People & Blogs ID: 23 -> Comedy ID: 24 -> Entertainment ID: 25 -> News & Politics ID: 26 -> Howto & Style ID: 27 -> Education ID: 28 -> Science & Technology ID: 29 -> Nonprofits & Activism
Required on create; optional on edit (omitted preserves existing value).
Indicates whether the video allows embedding (default: true)
Whether the post discloses AI-generated content
Video license (default: youtube)
Indicates whether the video is suitable for kids (default: false)
Indicates whether to notify subscribers on publish video (default: true)
Privacy setting for post (default: public)
Title of the Youtube post. Required on create; optional on edit (omitted preserves existing value).
List of possible types for an annotation
Asset types
List of possible actions that can be performed on a Channel
Channel is a representation of a social media account or page that can be connected to Buffer.
The category of a connected app.
Presence filter for nullable date fields. When filtering the same field, absent dates cannot also match a date comparator range.
Day of the week.
List of possible types for GBP cta
Named buckets for filtering ideas by their group membership.
The type of media attached to a post
List of possible actions that can be performed on a note
The type of a note.
List of possible statuses for a notification
List of possible actions that can be performed on a Organization
List of possible actions that can be performed on a Post
A change to a post's approval state, for a post that is already a draft.
PostingGoalStatus is used to track the status of a posting goal.
List of possible metrics available for a Post.
Values fall into three groups:
likes reactions, Twitter retweets reposts).likes is intentionally distinct from reactions on Facebook Facebook's Graph API surfaces them separately.Deprecated values are pre-normalization legacy or tied to features being removed. They're kept in the enum for backwards compatibility until clients migrate.
The unit representing the value of a PostMetric.
Key of collection to use for sorting
List of possible statuses for a Post
The visibility level of a post template. public is reserved for
Buffer-curated templates; setting it is only available to official
Buffer clients.
List of possible types for a Post. Some services may have different types (e.g., Instagram has story, reel, post but Twitter has only post)
List of specific post types available for Facebook
List of specific post types available for Google Business profiles
List of possible ways to create a Post
Buffer products, buffer is used as all products
Target position within a channel's queue that a post can be moved to.
Indicates whether the post was scheduled for notification publishing or automatic publishing
The list of services that can be authorized.
Direction to sort the results by.
Stable Buffer identifiers for the supported tag color palette.
Clients map these values to platform- and theme-specific presentation.
Values ending in Light are lighter palette variants, not UI theme modes.
List of license types
List of privacy types
Asset interface with common fields
The ID of the asset in the database
The MIME type of the asset
URL to the file source
URL to the static thumbnail of the asset
The type of the asset
Common properties for all post metadata types
Annotations representing entities in the text
The channel-specific type of the post, eg, post, story, reel for Instagram
Base Mutation Error type
Error message
Base Mutation Success type Used when we have a success response with no data, we return this type with empty string
The value is alwaus an empty string '' Note: GraphQL doesn't allow types with no fields, so we have to add this field
Link data for link preview
Description for the scraped link
Thumbnails of media available in the link
URL that the link asset has been built from
Common properties for all posts that support threaded replies. See ThreadedPost for more details.
The list of threaded posts (not paginated)
The number of threaded posts
Metadata or settings about the channel depending on the service type
createIdea response (including errors)
Result of an end user creating a post template.
All possible response types for the deletePost mutation.
Result of an end user deleting a post template.
GoogleBusiness Metadata details
All possible response types that can be returned by movePostInQueue mutation.
Create post's request response payload.
Post metadata union type. Contains all possible types of post metadata.
Result of an end user updating a post template.
The AccountId scalar represents the MongoDB ObjectId of a Buffer Account
The ChannelId scalar represents the MongoDB ObjectId of a Buffer Channel
The DateTime scalar represents a date and time following the ISO 8601 standard.
The DraftId scalar represents the MongoDB ObjectId of a Buffer Draft
The Email scalar represents a valid, normalized email address.
Input is trimmed and lowercased before validation.
The IdeaId scalar represents the MongoDB ObjectId of a Buffer Idea
The InvitationId scalar represents the MongoDB ObjectId of a pending team invitation
The NoteId scalar represents the MongoDB ObjectId of a Buffer Note
The OrganizationId scalar represents the MongoDB ObjectId of a Buffer Organization
The PostGroupId scalar represents the MongoDB ObjectId of a Buffer Post Group.
The PostId scalar represents the MongoDB ObjectId of a Buffer Post
The PostTemplateId scalar represents the MongoDB ObjectId of a Post Template.
The TagId scalar represents the MongoDB ObjectId of a Buffer Tag
The Uuid scalar represents an RFC 4122 v4 UUID,
e.g. 550e8400-e29b-41d4-a716-446655440000.
| Web Proxy Viewer | New URL | Original Page |