/api/v1/.
Base URL
Endpoint groups
Authentication
API keys, RBAC, brute-force protection
Health
Service status and dependency checks
Keys
FHE key generation, upload, deletion
TFHE
Boolean gate evaluation (NAND, AND, OR, XOR, MUX)
Compute
CKKS arithmetic (add, multiply, matmul, bootstrap)
Webhooks
Async event delivery with HMAC signing
Billing
Subscriptions, invoices, budget caps
Conventions
Authentication
Every request needs a Bearer token:GET /api/v1/health— public liveness probeGET /api/v1/models— list of available FHE-LLM modelsGET /api/v1/tfhe/pricing— gate pricing tablePOST /api/v1/onboarding/temp-key— issue trial keyPOST /api/v1/billing/stripe_webhook— signature-verified Stripe events
Content type
Request and response bodies are JSON unless noted. Empty bodies return either204 No Content or 429 Too Many Requests.
HTTP verbs
| Verb | Used for |
|---|---|
GET | Fetch resources, list endpoints |
POST | Create resources, run computations |
PATCH | Partial update (e.g. webhook URL) |
DELETE | Remove resources |
PUT is intentionally not used — all updates are PATCH.
Status codes
| Code | Meaning |
|---|---|
200 | OK |
201 | Created |
204 | No Content |
400 | Bad Request — schema or validation failure |
401 | Unauthorized — missing/invalid auth |
402 | Payment Required — quota exhausted, no overage allowed |
403 | Forbidden — auth valid, role insufficient |
404 | Not Found |
409 | Conflict |
413 | Payload Too Large (>40 MB eval keys, >2 MB ciphertexts) |
422 | Unprocessable Entity — JSON schema mismatch |
429 | Too Many Requests — rate limit |
500 | Internal Server Error |
502 | Bad Gateway — upstream (Stripe/Redis) unavailable |
503 | Service Unavailable — maintenance |
Error shape
request_id is the single most useful thing to include in support tickets.
Pagination
List endpoints use cursor pagination:limit ranges 1–100 (default 20). The cursor is opaque base64 — pass it
as-is to fetch the next page.
Idempotency
For mutating endpoints (POST/PATCH), include anIdempotency-Key header
to safely retry:
Rate limit headers
Every response includes:429):
Versioning
WAVIS follows semver on the path. Breaking changes go into/api/v2/.
Within v1, we guarantee:
- ✅ New endpoints may be added
- ✅ New optional response fields may be added
- ✅ New optional request fields may be added
- ❌ Existing fields will not be renamed or removed
- ❌ Existing required fields will not become optional
- ❌ HTTP status codes for existing error conditions will not change
/api/v2/ and run both for
at least 12 months.
OpenAPI spec
openapi-generator:
SLA & uptime
| Tier | Uptime SLA |
|---|---|
| Free / PAYG | Best effort |
| Starter / Pro | Best effort |
| Scale | 99.9% (max 8.7 h downtime/month) |
| Enterprise | Custom (typically 99.95%+) |
Support
- Docs / community: docs.wavis.xyz, GitHub Discussions
- Email: support@wavis.xyz
- Security: security@wavis.xyz (PGP on request)
- Enterprise: legal@wavis.xyz