Skip to main content

Workspaces

A workspace is the tenant: your team, its billing, its members, and all of its operational data — contacts, conversations, messages, templates, media, webhooks. You never pass a workspace id. Your API key belongs to exactly one workspace, and every query is scoped to it before it runs. There is no request you can construct that reads another workspace’s data.

Modes

Each workspace has two independent modes:

test

Nothing reaches a real phone. Sends are simulated end to end, including webhooks and delivery statuses, so you can exercise the full lifecycle safely.

live

Real messages, real recipients. Meta bills each message to the business at its own rates.
Mode is a property of the key, taken from its prefix (sk_test_ / sk_live_). The two modes hold entirely separate data: a contact created in test does not exist in live. This means promoting an integration is a credential swap, not a code change.

Modes and plans

Test mode is free and never plan-limited: it runs on the shared test number, so you can build without a plan. Live mode is where the plan applies. Connecting your own number needs a plan, and live API keys need the Pro plan; a live key on a smaller plan gets 402 plan_limit_reached. Meta bills each live message to the business directly, and LazyApp adds 0% to Meta’s rates. See How billing works and Plans and limits.
In the console, mode is a toggle in the header rather than part of the URL, so a link you paste to a colleague stays valid whichever mode they are in.

Connections

Inside a workspace, a connection is one WhatsApp Business Account and its phone numbers. Credentials live on the connection, which is the real isolation boundary for sending. Most sends do not name a connection — LazyApp uses the workspace default. Name one explicitly when you have several:
Or by LazyApp’s own identifier, which survives a number being re-provisioned at Meta:
List what you have with GET /v1/capabilities.

Platform customers

If you resell LazyApp, each of your customers gets their own isolated workspace with its own connections, keys and data. You manage them through the Platform API. Your customers integrate only with LazyApp — they never see Meta.