Members & invites
The Members tab lists everyone in the org with their name, email, role, and the date they joined. Roles, in increasing privilege:
Administering the org is role-gated in the dashboard and over
MCP alike, so a
member can’t
route around the UI with an API key.
Owners and admins get an Invite member form and a remove control on
each row. Removing someone also cuts their programmatic access: any
API key they minted and any MCP OAuth token they hold
stop working on the next request, so there’s no second cleanup step.
An invited person shows up under Invitations with one of three statuses:
Organization
The Organization tab holds your workspace profile. Owners and admins can edit:- Name and logo — how the org is shown across the product.
- Domain plus allow domain join — when enabled, new sign-ups on that email domain join this org without an invite.
- Timezone — an IANA
zone (e.g.
America/New_York). - Default locale — the language new members start in.
/org/<slug> in your URLs) is read-only. Non-admin
members see this tab as a read-only summary.
The timezone here also sets the day boundary for daily reports
and day-over-day call counts, so set it to where your team actually works.
API keys
API keys are minted under Settings → Integrations → API Call Upload, not on a dedicated tab. A key is scoped to one organization, and the same key authenticates the REST API and the MCP server — there’s no separate credential per surface. The key list shows each key’s name, prefix, and last-used time. The full secret is shown once at creation — Zelto only stores a hash — so copy it then. Minting and revoking keys is owner/admin-only. A key is a bearer credential for the whole organization: it reads every conversation and transcript, and it outlives the browser session of the person who minted it. Members still see the key list, but creating one is refused with Only an organization owner or admin can manage API keys, and revoking with Only an organization owner or admin can revoke keys.A key does not outlive its owner’s access. Every request re-checks the
person the key belongs to, so removing them from the org — or banning their
account — stops their keys working on the next call, with nothing to delete by
hand. The same re-check applies to MCP OAuth tokens. The check is
live, not a deletion: re-adding that person makes their old keys work again, so
delete the rows too if you want them gone for good.
Usage & billing
The Usage tab meters two kinds:
Each kind shows your monthly quota, any prepaid grant balance, and
overage once you exceed both. A toggle switches between the current
period and the previous one; grant balance and the free-remaining bar
are live-state, so they only show on the current period.
Below the quotas you get a daily usage chart for the selected period
and a usage-by-source breakdown so you can see which
integration drove the volume.
If a quota runs out with no payment method on file, an Add payment
method prompt opens the Stripe billing portal so you can keep analyzing
calls.
Audit log
The Audit log tab is your own copy of the access trail for this organization: who read a transcript, who opened a call, who queried the data, and who changed a setting. It is read-only — there is no way to edit or delete a row from the product — and it shows the 250 most recent events, newest first. Each row has five columns:Access actions
Reads of call content are recorded under thephi.* family (phi for protected
health information — the naming a HIPAA business associate agreement asks for,
and it applies to every org whether or not your calls are healthcare calls):
One row is written per request, not per record, so a list or a bulk query is
a single row carrying how many records it touched rather than thousands of rows.
Change actions
The same trail carries the governance changes, so “who touched this” doesn’t require knowing our naming. The common ones aremember.invited,
member.removed, member.role_changed, api_key.created, api_key.revoked,
mcp_oauth.granted, and org.deleted. Sign-ins are audited too, but they aren’t
scoped to an organization, so they don’t appear on this tab.
The Zelto staff marker
A row whose actor is one of our employees is tagged Zelto staff with a shield, next to their email. Anything else is either one of your own people, one of your API keys, or a background job. To enumerate every time we looked at your data, scan for that marker and forphi.cross_org_access.
Recording playback is not on the trail yet. Call audio is served from a
storage URL the app doesn’t sit in front of, so pressing play — or fetching that
URL directly — produces no audit row. What is recorded is the moment the audio
was handed over: the conversation view that rendered the player
(
phi.conversation_read) and the assistant’s recording tool
(phi.recording_accessed). Playback itself will be covered once recordings move
behind an authenticated route. Everything else in this section describes coverage
that exists today.member who
navigates to it gets a 404. Rows are retained for two years, then swept.
Related
- Reports — the org timezone sets the day boundary for daily counts.
- Conversations — opening a call writes a row to the audit log.
- MCP — point an AI client at your workspace with an org API key.
- API Call Upload — mint keys and push calls into Zelto.
- Quickstart — get your first transcript in minutes.

