API Reference

API Overview

Integrate Keva into your applications with our REST API

The current Keva public API is a RESTful interface for ticket and message operations. Approvals, knowledge base, customers, workflows, and webhook management are not exposed through API-key-authenticated /api/v1 routes.

Base URL

All API requests should be made to:

https://app.keva.support/api/v1

Authentication

The API uses Bearer token authentication. Include your API key in the Authorization header:

curl https://app.keva.support/api/v1/tickets \
  -H "Authorization: Bearer keva_live_your_api_key"

API keys are prefixed with keva_live_ to identify them. Generate keys in Settings > API Keys.

Request Format

  • All requests must use HTTPS
  • Request bodies should be JSON with Content-Type: application/json
  • Query parameters are used for filtering and pagination

Response Format

Ticket and message responses return JSON with a data field. List responses also include pagination metadata:

{
  "data": { ... },
  "pagination": {
    "page": 1,
    "perPage": 20,
    "total": 150
  }
}

Error responses include an error field:

{
  "error": "Invalid API key"
}

The public health response is a direct status object rather than a data envelope. It is a liveness-only check and does not prove DB/Redis readiness. Unexpected platform failures are not guaranteed to use the route-level JSON error shape.

Rate Limiting

Shaped API-key ticket and message requests use a strict 300 requests per minute bucket per forwarded source before the raw key is hashed or the database is read, then a strict 100 requests per minute bucket per full-key hash before database lookup. Missing or unavailable Redis returns 503; an exhausted bucket returns 429 Too Many Requests. These responses do not currently include Retry-After. The public health route is outside these buckets, and forwarded-source trust, configured Redis behavior, deployed enforcement, edge protection, and universal coverage remain unproven.

Pagination

List endpoints support pagination with these query parameters:

ParameterDefaultMaxDescription
page1-Positive integer page number
per_page20100Positive integer items per page

Available Endpoints

ResourceDescription
Health (GET /health)Check public API liveness
TicketsCreate and manage support tickets

Scopes

API keys can be limited to specific scopes:

ScopeDescription
tickets:readRead ticket data
tickets:writeCreate tickets and update status, priority, and assignment

SDKs

Official SDKs are coming soon. In the meantime, use any HTTP client library.

Need Help?