Base URL
/v1.
Authentication
Vela uses two different credentials depending on the operation:| Credential | Header | Used for |
|---|---|---|
Client secret (vela_cs_...) | Authorization: Bearer <secret> | All management endpoints — apps, schemas, notification rules, events (read) |
API key (vela_live_...) | x-api-key: <key> | Event ingestion only (POST /v1/ingest) |
Request format
All request bodies must be JSON. Set theContent-Type header on every POST, PUT, and PATCH request:
Response format
All responses are JSON. Successful responses return200 or 201 with the requested data. Error responses return a consistent error object.
Success example
Error format
Status codes
| Status | Description |
|---|---|
200 | Success — resource returned or updated |
201 | Created — new resource was created |
204 | No content — deletion succeeded |
400 | Bad request — validation error, check message for details |
401 | Unauthorized — credentials missing or invalid |
403 | Forbidden — credentials valid but insufficient for this operation |
404 | Not found — resource does not exist |
429 | Rate limited — slow down and retry with backoff |
500 | Internal server error — unexpected failure on our end |
Endpoints overview
| Resource | Base path | Auth required |
|---|---|---|
| Apps | /v1/apps | Client secret |
| Schemas | /v1/apps/:appId/schemas | Client secret |
| Ingest | /v1/ingest | API key |
| Events (read) | /v1/apps/:appId/events | Client secret |
| Notification Rules | /v1/apps/:appId/notification-rules | Client secret |
Pagination
List endpoints return arrays directly. When the response is large, passlimit and offset query parameters:
Rate limits
The API is rate-limited per account. If you exceed the limit, you receive a429 Too Many Requests response. Implement exponential backoff before retrying:
- Wait 1 second after the first
429 - Wait 2 seconds after the second
- Wait 4 seconds after the third
- And so on up to a reasonable maximum
SDKs
If you’re using TypeScript or Python, use the SDK instead of calling the API directly — it handles authentication, serialization, and typed errors automatically:TypeScript SDK
@vela-event/sdk — type-safe clients for Node.js and browsers.Python SDK
vela-sdk — sync and async clients for Python 3.9+.