Documentation Index
Fetch the complete documentation index at: https://docs.velahq.xyz/docs/llms.txt
Use this file to discover all available pages before exploring further.
Two credentials
Vela uses two different credentials, each with a different scope:| Credential | Format | Header | Scope |
|---|---|---|---|
| Client secret | vela_cs_... | Authorization: Bearer | Full account access — management operations |
| API key | vela_live_... | x-api-key | Single app — event ingestion only |
Why two credentials?
Your API key travels with every event your service ingests. It’s in your production app, sent on every request. If it’s ever leaked — a logged request, a misconfigured proxy, a developer’s laptop — the worst case is that an attacker can ingest fake events into that one app. They can’t read your data, modify schemas, delete apps, or touch anything else. Your client secret has full account access. It belongs only in server-side configuration, CI/CD secret stores, and the Vela CLI. It never touches your production event path.Client secret (Management API)
Use a client secret for all management operations: creating apps, registering schemas, configuring notification rules, and reading events.API key (Event Ingestion)
Use an API key forPOST /v1/ingest. Pass it in the x-api-key header — not Authorization.
Error responses
Missing credentials — 401
If theAuthorization or x-api-key header is missing:
Invalid credentials — 401
If the token is present but invalid, expired, or revoked:Wrong credential type — 403
If you use an API key (vela_live_...) on a management endpoint, or a client secret on the ingest endpoint:
Rotation
Rotating a client secret
Client secrets support zero-downtime rotation because you can have multiple active secrets simultaneously:- Generate a new secret in Settings → Client Secrets
- Update all services and CI/CD to use the new secret
- Deploy and verify everything is healthy
- Revoke the old secret
Rotating an API key
API key rotation is instant and the old key is immediately invalidated:Best practices
- Never hardcode credentials in source code. Use environment variables.
- Never put credentials in URLs as query parameters — they appear in logs.
- Separate credentials per environment — use a different app (and different API key) for staging and production.
- Revoke immediately if you suspect a credential is compromised.