What is @ezibreezy/cli?
@ezibreezy/cli is the official command-line interface for EziBreezy. It lets teams inspect workspaces, integrations, drafts, schedules, media, approvals, inbox work, analytics, grid items, tags, and hashtags, then run supported write actions from a terminal, script, cron job, or CI job with the same API, role checks, and platform limits as the product.
How do I install the EziBreezy CLI?
Install it from npm with npm install -g @ezibreezy/cli. You can also use pnpm add -g @ezibreezy/cli, or run one-off commands with npx @ezibreezy/cli or pnpm dlx @ezibreezy/cli.
What is the CLI binary called?
The binary is called ezibreezy, so commands look like ezibreezy auth:login, ezibreezy workspaces:list, and ezibreezy content:create --workspace <id> --json create-content.json.
Does the CLI require Node?
@ezibreezy/cli requires Node.js 22 or newer. The package is distributed as an ESM Node CLI and is built with commander and zod.
How does CLI authentication work?
The CLI supports browser login and API-key authentication. Browser login runs ezibreezy auth:login, opens an EziBreezy approval page, and stores a revocable ezb_cli_ token locally. API-key auth uses EZIBREEZY_API_KEY or --api-key, with the environment variable preferred for scripts and CI.
Should I use browser login or an API key?
Use browser login for a person working from their own terminal. Use an API key for CI, cron, servers, or any headless environment. Avoid --api-key for routine use because command flags can show up in shell history or process listings.
Where are CLI login tokens stored?
Browser-login tokens are stored per API URL in %APPDATA%\EziBreezy\cli-auth.json on Windows, ~/Library/Application Support/EziBreezy/cli-auth.json on macOS, and ${XDG_CONFIG_HOME:-~/.config}/ezibreezy/cli-auth.json on Linux. EZIBREEZY_CLI_AUTH_FILE can override the location.
How long do CLI login tokens last?
Browser-login tokens expire after 7 days. Device approval codes expire after 10 minutes if they are not approved in the browser.
Can I revoke CLI access?
Yes. Run ezibreezy auth:logout to remove the stored token and revoke it server-side when possible. You can also revoke active CLI logins from the Developer settings page in the EziBreezy app.
How does workspace selection work?
Run ezibreezy workspaces:list or ezibreezy auth:whoami to see accessible workspaces. Most workspace commands require --workspace <id>. API keys are organization-scoped, so they can reach workspaces in that organization, but each request still goes through workspace access and role checks.
What can the CLI read from EziBreezy?
The CLI can read accessible workspaces, integrations, publishing capabilities and safe provider options, content, failed and approval counts, approval history, client review batches, media, media folders and tags, taxonomy, hashtag groups, analytics summaries, post analytics, demographics, inbox threads and messages, inbox stats, and grid planner items.
Can the CLI create or schedule posts?
Yes. content:create can create drafts or content records from JSON, content:update can update supported fields, and content:schedule can schedule or reschedule an item. The same post appears in the Composer and Calendar.
Can the CLI publish posts?
Yes, content:publish can queue an immediate publish for a draft or scheduled content item, but it requires --yes. Scheduled posts created by the CLI still publish through the normal EziBreezy scheduling system and provider validation.
Can the CLI reply to Inbox conversations?
Yes, where the connected platform supports replies. inbox:reply sends a public reply and requires --yes. The current Social Inbox coverage is Instagram, Facebook, and Threads.
Which commands require --yes?
Confirmed --yes commands include content:publish, content:request-approval, content:resubmit, client-reviews:send, client-reviews:resend, inbox:reply, inbox:moderate, inbox:retry-message, inbox:delete-failed, inbox:read-all, media:bulk-delete, grid:delete, grid:promote, and analytics:report.
Does the CLI output JSON?
Yes. Successful commands write JSON to stdout, usually the same { data, meta } envelope returned by the API. Errors write structured JSON to stderr with error.code, error.message, optional status, and sanitized details, then exit non-zero.
Does the CLI respect workspace roles?
Yes. Role checks are enforced server-side. Viewers can read supported workspace data but are blocked from mutations that require editor or admin access. Editors and admins can run write commands only where the product and plan allow them.
Does the CLI work with approvals and client reviews?
Yes, on workspaces whose plan includes those workflows. The CLI can read approval history, request or resubmit internal approval, submit decisions, add comments, and manage client review batches. Sending or resending review links requires --yes. See Approvals and agency workflows.
Does the CLI work with analytics and reports?
Yes. It can fetch analytics summaries, integration health, post analytics, aggregate post analytics, single-post analytics, demographics, and agency-plan PDF reports. analytics:report writes the PDF to --output and requires --yes.
Does the CLI replace the API?
No. The CLI is a terminal interface for humans, shell scripts, cron jobs, and CI. The REST API remains the lower-level surface for custom integrations and services.
Does the CLI replace MCP?
No. The CLI is for terminals and scripts. MCP is for AI tools such as Claude, Codex, Cursor, and other MCP-compatible clients.
What are the limitations?
The CLI does not bypass EziBreezy roles, plan gates, media limits, scheduled-post limits, provider validation, inbox platform constraints, or API rate limits. It does not currently expose every product workflow, such as social-account connection, member or billing management, boost ads, or Workbench planning-table commands.