Use integration API clients when an approved system needs read-only VaultPilot data through the public API. Keep the client narrow: grant only the scopes and vaults the system needs, record who owns it, and revoke it when the integration is retired.
Public API surface
Endpoint, credential format and status-code details are in the Public API reference.
GET /api/public/v1/secrets returns an encrypted snapshot for the vaults assigned to the API client: vault metadata, encrypted vault names, secret IDs, secret types, encrypted payloads and timestamps. It does not return plaintext passwords or decrypted vault data.
GET /api/public/v1/secrets/{secretId} returns one encrypted secret from the same allowed snapshot. If the ID is malformed, missing, deleted, or outside the client’s allowed vaults, VaultPilot deliberately returns 403 Integration authorization failed. so unauthorized clients cannot tell hidden records from bad IDs.
API clients can also read status endpoints. These never decrypt vault data and need no vault assignment unless the client also has SECRETS_READ.
| Scope | Endpoint | Returns |
|---|---|---|
SECRETS_READ | GET /api/public/v1/secrets and GET /api/public/v1/secrets/{secretId} | Encrypted vault and secret snapshots for assigned vaults. |
SERVER_STATUS_READ | GET /api/public/v1/server/status | App version, uptime, vault count, active API client count and directory provider count. |
DIRECTORY_STATUS_READ | GET /api/public/v1/directory/status | Directory provider health, object counts, selected login counts, selected credential counts and last-seen/sync timestamps. |
UPDATE_STATUS_READ | GET /api/public/v1/updates/status | The Update Center status shown in the console, for read-only monitoring. |
Create a client
- Sign in as an Owner.
- Open Integrations and go to the API clients section.
- Pick only the endpoint scopes the consuming system needs.
- If
SECRETS_READis selected, assign the minimum vault list. Status-only clients do not need vault scope. - Create the client with a clear name.
- Copy the client secret once and store it in the approved secret store for the consuming system.
- Record owner, purpose, allowed vaults, scopes and review date.
The client secret is stored hashed on the server. If it is lost, create a new client and revoke the old one.
Authentication
VaultPilot accepts either HTTP Basic auth or the legacy compatibility headers. Prefer Basic auth for new integrations.
Authorization: Basic ${BASE64_CLIENT_CREDENTIALS}
Older clients can use the compatibility headers:
x-passman-client-id: <CLIENT_ID>
x-passman-client-secret: <CLIENT_SECRET>
Do not log either header. Do not paste real client IDs or secrets into screenshots, tickets, documents or support email.
Example request
$pair = "<CLIENT_ID>:<CLIENT_SECRET>"
$basic = [Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes($pair))
Invoke-RestMethod -Headers @{ Authorization = "Basic $basic" } -Uri "https://<SERVER_HOST>:1734/api/public/v1/secrets"
Status-only example:
$pair = "<CLIENT_ID>:<CLIENT_SECRET>"
$basic = [Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes($pair))
Invoke-RestMethod -Headers @{ Authorization = "Basic $basic" } -Uri "https://<SERVER_HOST>:1734/api/public/v1/server/status"
Run commands that contain real $pair or $basic values only in a private operator shell.
Expected errors
| Symptom | Meaning | Operator action |
|---|---|---|
| 401 or auth failure | Client ID/secret is missing, malformed, wrong or revoked. | Create a new client, update the consuming system, then revoke the old client. |
| Scope denied | The client does not have the scope required by the endpoint. | Add the intended scope or create a new least-privilege client. |
| Empty vault list | The client has no vaults assigned for secret snapshot access. This matters only for SECRETS_READ. | Assign only the vaults the integration needs, or remove SECRETS_READ for status-only clients. |
| Hidden or invalid secret ID | The secret ID is malformed, deleted or outside the client’s allowed vaults; VaultPilot returns 403 Integration authorization failed. | Take the secret ID from an allowed encrypted snapshot, then check SECRETS_READ, vault assignment and client scope. |