Skip to main content
The health endpoint reports overall service status, FHE engine info, and the status of upstream dependencies (Redis, PostgreSQL, Stripe).

GET /api/v1/health

Public liveness probe. No authentication required. Both GET and HEAD are supported (HEAD for monitoring tools that default to it, like Uptime Robot).

Request

GET /api/v1/health

Response — 200 OK

{
  "status": "healthy",
  "version": "0.2.0",
  "uptime_seconds": 12345.6,
  "fhe_engine": "RNS-CKKS (WAVIS v24 — SECURE presets)",
  "gpu_available": false,
  "gpu_name": null,
  "active_sessions": 42,
  "active_jobs": 7,
  "ciphertext_cache_usage_pct": 65.3,
  "ciphertext_cache_warning": false,
  "dependencies": [
    {
      "name": "redis",
      "status": "healthy",
      "latency_ms": 2.5,
      "error": null
    },
    {
      "name": "postgres",
      "status": "healthy",
      "latency_ms": 3.1,
      "error": null
    },
    {
      "name": "stripe",
      "status": "healthy",
      "latency_ms": 45.2,
      "error": null
    }
  ]
}

Field reference

FieldTypeDescription
statusstring"healthy", "degraded", or "unavailable"
versionstringSemantic version of the API
uptime_secondsfloatSeconds since process start
fhe_enginestringEngine name and parameter regime
gpu_availableboolServer-side GPU presence (cloud API: always false)
gpu_namestring | nullGPU model name when present
active_sessionsintCurrent TFHE sessions
active_jobsintCurrent async compute jobs
ciphertext_cache_usage_pctfloat | nullLRU cache fill ratio
ciphertext_cache_warningbooltrue if cache eviction is imminent
dependenciesarrayPer-dependency status

Dependency status

FieldTypeDescription
namestring"redis", "postgres", "stripe"
statusstring"healthy", "degraded", "unavailable"
latency_msfloat | nullProbe round-trip time
errorstring | nullShort error message if unavailable
A dependency probe times out at 2 seconds. degraded means the dependency responded but slower than the threshold (1 s for Redis, 500 ms for Postgres).

Response — 503 Service Unavailable

When at least one critical dependency is unavailable:
{
  "status": "unavailable",
  "version": "0.2.0",
  "dependencies": [
    {
      "name": "redis",
      "status": "unavailable",
      "latency_ms": null,
      "error": "Connection refused"
    }
  ]
}
The endpoint still returns JSON (not a bare error) so monitoring tools can parse the dependency state.

GET /api/v1/models

List available FHE-LLM inference models. Public, no auth required.

Request

GET /api/v1/models

Response — 200 OK

{
  "models": [
    {
      "model_id": "fhe-bert-tiny",
      "name": "FHE-BERT Tiny",
      "params_billions": 0.04,
      "fhe_optimized": true,
      "available": true,
      "estimated_inference_time_ms": 12000
    },
    {
      "model_id": "fhe-llama-7b",
      "name": "FHE-Llama 7B",
      "params_billions": 7.0,
      "fhe_optimized": true,
      "available": false,
      "estimated_inference_time_ms": 480000
    }
  ]
}
available: false means the model exists but isn’t currently loaded — it will be lazy-loaded on first inference (expect ~30 s extra latency).

GET /api/v1/tfhe/pricing

Public. Returns the TFHE gate pricing table.

Request

GET /api/v1/tfhe/pricing

Response — 200 OK

{
  "currency": "JPY",
  "rates": {
    "NAND": { "bootstrapping_ops": 1, "cost_jpy": 0.10 },
    "AND":  { "bootstrapping_ops": 1, "cost_jpy": 0.10 },
    "OR":   { "bootstrapping_ops": 1, "cost_jpy": 0.10 },
    "XOR":  { "bootstrapping_ops": 4, "cost_jpy": 0.40 },
    "NOT":  { "bootstrapping_ops": 0, "cost_jpy": 0.00 },
    "MUX":  { "bootstrapping_ops": 3, "cost_jpy": 0.30 }
  },
  "batch_discount": {
    "threshold_ops": 32,
    "discount_pct": 30,
    "effective_rate_jpy": 0.07
  }
}

Monitoring integrations

Uptime Robot

Use HTTP keyword monitor (free plan uses HEAD by default — both work):
  • URL: https://api.wavis.xyz/api/v1/health
  • Keyword: "status":"healthy"
  • Interval: 5 minutes

Pingdom / DataDog Synthetics

type: http
url: https://api.wavis.xyz/api/v1/health
method: GET
expected_status: 200
expected_body_substring: '"status":"healthy"'
expected_response_time_ms: 1000

Kubernetes liveness probe

livenessProbe:
  httpGet:
    path: /api/v1/health
    port: 8080
  initialDelaySeconds: 60
  periodSeconds: 30
  timeoutSeconds: 10
  failureThreshold: 3

Reading the JSON in shell

curl -s https://api.wavis.xyz/api/v1/health \
  | jq -r 'if .status == "healthy" then "OK" else "FAIL: " + .status end'

Next Steps

Status page

Public uptime history

Billing API

Quota and budget endpoints