Skip to main content

API Design

Overview

This document defines the API contract for Vora - authentication requirements and error handling that developers should reference when building integrations.

The Vora API is a REST API that returns JSON. All requests are made over HTTPS.

Content Type

All responses return:

Content-Type: application/json

Request bodies, where applicable should also be sent as JSON with the following header

Content-Type: application/json

Rate Limiting

Rate limits are enforced per API key to protect infrastructure stability and ensure consistent performance across all integrations.

Tier-based rate limits are placeholders pending customer validation. A global rate limit applies to all customers until tiers are finalized. Final limits will be defined in a separate Pricing & Tiers document (not yet published). ::

Current Global Limit

WindowLimit
Per minuteTBD
Per dayTBD

Planned Tier Limits

TierPer MinutePer Day
StarterTBDTBD
ProTBDTBD
EnterpriseCustomCustom

Response Headers

Every API response includes the following headers so your integration can monitor usage

HeaderDescription
X-RateLimit-LimitYour total allowed request for the current window
X-RateLimit-RemainingRequests remaining in the current window
X-RateLimit-ResetUnix timestamp when the current window resets

When the Limit is Exceeded

If you exceed your rate limit, the API returns the below response

429 Too Many Requests

Pause requests until the time indicated in the below header before retrying

X-RateLimit-Reset

Error Codes

All errors follow a consistent response shape regardless of the endpoint or error type

Error Response Schema

{
"error": {
"code": "rate_limit_exceeded",
"message": "You have exceeded your rate limit. Please retry after 1714480800.",
"details": {}
}
}
FieldTypeDescription
codestringMachine-readable error code
messagestringHuman-readable description of the error
detailsobjectAdditional context where applicable, otherwise empty

HTTP Status Codes

StatusCodeDescription
400bad_requestMissing or invalid query parameters
401unauthorizedAPI key is missing or invalid
403forbiddenAPI key does not have access to this resource
404not_foundThe requested record does not exist
429rate_limit_exceededRate limit reached for current window
500internal_server_errorSomething went wrong on Vora's end

Pagination

All list endpoints return paginated results. Vora uses offset-based pagination.

Request Parameters

ParameterTypeRequiredDefaultDescription
limitintegerNo20Number of records to return. Maximum 100.
offsetintegerNo0Number of records to skip before returning results

Example Request

GET /v1/enforcement?limit=20&offset=40
Authorization: Bearer vora_live_xxxxxxxxxxxx

Response Envelope

{
"data": [],
"pagination": {
"total": 843,
"limit": 20,
"offset": 40,
"has_more": true
}
}
FieldTypeDescription
dataarrayThe list of records for the current page
totalintegerTotal number of matching records
limitintegerThe limit applied to this request
offsetintegerThe offset applied to this request
has_morebooleanWhether additional records exist beyond this page

Filtering & Sorting

Parameters listed here apply globally - individual endpoint definitions in the Vora Swagger documentation note which filters are available per endpoint.

Date Range Filtering

ParameterTypeDescription
date_fromISO 8601 dateReturn records on or after this date
date_toISO 8601 dateReturn records on or before this date

Example

GET /v1/enforcement?date_from=2024-01-01&date_to=2024-12-31
ParameterTypeDescription
querystringSearch by entity name. Partial matches supported

Example

GET /v1/enforcement?query=acme+bank

Enum Filtering

Enum filters accept a single value or a comma-separated list of values

Example

GET /v1/enforcement?source=cfpb,occ

Sorting

ParameterTypeDefaultDescription
sort_bystringaction_dateField to sort by
sort_orderenumdescSort direction. Accepts asc or desc

Example

GET /v1/enforcement?sort_by=action_date&sort_order=asc

Combining Filters

All filters can be combined in a single request

Example

GET /v1/enforcement?query=acme+bank&source=cfpb,occ&date_from=2024-01-01&sort_order=asc

Versioning

The API version is included in the base URL. This ensures breaking changes never affect existing integrations without notice

Breaking vs Non-Breaking Changes

Non-breaking changes may be added to any version at any time without notice. These include:

  • New optional query parameters
  • New fields added to existing response schemas
  • New endpoints
  • New enum values

Breaking changes will always be released as a new version with a deprecation notice and migration guide before the previous version is sunset. These include:

  • Removed or renamed fields
  • Changed response shapes
  • Modified authentication behavior
  • Removed endpoints
V1 - Current
StatusACTIVE
Released2026
Base URLhttps://api.withvora.com/v1

What's Included in V1

  • Enforcement action search and lookup (/v1/enforcement, /v1/enforcement/:id)
  • License record search and lookup (/v1/licenses, /v1/licenses/:id)
  • Data source listing (/v1/sources)
  • Health check (/v1/health)
  • API key authentication

Authentication

Vora uses API key authentication. Every request must include a valid API key passed as a Bearer token in the Authorization header

API Key Format

vora_live_xxxxxxxxxxxxxxxxxxxx

Keys prefixed with vora_live_ are production keys. When we introduce a sandbox environment, test keys will use the vora_test_ prefix.

Passing Your API Key

GET /v1/enforcement
Authorization: Bearer vora_live_xxxxxxxxxxxxxxxxxxxx

Key Management

API Keys are generated and managed from the Vora dashboard. You can create, rotate, and revoke keys at any time. Rotating a key immediately invalidates the previous one.

Security

  • Never expose your API key in client-side code or public repositories
  • Rotate your key immediately if you believe it has been compromised
  • Each key is tied to your account and all usage is logged against it.

Authentication Errors

StatusCodeDescription
401unauthorizedAPI Key is missing or invalid
403forbiddenAPI Key is valid but does not have access to this resource
info

For full endpoint definitions, request and response schemas, and interactive examples see Vora Swagger documentation.