How can we help you?

Velaro REST API Guide

Overview

The Velaro REST API lets you create and update contacts, tag them, and search your Knowledge Base programmatically, for example from Make, Zapier, Power Automate, IFTTT, n8n, Pipedream, Workato or Activepieces.

API access is authenticated using API keys generated in the admin panel. Keys are scoped (read-only vs. read-write) and rate-limited per your plan.

Plan Limits

Your plan sets four allowances: the number of API keys, the number of webhook endpoints, a per-minute call rate, and a daily call allowance. Higher plans include more of each. An admin or billing user can see the exact numbers for the account on Billing and on the API Keys page.

As usage approaches a limit, Velaro sends a warning by email to your account contacts and shows a notice on the API Keys page. When a limit is reached, requests return 429 Too Many Requests; the rate limit headers tell you when to retry. Make, Zapier, Power Automate, n8n and the other tools below all draw from this same allowance, with no separate connection fee. Contact support to discuss higher limits. Ask Moshky "how close am I to my API limits?" to see current usage against each allowance.

Where to Find Your API Keys

To generate or manage your API keys:

1. Log in to the Velaro Admin panel at admin.velaro.com

2. Click Settings in the left sidebar

3. Under Developer, click API Keys

4. Click + Create API key, give it a name, and select the permissions (scopes) you need

5. Copy the key immediately — it is shown only once and cannot be retrieved later

Each key starts with vlk_ and is 52 characters total.

Authentication

Every API request must include your key in the Authorization header:

Authorization: Bearer vlk_your_api_key_here
Content-Type: application/json

Never include API keys in URLs or query strings — always use the header.

Base URL

All API endpoints are relative to:

Production:

https://api-admin-us-east.velaro.com/api/v1

Staging: https://velaro-admin-staging.azurewebsites.net/api/v1

Rate Limits

Rate limits depend on your plan: each plan includes a per-minute limit per key and a daily call allowance. An admin or billing user can see their exact numbers on Billing.

  • Rate limit headers are returned on every response: X-RateLimit-Remaining, X-RateLimit-Reset
  • When you exceed the limit, you receive 429 Too Many Requests

Available Scopes

Scope What it allows
read:contacts List, look up and read contacts and tags
write:contacts Create and update contacts, tag contacts
read:kb Search and retrieve published Knowledge Base articles
read:conversations List conversations and read one
read:appointments List booked appointments and read one
read:agents List your agents and teams
read:webhooks List your webhook subscriptions
write:webhooks Create and delete webhook subscriptions

Endpoints

All paths are relative to the base URL above.

Method and path Scope Purpose
GET /me read:contacts Check a key: returns your site and scopes
GET /contacts?email=&search=&page=&pageSize= read:contacts List or look up contacts
GET /contacts/{id} read:contacts One contact with its tags
POST /contacts write:contacts Create or update a contact by email, optionally with tags
PATCH /contacts/{id} write:contacts Partially update one contact; only the fields you send change (404 if not found, 409 if the email belongs to another contact)
GET /contacts/tags read:contacts List tags
POST /contacts/tag write:contacts Tag a contact by email or contactId
GET /kb/search?q=&limit= read:kb Search published KB articles
GET /kb/articles/{id} read:kb KB article metadata
GET /conversations?status=&from=&to=&page=&pageSize= read:conversations List conversations
GET /conversations/{id} read:conversations One conversation
GET /appointments?status=&from=&to=&page=&pageSize= read:appointments List booked appointments
GET /appointments/{id} read:appointments One appointment
GET /agents?page=&pageSize= read:agents List agents (name, email, status)
GET /teams read:agents List teams
POST /contacts/{id}/notes write:contacts Add a note to a contact
GET /webhooks read:webhooks List your webhook subscriptions
POST /webhooks write:webhooks Subscribe an https URL to events
DELETE /webhooks/{id} write:webhooks Remove a subscription

Example: Create or Update a Contact

curl -X POST https://api-admin-us-east.velaro.com/api/v1/contacts \
  -H "Authorization: Bearer vlk_your_key" \
  -H "Content-Type: application/json" \
  -d '{"email":"jane@example.com","firstName":"Jane","lastName":"Doe","company":"Acme","tags":["make-lead"]}'

Returns {"id":123,"created":true,"email":"jane@example.com","tags":["make-lead"]}. Fields you leave out are not changed on an existing contact.

Example: Tag a Contact

curl -X POST https://api-admin-us-east.velaro.com/api/v1/contacts/tag \
  -H "Authorization: Bearer vlk_your_key" \
  -H "Content-Type: application/json" \
  -d '{"email":"jane@example.com","tag":"escalation-needed"}'

The tag is created if it does not exist. Tagging triggers any Email Campaign set to start on "Contact tag added".

Example: Search the Knowledge Base

curl "https://api-admin-us-east.velaro.com/api/v1/kb/search?q=password+reset&limit=5" \
  -H "Authorization: Bearer vlk_your_key"

Returns matching articles with id, title, description and url. Link visitors to the article URL.

Use It from Make, Zapier, Power Automate, IFTTT, n8n, Pipedream, Workato or Activepieces

  • Make: HTTP → Make a request. See the Make Integration Guide.
  • Zapier: Webhooks by Zapier → Custom Request, with the same URL, headers and JSON body.
  • Power Automate: HTTP action with the same URL, headers and JSON body.
  • IFTTT: Webhooks, Make a web request, with a JSON body. See the IFTTT Guide.
  • n8n: HTTP Request node with Header Auth. See the n8n Guide.
  • Pipedream: HTTP / Webhook, Send any HTTP Request. See the Pipedream Guide.
  • Workato: HTTP connector, Make request. See the Workato Guide.
  • Activepieces: HTTP piece, Send HTTP request. See the Activepieces Guide.
  • Sending events out of Velaro: in a workflow, add the Make AI, Zapier, Power Automate or HTTP Request node (the HTTP Request node also works with IFTTT, n8n, Pipedream, Workato and Activepieces webhook URLs).

Key Management Best Practices

  • One key per integration — create a separate key for each app or service that uses the API. This makes it easy to revoke access for a single integration without affecting others.
  • Rotate keys regularly — use the Rotate button in Settings → API Keys. The old key is immediately revoked; the new key is shown once.
  • Use read-only scopes by default — only add write:* scopes to keys that actually need to create or modify data.
  • Never commit keys to version control — store them in environment variables or a secrets manager.
  • Monitor your usage — the API Keys page shows monthly usage vs. your plan limit. Set up an alert before you hit the cap.

Revoking a Key

To revoke a key:

1. Go to Settings → API Keys in the admin panel

2. Find the key and click Revoke

3. Confirm — the key stops working immediately

Revoked keys cannot be restored. If you need to replace a key without downtime, use Rotate instead.

Errors

Status Meaning
200 Success
400 Bad request — check the request body
401 Unauthorized — key missing, invalid, or expired
403 Forbidden — key does not have the required scope, or API access is not available on your plan
429 Rate limit exceeded — slow down, or your monthly limit was reached; upgrade your plan for higher limits
500 Server error — try again; contact support if persistent

Webhook Subscriptions

Subscribe an https URL to events and Velaro posts each one to you as it happens. Supported events: contact_tag_added, conversation_started and conversation_closed.

Create a subscription with POST /webhooks and a body such as {"url":"https://example.com/hook","events":["contact_tag_added"]}. The response includes a signing secret that is shown once, so store it right away. Every delivery carries these headers: X-Velaro-Event, X-Velaro-Event-Id (use it to ignore a repeated delivery) and X-Velaro-Signature.

To verify a delivery, read t and v1 from X-Velaro-Signature (format t=<unix seconds>,v1=<hex>), compute HMAC-SHA256 over <t>.<raw body> using your secret, and compare it with v1. Reject anything where t is more than five minutes old. Failed deliveries are retried automatically.

Safe Retries

Send an Idempotency-Key header on POST /webhooks and POST /contacts/{id}/notes. Repeating a request with the same key within 24 hours returns the original result instead of creating a second one.

Webhooks vs. API Polling

If you need real-time notifications (e.g. trigger an external action when a conversation is resolved), use Webhooks instead of polling the API. Go to Settings → Webhooks to configure outbound event notifications.

Need Help?

  • In the admin panel: Ask the Velaro AI assistant (bottom-right chat bubble) — it knows the platform
  • Support: submit a support ticket
  • Higher limits or custom quotas: contact support — we can accommodate high-volume use cases
Share: Email

Was this article helpful?