Key types
Sandbox and production are properties of a project, not of your account or
organization. Each project has sandbox keys and production keys. Every new
project starts in sandbox. A project goes live through its own Go-Live
flow in the dashboard: you apply, a Wave admin reviews, assigns the project its
own phone number, and Wave creates a
sk_live_ key for it. Other projects of
your organization stay as they are. Sandbox keys stay active after Go-Live.
Some features (recordings, virtual numbers, queues) require a production key.Getting a key
API keys are created and managed in the Wave dashboard (not via the API):- Log in at wave.sa.
- Open API Keys.
- Copy the key on creation — it is shown once.
Scopes
Each key carries scopes that gate what it can do. Set them when you create or edit a key in the dashboard.
A request for something outside a key’s scopes returns
403 INSUFFICIENT_PERMISSIONS.
Audit logs
GET /v1/audit-logs lists the changes in your project, newest first: API keys
made and changed, webhooks, numbers and Go-Live steps. It is read-only and
needs the audit:read scope. An API key gets the entries of its own
project only.
Keys made on the Keys page by an owner, an admin or an auditor get
audit:read by default. A developer cannot give a key audit:read. The
keys that Wave makes for you (at sign-up, when you create a project, and at
Go-Live) do not get audit:read. A key without it gets
403 INSUFFICIENT_PERMISSIONS.
In the portal, you can reveal a key only when your role may grant every scope
the key holds. For example, a developer cannot reveal a key with audit:read,
and an auditor cannot reveal a key that can make changes.
In the portal, a member whose organization role is owner, admin or auditor also
sees the organization-level changes (members, billing, sign-ins).
- Filters:
fromandto(ISO 8601, inclusive),action,resourceandresource_id(exact match). - Pages:
limit(1–100, default 20). Passnext_cursorback ascursorfor the next page; it isnullon the last page. - Who made the change:
actorisuser(a member;user_idis set),system(Wave) orwave_operator(a Wave operator). Awave_operatorentry does not show the operator’s identity or IP address. - Environments: a sandbox key and a production key of the same project get the same entries.
Sending the key
Every request must include theAuthorization header. Requests without a valid
key return 401 with the standard error envelope.

