Integrate your POS, website, or app with Vela's loyalty platform. Automate point earning, manage members, redeem rewards, and receive real-time webhooks — all through a simple REST API.
Generate an API key from your admin dashboard under API & Webhooks. Choose the scopes you need.
Send a test request to list your loyalty programs and verify everything works.
Connect your POS or app to the checkout endpoint and start earning points automatically.
All API requests must include your API key in the X-API-Key header. Each key is scoped to specific permissions and rate-limited independently.
curl -X GET "https://api.vela.cx/api/v1/programs/" \
-H "X-API-Key: vela_sk_your_key_here"https://api.vela.cxAll endpoints are prefixed with /api/v1/.
When generating an API key, select only the scopes your integration needs. This follows the principle of least privilege.
| Scope | Description |
|---|---|
read:members | List, retrieve, and look up member data |
write:members | Enroll new members |
read:programs | List programs and tiers |
read:rewards | List rewards and offers |
write:rewards | Redeem rewards for members |
write:ledger | Create transactions (earn/redeem/adjust) and checkout |
read:passes | Retrieve wallet pass details |
write:passes | Create wallet passes |
Each API key has an independent rate limit (default: 60 requests/minute, configurable per key). When exceeded, the API returns 429 Too Many Requests.
Rate Limit Header
X-RateLimit-LimitRemaining
X-RateLimit-RemainingReset
X-RateLimit-Reset| Status | Meaning |
|---|---|
401 | Missing or invalid API key |
403 | API key lacks required scope |
404 | Resource not found |
429 | Rate limit exceeded |
400 | Invalid request body |
The POST /api/v1/checkout/ endpoint is designed for seamless POS integration. When a cashier completes a sale:
points.earned (and member.joined if new)Use the invoice_id field for idempotency — duplicate invoice IDs are rejected.