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 rotate among themselves (anti-ban). 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 (prepaid wallet)

Billing belongs to the account (not the project) and is prepaid pay-as-you-go: there are no fixed plans or subscriptions. The account has a wallet with a balance (paid money + courtesy bonus), and the consumption of every project is debited from it. There's a free-forever allowance per pillar (messages, numbers, storage, projects) — only the overage is charged. Details in Billing (prepaid).

The Account page (admin) shows the wallet balance, the top-ups, the auto top-up (saved card + threshold), and the spending caps, plus the aggregated consumption per project (numbers, sent, received, total).

GET /me/entitlements   # the account's effective limits + wallet + rate card + caps
GET /billing/wallet # balance (paid + bonus) + recent ledger
GET /account/usage # admin: { account: {…}, projects: [{ name, numbers, total, … }] }

Summary

  • Account = company (users, billing/wallet, contacts).
  • Project = isolated environment (numbers, inbox, keys, stats, identity).
  • API key = always belongs to one project.
  • Contacts = shared, filterable per project.
  • Wallet = prepaid (paid + bonus); top-ups and auto top-up live on the account.
  • Members see everything except billing.