Skip to main content

Zennvue API

Read-only REST API for accessing your organization’s clients, events, proposals, contracts, and invoices.

v1Base URL: https://platform-zennvue.com/api/v1

Plan requirement

API access is available on the Studioplan and above. If your plan doesn’t include API access, requests will return 403 tier_required.

Authentication

Every request needs an API key in the Authorization header:

Authorization: Bearer znv_live_a1b2c3d4...

Issue keys from your dashboard at Settings → API Keys. Keys are shown once at creation. Store them somewhere safe. To revoke a key, click the trash icon on its row in the same settings panel.

Quick example

curl https://platform-zennvue.com/api/v1/clients \
  -H "Authorization: Bearer znv_live_..." \
  -H "Accept: application/json"

Returns JSON in the shape { data: Client[], pagination: { page, pageSize, total, totalPages } }.

Endpoints

MethodPathDescription
GET/clientsList clients, paginated. Filter by status, tag, or search.
GET/eventsList events, paginated. Filter by status, date range, client.
GET/proposalsList proposals, paginated. Filter by status or client.
GET/contractsList contracts, paginated. Filter by status or client.
GET/invoicesList invoices, paginated. Filter by status or client.

Pagination

All list endpoints accept ?page=1 (1-indexed) and ?pageSize=50 (clamped to [1, 200]). The response envelope always includes a pagination object with { page, pageSize, total, totalPages }.

Rate limits

Each API key is limited to 1,000 requests per hour. The current limit and remaining requests are returned on every response in the X-RateLimit-Limit and X-RateLimit-Remaining headers. Exceeding the limit returns 429 with a Retry-After header telling you how long to wait.

Errors

Errors come back as JSON with a stable error.code:

OpenAPI spec

Drop this into Postman, Insomnia, or Stainless for an auto-generated client:

/api/v1/openapi.json