Documentation

WebikAI exposes one OpenAI-compatible endpoint that reaches every catalog model — Anthropic's included. Point any compatible client at it and switch the model to a WebikAI alias.

Quickstart

  1. Create an account and complete the three-question onboarding.
  2. Copy your wk_live_… key (shown once).
  3. Set the base URL and model alias in your tool.

Use it from your tools

json
{
  "openai": {
    "baseURL": "https://gateway.webik.ai/v1",
    "apiKey": "wk_live_...",
    "model": "auto/code"
  }
}

Step-by-step setup per tool:

  • Cline — OpenAI Compatible provider settings
  • Cursor — custom model + base-URL override
  • OpenCode — provider block in opencode.json
  • aider — two environment variables
  • Claude Code — the honest answer (no native Anthropic-API surface yet)

Model aliases

Smart router passthrough when your policy allows it
Explicit smart-router lane; the response body names the model it picked
Coding route ranked under your policy
Premium frontier route under your policy
Aggressively minimize cost
Multimodal — image or document input
Balanced general-purpose chat
Pin an exact model (OpenRouter-style slug)
Pin a premium frontier model
Pin a commodity high-throughput model

Route explanations

Every response carries five x-webik-* headers: x-webik-request-id, x-webik-model (what actually served it), x-webik-provider, x-webik-credential (byok/managed), and x-webik-fallback. The dashboard shows the same per request, with the routing reason and estimated vs. actual cost.

bash
curl -si https://gateway.webik.ai/v1/chat/completions \
  -H "Authorization: Bearer wk_live_..." -H "Content-Type: application/json" \
  -d '{"model":"auto/code","messages":[{"role":"user","content":"hi"}]}' | grep x-webik
x-webik-request-id: 0193e5c2-…
x-webik-model: z-ai/glm-5.2
x-webik-provider: zai
x-webik-credential: managed
x-webik-fallback: false

Data handling

Default logging is metadata-only: model, provider, tokens, latency, cost, success — not prompt/response bodies. BYOK provider keys are stored envelope-encrypted and decrypted only in memory at request time; they never appear in logs. What leaves WebikAI is exactly your request to the provider you (or your policy) chose — check each provider's own retention terms, which we surface as the endpoint's data-policy flag; endpoints with unknown policy never satisfy a zero-retention requirement.

Billing mechanics

Wallet requests reserve the worst-case cost first (your max_tokens bounds it — we set a default if you don't), call the provider, then settle to actual usage and refund the difference. Missing usage on a stream settles the estimate, flagged estimated. Per-key/client/project caps deny before forwarding — two concurrent requests cannot jointly exceed a cap. Client retries with an Idempotency-Key header are served once and charged once.

Provider quality methodology (beta)

Two sources: deterministic probe suites run daily at temperature 0 and scored pass/fail, plus rolling error rates and latency from real traffic through the gateway. Scores are published with sample sizes and confidence intervals, and a provider whose scores regress against its own trailing history is ranked lower automatically. Current public suites: JSON, schema, math, tool-formation, deterministic coding, and legitimate-task completion. Sample sizes are shown next to every score. Full methodology, detection limits, and live scores are on the benchmarks page.

Public JSON API

Everything the benchmarks and catalog pages render is also published as JSON — no auth, no key. Free for dashboards, bots, and research; attribute webik.ai.

  • GET /api/public/benchmarks — per-model provider scores: models[].providers[] with n, insufficient_data, webik_pick, live latency_p50_ms/error_rate/throughput_tps, last_event, and (at sufficient samples) Wilson-interval overall and per-lane scores; plus min_n.
  • GET /api/public/benchmarks/events?limit= — the change log: events[] with model, provider, kind (regression/recovery), delta_pp, n, summary, occurred_at. limit 1–200, default 50.
  • GET /api/public/benchmarks/leaders — current route leaders: leaders[] per lane with alias, model, provider, quality_low, n, price_out_per_mtok, since; plus value_leader and min_n.
  • GET /api/public/catalog — the model catalog: models[] with class, context length, capability flags, provider count, and beta quality score; plus aliases[] with default profiles.
bash
curl -s https://webik.ai/api/public/benchmarks/leaders | jq '.leaders[0]'

Responses are cached (cache-control: public, s-maxage=600, max-age=60), so polling faster than the cache window just returns the same data. Providers below min_n pooled samples publish insufficient_data: true instead of a score — we don't publish numbers we can't stand behind.