API Documentation

Integrate Voicory's call logs, customer data, and WhatsApp messages into your CRM, analytics platform, or custom application.

Call Logs

Access call history, transcripts, recordings, and cost data

Customers

Pull customer profiles with interaction history

Messages

Retrieve WhatsApp conversations and message status

Base URL: https://voicory-backend-783942490798.asia-south1.run.app/api/v1

Authentication

All API requests require an API key passed in the x-api-key header.

You can generate API keys from the Voicory Dashboard → Settings → API Keys.

PUBLICpk_...

Read-only access. Safe for client-side widgets and integrations.

PRIVATEsk_...

Full access. Keep server-side only — never expose in frontend code.

bash
curl -s "https://voicory-backend-783942490798.asia-south1.run.app/api/v1/calls" \
  -H "x-api-key: YOUR_API_KEY"

Rate Limits

API requests are rate-limited per API key to ensure fair usage and platform stability.

LimitWindowDescription
60 requests1 minuteSliding window per API key
10 requests5 secondsBurst protection

Response Headers

X-RateLimit-Limit

Max requests per window

X-RateLimit-Remaining

Requests left in window

X-RateLimit-Reset

Unix timestamp when window resets

http
HTTP/1.1 429 Too Many Requests
Retry-After: 45
Content-Type: application/json

{
  "error": {
    "code": "RATE_LIMIT_EXCEEDED",
    "message": "Rate limit exceeded. Maximum 60 requests per minute.",
    "retry_after": 45
  }
}

Pagination

All list endpoints return paginated results. Use page and limit query parameters.

ParameterDefaultRange
page11 – ∞
limit251 – 100
json
// meta object in every list response
{
  "page": 2,
  "limit": 25,
  "total": 142,
  "total_pages": 6,
  "has_more": true
}

Error Handling

All errors return a consistent JSON structure with an error object.

StatusCodeMeaning
400INVALID_ID / INVALID_FILTERBad request — invalid UUID or filter format
401MISSING_API_KEYNo x-api-key header provided
401INVALID_API_KEYAPI key not found or wrong
401REVOKED_API_KEYAPI key has been revoked
404NOT_FOUNDResource not found
429RATE_LIMIT_EXCEEDEDToo many requests
500INTERNAL_ERRORServer error — contact support
json
{
  "error": {
    "code": "INVALID_API_KEY",
    "message": "Invalid API key"
  }
}

Call Logs

Access your voice call history including transcripts, summaries, recordings, and cost breakdowns.

Customers

Pull customer profiles from Voicory's built-in CRM. Each customer detail includes recent calls and WhatsApp messages.

WhatsApp Messages

Retrieve WhatsApp messages sent and received through your Voicory-connected WhatsApp Business numbers.

Security

Tenant Isolation

All data is scoped to your API key. You can never access another account's data.

Input Sanitization

All query parameters are sanitized and validated before reaching the database.

Redis Rate Limiting

Per-key sliding window rate limits backed by Redis — no in-memory cheating.

UUID Validation

All ID parameters are validated as proper UUIDs — no SQL injection vectors.

Request Logging

Every API request is logged with key, path, status, duration, and IP.

Security Headers

X-Content-Type-Options, X-Frame-Options, Cache-Control on all responses.

No Internal Fields

Internal fields like user_id, config_id, secrets are never exposed in responses.

Key Revocation

Revoked keys are immediately rejected — no grace period.

Ready to integrate?

Generate your API key from the Voicory dashboard and start pulling data in minutes.

Go to Dashboard