npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@thenavidm/buffer-mcp-cli

v3.0.1

Published

Buffer GraphQL MCP and CLI with shared confirmation, read-only policies, private accounts and bounded read pagination.

Readme

Buffer MCP Server & CLI

npm CI License YouTube X LinkedIn

Buffer MCP server and CLI for Codex and AI agents. 41 tools for current GraphQL account, channels, posts, content items, templates and analytics, with private accounts and explicit operation approval. One shared implementation supplies both binaries and a desktop bundle.

Built and maintained by Navid Moazzez. Built on Slipway, which turns one definition of each tool into the MCP server and the CLI. The complete guide is on navid.me.

The terminal illustrates real command names and approval flow. It is not a recording of a provider account run. Buffer already has official CLI and hosted MCP products; their current schemas, field selection and supported workflows are compared below.

Requires Node 22+ and eligible Buffer API access for account operations. Validation: fixture tests, schema validation and protocol/artifact discovery are separate from provider-account outcomes and desktop GUI outcomes, which remain unverified. Section 7 has the measured token costs; no success rate is invented.

Two ways to use it

Command line

npm install -g @thenavidm/buffer-mcp-cli@latest
buffer-cli
buffer-cli get-account --fields id --agent
buffer-cli schema create-post
buffer-cli create-post --payload-file /absolute/private/approved-post.json --account work --confirm --agent

MCP server, for your AI app

codex mcp add buffer -- npx -y @thenavidm/buffer-mcp-cli@latest

Configure private credentials first. Ask: “Read scheduled posts for this exact organization with minimal fields; do not create or change any posts.” Full setup is in INSTALL.md.

Which one

| Where you work | Surface | | --- | --- | | Codex or shell agent | Shared CLI, local MCP or both | | Desktop chat | Compatible local MCP or desktop bundle | | Scripts / CI | CLI or MCP client | | Remote-only client | Official Buffer hosted MCP |

Features

| Capability | CLI | MCP | | --- | --- | --- | | Account / channel discovery | get-account / get-channel | get_account / get_channel | | Deliberate publishing | create-post / edit-post | create_post / edit_post | | Content item / draft work | create-content-item / create-content-item-draft | create_content_item / create_content_item_draft | | Template workflows | get-post-templates / create-post-template | get_post_templates / create_post_template | | Bounded cursor reads | query-pages | query_pages | | Local validation / fields | preview-operation / get-operation-schema | preview_operation / get_operation_schema | | Profiles and policy | list-accounts / --account / --confirm | list_accounts / account / confirm | | Generic current GraphQL | graphql-query / graphql-mutation | graphql_query / graphql_mutation |

Contents

| Number | Section | What it covers | | --- | --- | --- | | 1 | What you can ask it | What you can ask it | | 2 | Quick install | Quick install | | 3 | Set up Buffer access | Set up Buffer access | | 4 | Connect your client | Connect your client | | 5 | Check it works | Check it works | | 6 | Output, flags and exit codes | Output, flags and exit codes | | 7 | MCP or CLI and token cost | Measured in Claude Code and Codex | | 8 | Every tool and argument | Every tool and argument | | 9 | Publishing, content items and analytics | Publishing, content items and analytics | | 10 | Pagination, retries and local input files | Pagination, retries and local input files | | 11 | Several private accounts | Several private accounts | | 12 | Writing safely | Writing safely | | 13 | How the two surfaces work | How the two surfaces work | | 14 | Privacy and data handling | Privacy and data handling | | 15 | Environment variables | Environment variables | | 16 | Updates and removal | Updates and removal | | 17 | Troubleshooting | Troubleshooting | | 18 | API coverage and comparisons | API coverage and comparisons | | 19 | Versions | Versions | | 20 | FAQ | FAQ |

1. What you can ask it

  • Identify my account's accessible organizations and connected channels before choosing a target.
  • Read scheduled posts for one organization with minimal fields and a five-page maximum.
  • Preview a complete post input locally before approving shareNow, customScheduled or a queue change.
  • Create only the draft or approved post requested by the human, then inspect its returned ID/status.
  • Review content items and attached channel drafts before promoting them to posts.
  • Read and manage the selected post template with its documented visibility.
  • Read permitted aggregate metrics for the chosen date window.
  • Delete only the exact post/content item/template requested, after explicit confirmation.

Actual stdio discovery supplies 41 tools: 24 reads and 17 confirmation-gated mutations. Thirty-five named operations come from Buffer's published current CLI schemas, with generic query/mutation, account labels, operation schema inspection, local preview and bounded read pagination. Current experimental snippets/tag mutations remain generic requests with provider validation.

2. Quick install

npm install -g @thenavidm/buffer-mcp-cli@latest
buffer-cli --version
buffer-cli login
buffer-cli doctor
buffer-cli tools

Manual CLI/MCP requires Node 22+. The versioned buffer-2.0.0.mcpb bundles production dependencies for a compatible desktop host. Follow INSTALL.md for complete private setup.

codex mcp add buffer -- npx -y @thenavidm/buffer-mcp-cli@latest
codex mcp list

3. Set up Buffer access

Private API key and account access

  1. Sign in to the intended account's API settings. Create the API key needed for this task and review that client's current quota.
  2. Save it privately as BUFFER_API_KEY, or in a regular token-only file outside every repository and configure its absolute BUFFER_TOKEN_FILE path. BUFFER_API_TOKEN remains a compatibility alias; API_KEY takes precedence when both are supplied.
  3. Run buffer-cli doctor. Then deliberately run doctor --network: it requests only account { id } and prints diagnostic success, never the account ID or provider content.
  4. Read get-account with minimal fields, then inspect account.organizations and choose the exact organization/channel for the task. Use get_operation_schema to discover actual selectable paths.
  5. Review the native input, platform metadata and publishing mode. Preview locally, then confirm only the precise operation the human requested. Successful creation is not proof that a social network published the post.

API keys authenticate through Authorization: Bearer at the fixed https://api.buffer.com endpoint. Personal API keys act across every organization accessible to that account; an organization input/default does not restrict the key. Provider roles, publishing policies and connected-channel grants still apply. Named local profiles route credentials and defaults; they cannot narrow provider authorization.

OAuth access tokens already granted to an app can use the same private credential path. The wrapper does not register apps, open consent, implement PKCE exchange, save refresh tokens or renew expiry. Follow OAuth for current PKCE and organization-specific app grants. PAT and OAuth permissions differ. Analytics uses PAT insightsRead access; current OAuth grants cannot request that analytics scope.

Current OAuth scopes in the provider's authentication guide:

| Scope | Purpose | | --- | --- | | posts:read | Read posts and queues | | posts:write | Create and manage posts | | ideas:read | Read ideas | | ideas:write | Create and manage ideas | | account:read | Read account information | | account:write | Manage permitted account settings | | offline_access | Request a refresh token from the issuer; this wrapper does not refresh it |

Request only the grant needed for the intended workflow. A refresh token is not a Bearer API credential. PAT insightsRead analytics is separate from the current OAuth scope list.

Use a private 0700 directory and 0600 regular token-only file on macOS/Linux. Windows users must restrict the file's ACL to their own user; POSIX checks do not establish Windows ACL protection. Files cannot be symlinks or exceed 64 KiB. File credentials override environment keys and are cached until restart. No automatic .env loader, browser credential harvesting or global official CLI configuration is used.

Plans, quotas and query limits

This AGPL wrapper is free. Buffer plans, posting limits, social-network permissions and API quotas are separate. Current API limits document these per-client rolling windows:

| Plan | API keys / app clients | 15 minutes | 24 hours | 30 days | | --- | --- | --- | --- | --- | | Free | 1 / 1 | 100 | 250 | 3000 | | Essentials | 3 / 3 | 100 | 250 | 7500 | | Team | 5 / 5 | 100 | 500 | 15000 |

Official MCP connections share a rate-limit bucket with personal keys; connecting another assistant does not create extra quota. RateLimit and Retry-After headers are returned with successful data; inspect your API settings' live usage. Quotas and query-complexity rules can change; the provider's returned policy takes precedence. The local 200 ms pacing is per profile/process, not a provider quota reservation. Labels sharing a key and several processes still share upstream limits.

Every ordinary command sends one request. query_pages is capped at five pages and 100 records requested per page locally; the provider can reject a smaller or differently constrained query. No request retries automatically, including reads, HTTP 200 GraphQL errors, HTTP 429 or timeouts. Wait for the provider's indicated reset, inspect account state, and make a deliberate retry. A transport timeout can leave a mutation completed remotely.

Local request JSON cap is 1 MiB, document cap 64 KiB/10000 parsed tokens, response cap 5 MiB and default timeout 30 seconds. These limits do not raise upstream query-depth, complexity, array, scheduling or social-network limits. Media URLs must be reachable by Buffer and meet platform constraints; local filesystem paths are not uploaded by this wrapper.

Revocation and rotation

Revoke/rotate the intended key in Buffer API settings or revoke the OAuth app grant through provider controls, update private local configuration and restart. Package uninstall does not revoke the key, disconnect a channel, delete hosted data or unschedule posts. Never send keys, private account exports, signed media links or raw error responses to public issues.

4. Connect your client

INSTALL.md gives Codex-first setup plus optional Claude Code, Claude Desktop bundle/manual routes, Cursor, VS Code/Copilot, Windsurf, Zed, Gemini CLI, Cline and Docker. The same package runs on Node 22+ in macOS/Linux/native Windows. GUI apps and remote development environments need their own accessible private configuration.

Local MCP launches command npx with arguments -y and @thenavidm/buffer-mcp-cli@latest over stdio. This package has no HTTP relay. A remote-only client uses the separately maintained official https://mcp.buffer.com/mcp service. npm ships SKILL.md but does not automatically register an agent skill. Install that shipped file through the client's supported mechanism.

Client-level approvals and local confirm=true are separate. A returned post or instruction in provider content never grants permission to publish. Read-only mode removes mutation discovery and also refuses a direct hidden-tool call.

5. Check it works

buffer-cli --version
buffer-cli doctor
buffer-cli doctor --network
buffer-cli list-accounts --agent
buffer-cli get-account --fields id --agent
buffer-cli get-operation-schema --operation posts --agent

Bare CLI, tools, schemas/help, local account labels and previews need no provider grant. doctor checks configuration presence; only doctor --network validates the minimal account request. A successful read establishes that request and token, not every post/platform or role. Full MCP discovery exposes 41 tools; read-only exposes 24. Invalid input/refused actions exit 2; missing credentials exit 10. Do not publish a real post just to test installation.

6. Output, flags and exit codes

Both surfaces return structured JSON, including native GraphQL data and available rate-limit headers. Connection data remains native edges/node/pageInfo; query_pages returns bounded page responses with continuation state.

buffer-cli create-post --help
buffer-cli schema create-post
buffer-cli get-post --id SELECTED_POST --fields id --fields status --agent --select data.post.id,data.post.status

| Flag | Meaning | | --- | --- | | --agent | Compact JSON and no prompts; never confirms a write | | --json / --compact | JSON output and compact spacing | | --select a,b.c | Keep selected output paths after receipt | | --fields id --fields status | Native upstream field selection for supported named operations | | --payload / --payload-file | Complete native input JSON or regular private file; do not mix with input fields | | --account NAME | Select one private profile | | --confirm | Approve the exact requested mutation, subject to enabled policies | | --help / schema COMMAND | Actual discovered flags and full input schema |

| Exit | Meaning | | --- | --- | | 0 | Successful local result or provider response | | 1 | Unexpected error | | 2 | Usage, invalid input or a refused mutation, an unknown command or a hidden write | | 3 | Not found | | 4 | Authentication or forbidden permission | | 5 | Provider/GraphQL/typed mutation/network failure | | 7 | Rate limit or quota failure | | 10 | Nothing configured or invalid private profile/token configuration |

GraphQL can fail inside HTTP 200. errors arrays fail even with partial data; typed mutation error unions fail rather than reporting success. Named mutations require a recognized successful result type. Acceptance/status from Buffer is not an assertion that a downstream social network completed publishing.

7. MCP or CLI and token cost

CLI and MCP are built by Slipway from each tool's one definition, so they share discovery, validation, handlers, accounts and one write guard, and no second provider implementation can drift.

Measured on 2026-10-05 against 2.0.1, the same day, with Claude Code 2.1.286 on Claude Opus 5.5 (one short prompt with and without the server connected, the difference read from the API's own usage figures) and Codex 0.159.3 on gpt-6.1-sol:

| Cost | 2.0.1 | 3.0.0 | | --- | --- | --- | | Claude Code, every tool loaded, every message | 112,029 | 60,720 | | Claude Code's default, tool search, every message | 737 | 740 | | SKILL.md, read once | 3,477 | 3,535 | | Codex over the CLI, one task, median of five | 113,353 | 111,104 | | Codex over MCP, the same task, median of five | 48,471 | 48,492 |

The task was "find the command that schedules a post to a channel, and the flags it requires". Every tool loaded costs less because each write's native input appeared twice, as its own fields and inside payload, and 3.0.0 writes each repeated part once under $defs. Over the CLI, every 3.0.0 run asked which (476 characters) where 2.0.1's read the full command list (8,096), and create-post's schema printed in 33,734 characters instead of 116,294. Over MCP, Codex prints its own TypeScript rendering of the tool list, cut to about 10,000 tokens; that rendering is 426 tokens longer on 3.0.0 (21,946 against 21,520), because Codex leaves the argument descriptions out of a tool whose schema is large, and sharing the repeats brought create_idea under that size. SKILL.md costs 58 more because it now says how approval works over MCP and lists every exit code; tool search differs by 3 tokens.

Upstream fields can reduce requested provider data, and --select reduces the result a model sees after receipt. The CLI does not cost nothing: its help and output reach the model like anything else.

8. Every tool and argument

The following sections come from actual stdio discovery. Native input schemas and field-selection trees are reused from the reviewed published official CLI, with strict nested property checks. Required native fields are validated after payload/profile-default routing; they need not appear as top-level required flags because payload is an alternative.

| Tool | Native operation | Policy | | --- | --- | --- | | get_account | account | Read | | add_post_to_content_item | addPostToContentItem | Confirm exact mutation | | get_aggregated_post_metrics | aggregatedPostMetrics | Read | | get_channel | channel | Read | | get_channels | channels | Read | | get_configuration | configuration | Read | | get_content_item | contentItem | Read | | get_content_items | contentItems | Read | | create_content_item | createContentItem | Confirm exact mutation | | create_content_item_draft | createContentItemDraft | Confirm exact mutation | | create_idea | createIdea | Confirm exact mutation | | create_post | createPost | Confirm exact mutation | | create_post_template | createPostTemplate | Confirm exact mutation | | get_daily_posting_limits | dailyPostingLimits | Read | | delete_content_item | deleteContentItem | Confirm exact mutation | | delete_post | deletePost | Confirm exact mutation | | delete_post_template | deletePostTemplate | Confirm exact mutation | | edit_post | editPost | Confirm exact mutation | | get_idea_groups | ideaGroups | Read | | get_ideas | ideas | Read | | get_instagram_audio | instagramAudio | Read | | move_post_in_queue | movePostInQueue | Confirm exact mutation | | get_post | post | Read | | get_posts | posts | Read | | get_post_template | postTemplate | Read | | get_post_templates | postTemplates | Read | | promote_content_item_draft_to_posts | promoteContentItemDraftToPosts | Confirm exact mutation | | remove_post_from_content_item | removePostFromContentItem | Confirm exact mutation | | get_search_instagram_audio | searchInstagramAudio | Read | | get_tag | tag | Read | | get_tags_v2 | tagsV2 | Read | | get_trending_instagram_audio | trendingInstagramAudio | Read | | update_content_item | updateContentItem | Confirm exact mutation | | update_content_item_draft | updateContentItemDraft | Confirm exact mutation | | update_post_template | updatePostTemplate | Confirm exact mutation | | list_accounts | Local/helper or parsed GraphQL | Read | | graphql_query | Local/helper or parsed GraphQL | Read | | graphql_mutation | Local/helper or parsed GraphQL | Confirm exact mutation | | preview_operation | Local/helper or parsed GraphQL | Read | | query_pages | Local/helper or parsed GraphQL | Read | | get_operation_schema | Local/helper or parsed GraphQL | Read |

get_account

buffer-cli get-account

| Argument | Required | Type | Details | | --- | --- | --- | --- | | payload | No; body and guard rules apply | object | Complete native input object instead of individual input fields. | | payload_file | No; body and guard rules apply | string | Regular local JSON input file, no symlink, at most 1 MiB; cannot mix with payload or individual input fields. minLength: 1. | | fields | No; body and guard rules apply | array | Upstream field paths relative to the result, as in official CLI --fields. Default fields are bounded. Use items.id for connection nodes; pageInfo.endCursor for cursors. minItems: 1. maxItems: 100. Items: string. | | account | No; body and guard rules apply | string | Private account profile name. Selects credentials only; an organization default does not restrict provider token permissions. minLength: 1. |

Native input requirements: No required native input fields. Use individual fields or complete payload/payload_file.

Default upstream fields: id, email, organizations.id, organizations.channelCount, timezone. Inspect get_operation_schema for every selectable path.

add_post_to_content_item

buffer-cli add-post-to-content-item

| Argument | Required | Type | Details | | --- | --- | --- | --- | | id | No; body and guard rules apply | string | The content item to add the post to. | | postId | No; body and guard rules apply | string | The post to add. The post must already exist. The post and the content item must belong to the same organization. | | payload | No; body and guard rules apply | object | Complete native input object instead of individual input fields. | | payload_file | No; body and guard rules apply | string | Regular local JSON input file, no symlink, at most 1 MiB; cannot mix with payload or individual input fields. minLength: 1. | | fields | No; body and guard rules apply | array | Upstream field paths relative to the result, as in official CLI --fields. Default fields are bounded. Use items.id for connection nodes; pageInfo.endCursor for cursors. minItems: 1. maxItems: 100. Items: string. | | account | No; body and guard rules apply | string | Private account profile name. Selects credentials only; an organization default does not restrict provider token permissions. minLength: 1. | | confirm | No; body and guard rules apply | boolean | Set true only when the user asked for exactly this action. |

Native input requirements: id, postId. Use individual fields or complete payload/payload_file.

Default upstream fields: __typename, contentItem.id, contentItem.accountId, contentItem.allowedActions, contentItem.author.id, contentItem.author.avatar, contentItem.author.email, contentItem.author.isDeleted, contentItem.author.name, contentItem.author.urn, contentItem.body.__typename, contentItem.body.id, contentItem.body.aiAssisted, contentItem.body.assets.__typename, contentItem.body.assets.id, contentItem.body.assets.mimeType, contentItem.body.assets.source, contentItem.body.assets.thumbnail, contentItem.body.assets.type, contentItem.body.text, contentItem.organizationId, contentItem.tags.id, contentItem.tags.color, contentItem.tags.colorName, contentItem.tags.isLocked, contentItem.tags.name, contentItem.targetDate, contentItem.title, contentItem.createdAt, post.id, post.allowedActions, post.assets.__typename, post.assets.id, post.assets.mimeType, post.assets.source, post.assets.thumbnail, post.assets.type, post.author.id, post.author.avatar, post.author.email, post.author.isDeleted, post.author.name, post.author.urn, post.channel.id, post.channel.allowedActions, post.channel.avatar, post.channel.descriptor, post.channel.displayName, post.channel.externalLink, post.channel.hasActiveMemberDevice, post.channel.isDisconnected, post.channel.isLocked, post.channel.isNew, post.channel.isQueuePaused, post.channel.metadata.__typename, post.channel.metadata.defaultToReminders, post.channel.metadata.maxCharacters, post.channel.metadata.serverUrl, post.channel.metadata.subscriptionType, post.channel.metadata.shouldShowLinkedinAnalyticsRefreshBanner, post.channel.metadata.businessPortfolioId, post.channel.metadata.lastSubscribedAt, post.channel.metadata.phoneNumberId, post.channel.metadata.wabaId, post.channel.name, post.channel.organizationId, post.channel.products, post.channel.scopes, post.channel.service, post.channel.serviceId, post.channel.showTrendingTopicSuggestions, post.channel.timezone, post.channel.type, post.channel.createdAt, post.channel.updatedAt, post.channelId, post.channelService, post.contentItemId, post.dueAt, post.error.message, post.error.rawError, post.error.supportUrl, post.externalLink, post.ideaId, post.isCustomScheduled, post.metadata.__typename, post.metadata.firstComment, post.metadata.isAiGenerated, post.metadata.link, post.metadata.shouldShareToFeed, post.metadata.type, post.metadata.title, post.metadata.threadCount, post.metadata.url, post.metadata.details.__typename, post.metadata.details.button, post.metadata.details.link, post.metadata.details.code, post.metadata.details.endDate, post.metadata.details.startDate, post.metadata.details.terms, post.metadata.details.title, post.metadata.details.endTime, post.metadata.details.isFullDayEvent, post.metadata.details.startTime, post.metadata.embeddable, post.metadata.license, post.metadata.madeForKids, post.metadata.notifySubscribers, post.metadata.privacy, post.metadata.spoilerText, post.metadata.locationId, post.metadata.locationName, post.metadata.topic, post.metrics.description, post.metrics.name, post.metrics.type, post.metrics.unit, post.metrics.value, post.metricsUpdatedAt, post.notes.id, post.notes.allowedActions, post.notes.text, post.notes.type, post.notes.createdAt, post.notes.updatedAt, post.notificationStatus, post.schedulingType, post.sentAt, post.sharedNow, post.shareMode, post.status, post.tags.id, post.tags.color, post.tags.colorName, post.tags.isLocked, post.tags.name, post.text, post.via, post.createdAt, post.updatedAt, message. Inspect get_operation_schema for every selectable path.

get_aggregated_post_metrics

buffer-cli get-aggregated-post-metrics

| Argument | Required | Type | Details | | --- | --- | --- | --- | | channelIds | No; body and guard rules apply | array | 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. Items: string. | | endDateTime | No; body and guard rules apply | string | 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. | | organizationId | No; body and guard rules apply | string | The organization ID | | startDateTime | No; body and guard rules apply | string | 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. | | tags | No; body and guard rules apply | object | See the full input schema. | | payload | No; body and guard rules apply | object | Complete native input object instead of individual input fields. | | payload_file | No; body and guard rules apply | string | Regular local JSON input file, no symlink, at most 1 MiB; cannot mix with payload or individual input fields. minLength: 1. | | fields | No; body and guard rules apply | array | Upstream field paths relative to the result, as in official CLI --fields. Default fields are bounded. Use items.id for connection nodes; pageInfo.endCursor for cursors. minItems: 1. maxItems: 100. Items: string. | | account | No; body and guard rules apply | string | Private account profile name. Selects credentials only; an organization default does not restrict provider token permissions. minLength: 1. |

Native input requirements: endDateTime, organizationId, startDateTime. Use individual fields or complete payload/payload_file.

Default upstream fields: metrics.type, metrics.name, metrics.value, metrics.unit, metricsUpdatedAt. Inspect get_operation_schema for every selectable path.

get_channel

buffer-cli get-channel

| Argument | Required | Type | Details | | --- | --- | --- | --- | | id | No; body and guard rules apply | string | The ID of the channel to be retrieved | | payload | No; body and guard rules apply | object | Complete native input object instead of individual input fields. | | payload_file | No; body and guard rules apply | string | Regular local JSON input file, no symlink, at most 1 MiB; cannot mix with payload or individual input fields. minLength: 1. | | fields | No; body and guard rules apply | array | Upstream field paths relative to the result, as in official CLI --fields. Default fields are bounded. Use items.id for connection nodes; pageInfo.endCursor for cursors. minItems: 1. maxItems: 100. Items: string. | | account | No; body and guard rules apply | string | Private account profile name. Selects credentials only; an organization default does not restrict provider token permissions. minLength: 1. |

Native input requirements: id. Use individual fields or complete payload/payload_file.

Default upstream fields: id, displayName, service, timezone, serviceId. Inspect get_operation_schema for every selectable path.

get_channels

buffer-cli get-channels

| Argument | Required | Type | Details | | --- | --- | --- | --- | | filter | No; body and guard rules apply | object | See the full input schema. | | organizationId | No; body and guard rules apply | string | The Organization id to fetch channels for | | payload | No; body and guard rules apply | object | Complete native input object instead of individual input fields. | | payload_file | No; body and guard rules apply | string | Regular local JSON input file, no symlink, at most 1 MiB; cannot mix with payload or individual input fields. minLength: 1. | | fields | No; body and guard rules apply | array | Upstream field paths relative to the result, as in official CLI --fields. Default fields are bounded. Use items.id for connection nodes; pageInfo.endCursor for cursors. minItems: 1. maxItems: 100. Items: string. | | account | No; body and guard rules apply | string | Private account profile name. Selects credentials only; an organization default does not restrict provider token permissions. minLength: 1. |

Native input requirements: organizationId. Use individual fields or complete payload/payload_file.

Default upstream fields: id, name, service. Inspect get_operation_schema for every selectable path.

get_configuration

buffer-cli get-configuration

| Argument | Required | Type | Details | | --- | --- | --- | --- | | organizationId | No; body and guard rules apply | string | The organization to return configuration for. | | payload | No; body and guard rules apply | object | Complete native input object instead of individual input fields. | | payload_file | No; body and guard rules apply | string | Regular local JSON input file, no symlink, at most 1 MiB; cannot mix with payload or individual input fields. minLength: 1. | | fields | No; body and guard rules apply | array | Upstream field paths relative to the result, as in official CLI --fields. Default fields are bounded. Use items.id for connection nodes; pageInfo.endCursor for cursors. minItems: 1. maxItems: 100. Items: string. | | account | No; body and guard rules apply | string | Private account profile name. Selects credentials only; an organization default does not restrict provider token permissions. minLength: 1. |

Native input requirements: organizationId. Use individual fields or complete payload/payload_file.

Default upstream fields: channels.authorizationStatus.feature, channels.authorizationStatus.reason, channels.authorizationStatus.status, channels.channelId, channels.channelType, channels.content.configurationContentTypes, channels.content.rules.__typename, channels.content.rules.property, channels.content.rules.max, channels.content.rules.min, channels.content.rules.maxLength, channels.content.rules.conflictsWith, channels.content.rules.requires, channels.content.rules.maxMegabytes, channels.content.rules.maxDurationSeconds, channels.content.rules.allowedFormats, channels.content.supportedProperties, channels.engagement.engagementType, channels.engagement.metadata.__typename, channels.engagement.metadata.hasUserRating, channels.engagement.metadata.permanentNote, channels.engagement.supportedAiFeatures, channels.service, services.channelType, services.content.configurationContentTypes, services.content.rules.__typename, services.content.rules.property, services.content.rules.max, services.content.rules.min, services.content.rules.maxLength, services.content.rules.conflictsWith, services.content.rules.requires, services.content.rules.maxMegabytes, services.content.rules.maxDurationSeconds, services.content.rules.allowedFormats, services.content.supportedProperties, services.engagement.engagementType, services.engagement.metadata.__typename, services.engagement.metadata.hasUserRating, services.engagement.metadata.permanentNote, services.engagement.supportedAiFeatures, services.service. Inspect get_operation_schema for every selectable path.

get_content_item

buffer-cli get-content-item

| Argument | Required | Type | Details | | --- | --- | --- | --- | | id | No; body and guard rules apply | string | The unique identifier of the content item to fetch. | | payload | No; body and guard rules apply | object | Complete native input object instead of individual input fields. | | payload_file | No; body and guard rules apply | string | Regular local JSON input file, no symlink, at most 1 MiB; cannot mix with payload or individual input fields. minLength: 1. | | fields | No; body and guard rules apply | array | Upstream field paths relative to the result, as in official CLI --fields. Default fields are bounded. Use items.id for connection nodes; pageInfo.endCursor for cursors. minItems: 1. maxItems: 100. Items: string. | | account | No; body and guard rules apply | string | Private account profile name. Selects credentials only; an organization default does not restrict provider token permissions. minLength: 1. |

Native input requirements: id. Use individual fields or complete payload/payload_file.

Default upstream fields: id, accountId, allowedActions, author.id, author.avatar, author.email, author.isDeleted, author.name, author.urn, body.__typename, body.id, body.aiAssisted, body.assets.__typename, body.assets.id, body.assets.mimeType, body.assets.source, body.assets.thumbnail, body.assets.type, body.text, body.posts.id, body.posts.allowedActions, body.posts.assets.__typename, body.posts.assets.id, body.posts.assets.mimeType, body.posts.assets.source, body.posts.assets.thumbnail, body.posts.assets.type, body.posts.channelId, body.posts.channelService, body.posts.contentItemId, body.posts.dueAt, body.posts.externalLink, body.posts.ideaId, body.posts.isCustomScheduled, body.posts.metadata.__typename, body.posts.metadata.firstComment, body.posts.metadata.isAiGenerated, body.posts.metadata.link, body.posts.metadata.shouldShareToFeed, body.posts.metadata.type, body.posts.metadata.title, body.posts.metadata.threadCount, body.posts.metadata.url, body.posts.metadata.details.__typename, body.posts.metadata.details.button, body.posts.metadata.details.link, body.posts.metadata.details.code, body.posts.metadata.details.endDate, body.posts.metadata.details.startDate, body.posts.metadata.details.terms, body.posts.metadata.details.title, body.posts.metadata.details.endTime, body.posts.metadata.details.isFullDayEvent, body.posts.metadata.details.startTime, body.posts.metadata.embeddable, body.posts.metadata.license, body.posts.metadata.madeForKids, body.posts.metadata.notifySubscribers, body.posts.metadata.privacy, body.posts.metadata.spoilerText, body.posts.metadata.locationId, body.posts.metadata.locationName, body.posts.metadata.topic, body.posts.metricsUpdatedAt, body.posts.notificationStatus, body.posts.schedulingType, body.posts.sentAt, body.posts.sharedNow, body.posts.shareMode, body.posts.status, body.posts.text, body.posts.via, body.posts.createdAt, body.posts.updatedAt, organizationId, tags.id, tags.color, tags.colorName, tags.isLocked, tags.name, targetDate, title, createdAt. Inspect get_operation_schema for every selectable path.

get_content_items

buffer-cli get-content-items

| Argument | Required | Type | Details | | --- | --- | --- | --- | | filter | No; body and guard rules apply | object | See the full input schema. | | organizationId | No; body and guard rules apply | string | Organization to list content items for. The caller must be a member of this organization. | | sort | No; body and guard rules apply | array | Sorting to apply, each entry breaking ties in the one before it. Defaults to newest first. A pagination cursor is only valid for the sort that produced it, so reset after to null whenever the sort changes. Items: object. | | payload | No; body and guard rules apply | object | Complete native input object instead of individual input fields. | | payload_file | No; body and guard rules apply | string | Regular local JSON input file, no symlink, at most 1 MiB; cannot mix with payload or individual input fields. minLength: 1. | | fields | No; body and guard rules apply | array | Upstream field paths relative to the result, as in official CLI --fields. Default fields are bounded. Use items.id for connection nodes; pageInfo.endCursor for cursors. minItems: 1. maxItems: 100. Items: string. | | account | No; body and guard rules apply | string | Private account profile name. Selects credentials only; an organization default does not restrict provider token permissions. minLength: 1. | | first | No; body and guard rules apply | integer | Local page-size cap 100, default 25; provider may impose additional query limits. minimum: 1. maximum: 100. | | after | No; body and guard rules apply | string | Opaque cursor from pageInfo.endCursor. One page per ordinary call. maxLength: 8192. |

Native input requirements: organizationId. Use individual fields or complete payload/payload_file.

Default upstream fields: items.id, items.accountId, items.allowedActions, items.author.id, items.author.avatar, items.author.email, items.author.isDeleted, items.author.name, items.author.urn, items.body.__typename, items.body.id, items.body.aiAssisted, items.body.assets.__typename, items.body.assets.id, items.body.assets.mimeType, items.body.assets.source, items.body.assets.thumbnail, items.body.assets.type, items.body.text, items.organizationId, items.tags.id, items.tags.color, items.tags.colorName, items.tags.isLocked, items.tags.name, items.targetDate, items.title, items.createdAt, pageInfo.endCursor, pageInfo.hasNextPage, pageInfo.hasPreviousPage, pageInfo.startCursor. Inspect get_operation_schema for every selectable path.

create_content_item

buffer-cli create-content-item

| Argument | Required | Type | Details | | --- | --- | --- | --- | | organizationId | No; body and guard rules apply | string | Organization that owns the content item and all variants created in it. | | posts | No; body and guard rules apply | array | The channel-specific post variants to create, one per channel. Provide at least one variant, and at most one variant per channel. Items: object. | | tagIds | No; body and guard rules apply | array | Tags to apply to this content item. Omit to create it with no tags. Items: string. | | targetDate | No; body and guard rules apply | string | Optional date indicating when this piece of content should go out. This is a planning aid only and does not schedule any posts. | | title | No; body and guard rules apply | string | Optional title describing what this piece of content is about. | | payload | No; body and guard rules apply | object | Complete native input object instead of individual input fields. | | payload_file | No; body and guard rules apply | string | Regular local JSON input file, no symlink, at most 1 MiB; cannot mix with payload or individual input fields. minLength: 1. | | fields | No; body and guard rules apply | array | Upstream field paths relative to the result, as in official CLI --fields. Default fields are bounded. Use items.id for connection nodes; pageInfo.endCursor for cursors. minItems: 1. maxItems: 100. Items: string. | | account | No; body and guard rules apply | string | Private account profile name. Selects credentials only; an organization default does not restrict provider token permissions. minLength: 1. | | confirm | No; body and guard rules apply | boolean | Set true only when the user asked for exactly this action. |

Native input requirements: organizationId, posts. Use individual fields or complete payload/payload_file.

Default upstream fields: __typename, content.id, content.accountId, content.allowedActions, content.author.id, content.author.avatar, content.author.email, content.author.isDeleted, content.author.name, content.author.urn, content.body.__typename, content.body.id, content.body.aiAssisted, content.body.assets.__typename, content.body.assets.id, content.body.assets.mimeType, content.body.assets.source, content.body.assets.thumbnail, content.body.assets.type, content.body.text, content.organizationId, content.tags.id, content.tags.color, content.tags.colorName, content.tags.isLocked, content.tags.name, content.targetDate, content.title, content.createdAt, errors.__typename, errors.message, errors.channelId, message. Inspect get_operation_schema for every selectable path.

create_content_item_draft

buffer-cli create-content-item-draft

| Argument | Required | Type | Details | | --- | --- | --- | --- | | correlationId | No; body and guard rules apply | string | Client-generated UUID that makes draft creation idempotent. A retry with the same UUID in the same organization returns the first content item in its current state. | | draft | No; body and guard rules apply | object | See the full input schema. | | organizationId | No; body and guard rules apply | string | Organization that will own the content item. | | tagIds | No; body and guard rules apply | array | Tags to apply to this content item. Omit to create it with no tags. Items: string. | | targetDate | No; body and guard rules apply | string | Optional date indicating when this piece of content should go out. This is a planning aid only and does not schedule any posts. | | title | No; body and guard rules apply | string | Optional title describing what this piece of content is about. | | payload | No; body and guard rules apply | object | Complete native input object instead of individual input fields. | | payload_file | No; body and guard rules apply | string | Regular local JSON input file, no symlink, at most 1 MiB; cannot mix with payload or individual input fields. minLength: 1. | | fields | No; body and guard rules apply | array | Upstream field paths relative to the result, as in official CLI --fields. Default fields are bounded. Use items.id for connection nodes; pageInfo.endCursor for cursors. minItems: 1. maxItems: 100. Items: string. | | account | No; body and guard rules apply | string | Private account profile name. Selects credentials only; an organization default does not restrict provider token permissions. minLength: 1. | | confirm | No; body and guard rules apply | boolean | Set true only when the user asked for exactly this action. |

Native input requirements: draft, organizationId. Use individual fields or complete payload/payload_file.

Default upstream fields: __typename, contentItem.id, contentItem.accountId, contentItem.allowedActions, contentItem.author.id, contentItem.author.avatar, contentItem.author.email, contentItem.author.isDeleted, contentItem.author.name, contentItem.author.urn, contentItem.body.__typename, contentItem.body.id, contentItem.body.aiAssisted, contentItem.body.assets.__typename, contentItem.body.assets.id, contentItem.body.assets.mimeType, contentItem.body.assets.source, contentItem.body.assets.thumbnail, contentItem.body.assets.type, contentItem.body.text, contentItem.organizationId, contentItem.tags.id, contentItem.tags.color, contentItem.tags.colorName, contentItem.tags.isLocked, contentItem.tags.name, contentItem.targetDate, contentItem.title, contentItem.createdAt, errors.message, message. Inspect get_operation_schema for every selectable path.

create_idea

buffer-cli create-idea

| Argument | Required | Type | Details | | --- | --- | --- | --- | | content | No; body and guard rules apply | object | See the full input schema. | | cta | No; body and guard rules apply | string | Call-to-action identifier for analytics tracking | | group | No; body and guard rules apply | object | See the full input schema. | | organizationId | No; body and guard rules apply | string | Organization ID that will own the idea | | templateId | No; body and guard rules apply | string | Template ID used to create the idea | | payload | No; body and guard rules apply | object | Complete native input object instead of individual input fields. | | payload_file | No; body and guard rules apply | string | Regular local JSON input file, no symlink, at most 1 MiB; cannot mix with payload or individual input fields. minLength: 1. | | fields | No; body and guard rules apply | array | Upstream field paths relative to the result, as in official CLI --fields. Default fields are bounded. Use items.id for connection nodes; pageInfo.endCursor for cursors. minItems: 1. maxItems: 100. Items: string. | | account | No; body and guard rules apply | string | Private account profile name. Selects credentials only; an organization default does not restrict provider token permissions. minLength: 1. | | confirm | No; body and guard rules apply | boolean | Set true only when the user asked for exactly this action. |

Native input requirements: content, organizationId. Use individual fields or complete payload/payload_file.

Default upstream fields: __typename, id, content.aiAssisted, content.date, content.media.id, content.media.alt, content.media.size, content.media.thumbnailUrl, content.media.type, content.media.url, content.services, content.tags.id, content.tags.color, content.tags.colorName, content.tags.name, content.text, content.title, groupId, organizationId, position, createdAt, updatedAt, idea.id, idea.content.aiAssisted, idea.content.date, idea.content.services, idea.content.text, idea.content.title, idea.groupId, idea.organizationId, idea.position, idea.createdAt, idea.updatedAt, refreshIdeas, message. Inspect get_operation_schema for every selectable path.

create_post

buffer-cli create-post

| Argument | Required | Type | Details | | --- | --- | --- | --- | | aiAssisted | No; body and guard rules apply | boolean | If this post was created with the help of AI | | assets | No; body and guard rules apply | array | Ordered list of assets on this post. Items: object. | | channelId | No; body and guard rules apply | string | Channel's Id for which we want to create the post | | draftId | No; body and guard rules apply | string | Is set when the Post is generated from a Draft | | dueAt | No; body and guard rules apply | string | Date when the post is scheduled to be published | | ideaId | No; body and guard rules apply | string | Is set when the Post is generated from an Idea | | metadata | No; body and guard rules apply | object | See the full input schema. | | mode | No; body and guard rules apply | string | How the post is being scheduled. Values: addToQueue, customScheduled, shareNext, shareNow. | | needsApproval | No; body and guard rules apply | boolean | 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. | | saveToDraft | No; body and guard rules apply | boolean | If true, saves the post as a draft instead of scheduling it. When saving as draft: - Post status will be 'draft' instead of 'buffer' - Posting limits are not checked - The post will not be published until explicitly scheduled | | schedulingType | No; body and guard rules apply | string | Scheduling type to indicate notification publishing or automatic publishing Values: automatic, notification. | | source | No; body and guard rules apply | string | source where the composer was initiated from, used for tracking. | | tagIds | No; body and guard rules apply | array | List of tag IDs Items: string. | | text | No; body and guard rules apply | string | Text content of the Post. Note: for threaded posts, this needs to match the first item in the thread array. | | payload | No; body and guard rules apply | object | Complete native input object instead of individual input fields. | | payload_file | No; body and guard rules apply | string | Regular local JSON input file, no symlink, at most 1 MiB; cannot mix with payload or individual input fields. minLength: 1. | | fields | No; body and guard rules apply | array | Upstream field paths relative to the result, as in official CLI --fields. Default fields are bounded. Use items.id for connection nodes; pageInfo.endCursor for cursors. minItems: 1. maxItems: 100. Items: string. | | account | No; body and guard rules apply | string | Private account profile name. Selects credentials only; an organization default does not restrict provider token permissions. minLength: 1. | | confirm | No; body and guard rules apply | boolean | Set true only when the user asked for exactly this action. |

Native input requirements: channelId, mode, schedulingType. Use individual fields or complete payload/payload_file.

Default upstream fields: post.id, post.status. Inspect get_operation_schema for every selectable path.

create_post_template

buffer-cli create-post-template

| Argument | Required | Type | Details | | --- | --- | --- | --- | | body | No; body and guard rules apply | string | The main content body of the template, may contain {{placeholders}}. | | description | No; body and guard rules apply | string | 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. | | emoji | No; body and guard rules apply | string | The emoji associated with the template. | | organizationId | No; body and guard rules apply | string | 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. | | title | No; body and guard rules apply | string | The title of the template. | | visibility | No; body and guard rules apply | string | Defaults to private if omitted. public is rejected — it is only available to official Buffer clients. Values: internal, private, public. | | payload | No; body and guard rules apply | object | Complete native input object instead of individual input fields. | | payload_file | No; body and guard rules apply | string | Regular local JSON input file, no symlink, at most 1 MiB; cannot mix with payload or individual input fields. minLength: 1. | | fields | No; body and guard rules apply | array | Upstream field paths relative to the result, as in official CLI --fields. Default fields are bounded. Use items.id for connection nodes; pageInfo.endCursor for cursors. minItems: 1. maxItems: 100. Items: string. | | account | No; body and guard rules apply | string | Private account profile name. Selects credentials only; an organization default does not restrict provider token permissions. minLength: 1. | | confirm | No; body and guard rules apply | boolean | Set true only when the user asked for exactly this action. |

Native input requirements: body, organizationId, title. Use individual fields or complete payload/payload_file.

Default upstream fields: __typename, postTemplate.id, postTemplate.body, postTemplate.description, postTemplate.emoji, postTemplate.organizationId, postTemplate.title, postTemplate.visibility, postTemplate.createdAt, postTemplate.updatedAt, message. Inspect get_operation_schema for every selectable path.

get_daily_posting_limits

buffer-cli get-daily-posting-limits

| Argument | Required | Type | Details | | --- | --- | --- | --- | | channelIds | No; body and guard rules apply | array | List of channel IDs to check limits for. All channels must belong to the same organization. Items: string. | | date | No; body and guard rules apply | string | The date to check limits for. Defaults to today if not provided. | | payload | No; body and guard rules apply | object | Complete native input object instead of individual input fields. | | payload_file | No; body and guard rules apply | string | Regular local JSON input file, no symlink, at most 1 MiB; cannot mix with payload or individual input fields. minLength: 1. | | fields | No; body and guard rules apply | array | Upstream field paths relative to the result, as in official CLI --fields. Default fields are bounded. Use items.id for connection nodes; pageInfo.endCursor for cursors. minItems: 1. maxItems: 100. Items: string. | | account | No; body and guard rules apply | string | Private account profile name. Selects credentials only; an organization default does not restrict provider token permissions. minLength: 1. |

Native input requirements: channelIds. Use individual fields or complete payload/payload_file.

Default upstream fields: channelId, isAtLimit, limit, scheduled, sent. Inspect get_operation_schema for every selectable path.

delete_content_item

buffer-cli delete-content-item

| Argument | Required | Type | Details | | --- | --- | --- | --- | | id | No; body and guard rules apply | string | The content item to delete. | | payload | No; body and guard rules apply | object | Complete native input object instead of individual input fields. | | payload_file | No; body and guard rules apply | string | Regular local JSON input file, no symlink, at most 1 MiB; cannot mix with payload or individual input fields. minLength: 1. | | fields | No; body and guard rules apply | array | Upstream field paths relative to the result, as in official CLI --fields. Default fields are bounded. Use items.id for connection nodes; pageInfo.endCursor for cursors. minItems: 1. maxItems: 100. Items: string. | | account | No; body and guard rules apply | string | Private account profile name. Selects credentials only; an organization default does not restrict provider token permissions. minLength: 1. | | confirm | No; body and guard rules apply | boolean | Set true only when the user asked for exactly this action. |

Native input requirements: id. Use individual fields or complete payload/payload_file.

Default upstream fields: __typename, _empty, errors.channelId, errors.message, message. Inspect get_operation_schema for every selectable path.

delete_post

buffer-cli delete-post

| Argument | Required | Type | Details | | --- | --- | --- | --- | | id | No; body and guard rules apply | string | Post id to delete. | | payload | No; body and guard rules apply | object | Complete native input object instead of individual input fields. | | payload_file | No; body and guard rules apply | string | Regular local JSON input file, no symlink, at most 1 MiB; cannot mix with payload or individual input fields. minLength: 1. | | fields | No; body and guard rules apply | array | Upstream field paths relative to the result, as in official CLI --fields. Default fields are bounded. Use items.id for connection nodes; pageInfo.endCursor for cursors. minItems: 1. maxItems: 100. Items: string. | | account | No; body and guard rules apply | string | Private account profile name. Selects credentials only; an organization default does not restrict provider token permissions. minLength: 1. | | confirm | No; body and guard rules apply | boolean | Set true only when the user asked for exactly this action. |

Native input requirements: id. Use individual fields or complete payload/payload_file.

Default upstream fields: __typename, id, message. Inspect get_operation_schema for every selectable path.

delete_post_template

buffer-cli delete-post-template

| Argument | Required | Type | Details | | --- | --- | --- | --- | | id | No; body and guard rules apply | string | The ID of the template to delete. | | payload | No; body and guard rules apply | object | Complete native input object instead of individual input fields. | | payload_file | No; body and guard rules apply | string | Regular local JSON input file, no symlink, at most 1 MiB; cannot mix with payload or individual input fields. minLength: 1. | | fields | No; body and guard rules apply | array | Upstream field paths relative to the result, as in official CLI --fields. Default fields are bounded. Use items.id for connection nodes; pageInfo.endCursor for cursors. minItems: 1. maxItems: 100. Items: string. | | account | No; body and guard rules apply | string | Private account profile name. Selects credentials only; an organization default does not restrict provider token permissions. minLength: 1. | | confirm | No; body and guard rules apply | boolean | Set true only when the user asked for exactly this action. |

Native input requirements: id. Use individual fields or complete payload/payload_file.

Default upstream fields: __typename, _empty, message. Inspect get_operation_schema for every selectable path.

edit_post

buffer-cli edit-post

| Argument | Required | Type | Details | | --- | --- | --- | --- | | id | No; body and guard rules apply | string | ID of the post to edit | | aiAssisted | No; body and guard rules apply | boolean | If this post was edited with the help of AI | | approvalChange | No; body and guard rules apply | string | 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. Values: request, revert. | | assets | No; body and guard rules apply | array | Ordered list of assets on this post. Omit to preserve the existing list, pass an empty array to clear it Items: object. | | draftId | No; body and guard rules apply | string | Is set when the Post is generated from a Draft | | dueAt | No; body and guard rules apply | string | Date when the post is scheduled to be published | | ideaId | No; body and guard rules apply | string | Is set when the Post is generated from an Idea | | metadata | No; body and guard rules apply | object | See the full input schema. | | mode | No; body and guard rules apply | string | 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. Values: addToQueue, customScheduled, shareNext, shareNow. | | saveToDraft | No; body and guard rules apply | boolean | If true, saves the post as a draft instead of keeping it scheduled. When saving as draft: - Post status will be 'draft' instead of 'buffer' - The post will not be published until explicitly scheduled | | schedulingType | No; body and guard rules apply | string | Scheduling type to indicate notification publishing or automatic publishing. Omit it, or send null, to leave the post publishing the way it already does. Values: automatic, notification. | | source | No; body and guard rules apply | string | source where the composer was initiated from, used for tracking. | | tagIds | No; body and guard rules apply | array | tags Items: string. | | text | No; body and guard rules apply | string | 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. | | payload | No; body and guard rules apply | object | Complete native input object instead of individual input fields. | | payload_file | No; body and guard rules apply | string | Regular local JSON input file, no symlink, at most 1 MiB; cannot mix with payload or individual input fields. minLength: 1. | | fields | No; body and guard rules apply | array | Upstream field paths relative to the result, as in official CLI --fields. Default fields are bounded. Use items.id for connection nodes; pageInfo.endCursor for cursors. minItems: 1. maxItems: 100. Items: string. | | account | No; body and guard rules apply | string | Private account profile name. Selects credentials only; an organization default does not restrict provider token permissions. minLength: 1. | | confirm | No; body and guard rules apply | boolean | Set true only when the user asked for exactly this action. |

Native input requirements: id. Use individual fields or complete payload/payload_file.

Default upstream fields: __typename, post.id, post.allowedActions, post.assets.__typename, post.assets.id, post.assets.mimeType, post.assets.source, post.assets.thumbnail, post.assets.type, post.author.id, post.author.avatar, post.author.email, post.author.isDeleted, post.author.name, post.author.urn, post.channel.id, post.channel.allowedActions, post.channel.avatar, post.channel.descriptor, post.channel.displayName, post.channel.externalLink, post.channel.hasActiveMemberDevice, post.channel.isDisconnected, post.channel.isLocked, post.channel.isNew, post.channel.isQueuePaused, post.channel.metadata.__typename, post.channel.metadata.defaultToReminders, post.channel.metadata.maxCharacters, post.channel.metadata.serverUrl, post.channel.metadata.subscriptionType, post.channel.metadata.shouldShowLinkedinAnalyticsRefreshBanner, post.channel.metadata.businessPortfolioId, post.channel.metadata.lastSubscribedAt, post.channel.metadata.phoneNumberId, post.channel.metadata.wabaId, post.channel.name, post.channel.organizationId, post.channel.products, post.channel.scopes, post.channel.service, post.channel.serviceId, post.channel.showTrendingTopicSuggestions, post.channel.timezone, post.channel.type, post.channel.createdAt, post.channel.updatedAt, post.channelId, post.channelService, post.contentItemId, post.dueAt, post.error.message, post.error.rawError, post.error.supportUrl, post.externalLink, post.ideaId, post.isCustomScheduled, post.metadata.__typename, post.metadata.firstComment, post.metadata.isAiGenerated, post.metadata.link, post.metadata.shouldShareToFeed, post.metadata.type, post.metadata.title, post.metadata.threadCount, post.metadata.url, post.metadata.details.__typename, post.metadata.details.button, post.metadata.details.link, post.metadata.details.code, `post.metadata.det