Account vs. Workspace API keys
Both kinds of keys work the same way technically. The difference is how much they can access.Account API key
Workspace API key
How API keys work
A VIVI API key isn’t a single password you paste into one field. It’s a set of credentials your app exchanges for a temporary access token. When you create one, VIVI gives you four values to copy:client_id when requesting an access token.client_secret. Shown only once, at creation, so store it somewhere safe.https://vivi-cxp-api/). Copy it exactly as shown in the portal.Exchange your credentials for an access token
clientId and clientSecret to the tokenUrl. VIVI returns a short-lived access token (a JWT) that’s valid for about 24 hours.Call the VIVI API with that token
Authorization: Bearer <access_token>. When it expires, repeat step 1 to get a new one.Create an API key
Open the right page
- Account API key: go to Manage Account and open the API Credentials tab.
- Workspace API key: open your workspace, go to Users, and open the API Credentials tab.
Create a new credential
Zapier integration or Nightly report job). For a Workspace key, also pick the role it should have.Copy your four values immediately
clientId, clientSecret, audience, and tokenUrl once, each with a copy button. The dialog also includes a ready-to-run curl example and a link to the API reference. Save the values in your secrets manager now.Start using it
Use an API key
Replace the placeholders below with the values from the portal. Theaudience and tokenUrl must match exactly what VIVI showed you.
Step 1: Get an access token
access_token and how long it’s valid (in seconds):
Step 2: Call the VIVI API
Send the token as a Bearer token on theAuthorization header. The example below lists the workspaces in your account.
Permissions
API keys don’t have their own separate permissions. They inherit them from the role described in the comparison above: an Account API key acts as an account admin, while a Workspace API key uses the role you assigned it (which you can change later). For details on the available roles, see Users.Manage existing keys
All of these actions live on the same API Credentials tab where you created the key.Rotate the secret
clientSecret (shown once) and retires the old one. Use it if a secret may have leaked, or on a regular schedule. Tokens already issued stay valid until they expire (~24 hours), so update your app promptly.Deactivate the key
Change the role
Identify a key
Troubleshooting
I get 403 Forbidden
I get 403 Forbidden
My token request fails (invalid_client / invalid_request)
My token request fails (invalid_client / invalid_request)
tokenUrl with Content-Type: application/json, and that clientId, clientSecret, and audience are copied exactly as shown in the portal (no extra spaces). The grant_type must be client_credentials. If the secret was lost, rotate the key to get a new one.I closed the dialog and lost my client secret
I closed the dialog and lost my client secret
I don't see the API Credentials tab
I don't see the API Credentials tab
Should I use vivi-api-key instead?
Should I use vivi-api-key instead?
Authorization: Bearer token.Best Practices
- Use the least privilege that works. Prefer a Workspace API key with a narrow role over an Account API key whenever possible.
- Store secrets safely. Keep the
clientSecretin a secrets manager or environment variable, never in source code, spreadsheets, or chat messages. - One key per integration. Give each app or job its own key with a descriptive name, so you can rotate or deactivate it without affecting anything else.
- Cache and refresh tokens. Reuse the access token until it nears expiry instead of fetching a new one on every request.
- Rotate regularly. Rotate secrets on a schedule, and immediately if you suspect exposure.
- Deactivate what you don’t use. Disable keys for retired integrations or departed team members.

