Skip to main content

Account, projects, and users

bZapper organizes everything into three levels:

Account (company)
├── Users (admin / member) ← billing and the team live on the account
├── Contacts (shared) ← visible across every project, filterable
└── Projects
├── Project A
│ ├── Numbers (instances) + rotation
│ ├── Inbox (conversations/messages)
│ ├── API keys
│ ├── Statistics
│ └── Number identity (profile/"About")
└── Project B … (isolated from A)

What is a project?

A project is an isolated environment inside your account. Unlike other tools where "instance = one number", here a project groups several numbers that take turns among themselves (redundancy). Each project isolates:

  • Numbers (instances) and the rotation among them;
  • Inbox — conversations and messages;
  • API keys;
  • Statistics (consumption);
  • Number identity (profile/"About").

Use projects to separate clients, brands, environments (production/test), or teams — without mixing numbers, conversations, or billing.

API keys are per project

Each API key belongs to exactly one project. The key already carries the context: every call authenticated with it operates only on the numbers, inbox, and statistics of that project. You don't need to send anything else.

# This key belongs to "Project A" → it only sees Project A's numbers/inbox.
curl https://api.bzapper.com.br/instances -H "Authorization: Bearer bz_live_forProjectA..."

To operate on another project, generate a key in that project (in the panel, switch the project in the top selector and create the key under Keys).

Panel (user session)

In the panel, the active project is chosen in the header selector and sent on each request via the X-Project-Id header. The screens (Numbers, Inbox, Keys, Statistics) reflect the active project. Switching the project switches the entire context.

Contacts belong to the account (shared)

The contact base belongs to the account — the same client is recognized in any project. You can filter contacts by project:

GET /contacts                      # every contact in the account
GET /contacts?project_id=<id> # only those who had a conversation in that project
GET /contacts?project_id=current # only those of your key's/session's project

Users and roles

Users belong to the account and can see every project. There are two roles:

RoleCan
Administratoreverything: billing, account consumption, managing users and projects
Membereverything except billing and the account page

An admin invites users under Account → Team (by email; the invitee receives a link to set their password). The account always keeps at least one administrator.

Account billing (Pro plan)

Billing belongs to the account (not the project): the account has one plan (Free or Pro) and one currency, and the resources of every project count against the account's limits. Free is free forever; Pro is a monthly recurring subscription (unlimited messages + a bundle of resources), with add-ons to extend it. Details in Billing.

The Billing page (admin) shows the plan, the invoices, the cards (with a primary card + recurrence), and the aggregated consumption per project (numbers, sent, received, total).

GET /me/entitlements   # the account's effective limits (plan, add-ons, allowances, usage)
GET /me/subscription # plan state (status, due date, recurrence, currency)
GET /me/invoices # the account's invoice history
GET /account/usage # admin: { account: {…}, projects: [{ name, numbers, total, … }] }

Summary

  • Account = company (users, billing/plan, contacts).
  • Project = isolated environment (numbers, inbox, keys, stats, identity).
  • API key = always belongs to one project.
  • Contacts = shared, filterable per project.
  • Plan = Free or Pro (recurring + add-ons); billing lives on the account.
  • Members see everything except billing.