REST endpoints for tickets, time entries, retainers, invoices, and webhooks. Available on Solo tier and above. Full reference page below; complete docs in progress.
Two key types per workspace. Server keys (prefixed kl_live_*) authenticate backend requests. Public keys (kl_pub_*) authenticate the embedded widget — origin-locked, no secrets in browsers.
curl -X POST https://api.klientele.io/v1/tickets \
-H "X-API-Key: kl_live_••••••••" \
-H "Content-Type: application/json" \
-d '{
"title": "Login fails on mobile",
"description": "Reproducible on iOS Safari 17",
"severity": "high",
"customer_email": "[email protected]"
}'<script
src="https://klientele.io/widget/v1/klientele.js"
data-key="kl_pub_••••••••"
defer
></script>The endpoints below are stable. Full request/response schemas are being published endpoint-by-endpoint; for the complete spec today, ask sales for access to the private OpenAPI document.
| Method | Path | Purpose |
|---|---|---|
| POST | /api/public/v1/tickets | Create a ticket |
| GET | /api/public/v1/tickets/:id | Retrieve a ticket |
| PATCH | /api/public/v1/tickets/:id | Update a ticket |
| GET | /api/public/v1/tickets | List tickets (paginated) |
| POST | /api/public/v1/widget/tickets | Widget intake (public key) |
More endpoints (time entries, retainers, invoices, webhooks) ship as their documentation stabilises. Email sales for the private OpenAPI spec.
Per-key rate limits apply. Standard tier: 120 requests per minute on server keys, 30 requests per minute per origin on widget keys. Limits reset every 60 seconds.
When you exceed the limit, you receive a 429 Too Many Requests response with a Retry-After header. Sustained higher throughput needs are handled under bespoke contracts.
Start a trial. Generate an API key in workspace settings. Ship in minutes.