Create your first app
Every Brevo App starts with the Brevo CLI (@getbrevo/cli).
Works with Claude Code. Every step below can be driven straight from Claude Code. Run brevo skill:cli install once to add the Brevo CLI skill.
Install the CLI
npm
yarn
Homebrew
Requirements: Node.js >= 20.15.0 (Homebrew installs Node automatically as a dependency).
Sign in
Opens oauth-cli.brevo.com in your browser. After signing in, credentials are saved to ~/.brevo/credentials.json.
Create an app
Guided setup: authenticate, create an app, and optionally scaffold starter code, in one flow. No flags; it prompts for app name, logo URL, distribution type, app type, OAuth callback URL, output directory, and whether to scaffold the Test OAuth App feature.
For scripted or automated flows, use brevo app create with flags instead. See the CLI reference.
Your app’s configuration
brevo app init (or brevo app create) writes an app-config.json file to your project. This file is your app. It’s the single source of truth: edit it, then run brevo app upload to push the change to Brevo. brevo app upload always fetches the server’s current state first and shows you a diff before pushing anything.
A few top-level fields are shared by every app, regardless of type:
Private apps only, for now. A private app can only be authorized or installed by users within your own Brevo organization. It can’t be distributed to external users or listed anywhere. Support for public apps, which you’ll be able to distribute to Brevo’s end users generally, is planned for a future release.
What the rest of the file looks like depends on the app type you chose when creating it:
- OAuth app: a populated
authblock (auth.scopes,auth.redirectUris) and noui_appkey at all. This is what lets your app authenticate on a user’s behalf. See Authentication & scopes. - UI app: the opposite shape, an empty
auth: {}and a populatedui_appblock instead. See Action links for a full example.
The presence of the ui_app key is what tells Brevo which kind of app this is. Never populate both auth and ui_app in the same file.