| Key | Role |
|---|---|
| Kasva API key | Auth to our gateway (Authorization: Bearer …) |
| Provider keys (Groq / DeepSeek / Gemini / OpenAI / Anthropic / xAI / fal.ai) | Paid by you; used for upstream inference |
Without provider BYOK, chat runs on Kasva hosted open models when the operator DigitalOcean key is set. Operator Groq/Gemini/DeepSeek env secrets are not used on public routes. Cloudflare Workers AI is not a public route.
Register once, then Cursor only needs the Kasva key.
curl -X POST https://kasva.dev/v1/byok/keys \
-H "Authorization: Bearer YOUR_KASVA_KEY" \
-H "Content-Type: application/json" \
-d '{"groq":"gsk_...","deepseek":"sk_...","gemini":"AIza...","openai":"sk-...","xai":"xai-...","fal":"..."}'
Partial update is fine — omit a field to leave it unchanged. Send "" to delete that provider.
curl https://kasva.dev/v1/byok/keys \
-H "Authorization: Bearer YOUR_KASVA_KEY"
{
"object": "byok.keys",
"configured": { "groq": true, "deepseek": false, "gemini": true, "openai": false, "anthropic": false, "xai": false, "fal": false }
}
YOUR_KASVA_KEYhttps://kasva.dev/v1kasva/auto or kasva/code (not Cursor’s built-in Auto)curl https://kasva.dev/v1/chat/completions \
-H "Authorization: Bearer YOUR_KASVA_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"kasva/auto","messages":[{"role":"user","content":"Hello"}]}'
Register provider keys with POST /v1/byok/keys. Per-request X-Kasva-*-Key headers are not accepted.
GET /v1/models shows byok/<provider>/… only when that provider key is configured on your account.
POST /v1/byok/keys)When an upstream returns 401 / 402 / 403 / 429 / 503, Kasva walks the user’s remaining BYOK providers, then Kasva hosted:
Order: Groq → Gemini → DeepSeek → Kasva hosted
Already-tried providers are skipped. Response kasva.route_reason shows hops, e.g. groq 429, free-route → byok/gemini/2.5-flash.
Proactive KV rate counters (B-026) are still separate; this is reactive failover.
Same Base URL + Kasva key. Prefer KV registration so you do not put provider keys in client config.
node_modulestool_calls/v1/byok/keys never returns secret valuesbyok:{sha256(api_key)} → JSON keysPOST with a new key, or "" to clear| Key | Role |
|---|---|
| Kasva API key | Auth to our gateway (Authorization: Bearer …) |
| Provider keys (Groq / DeepSeek / Gemini / OpenAI / Anthropic / xAI / fal.ai) | Paid by you; used for upstream inference |
Without provider BYOK, chat runs on Kasva hosted open models when the operator DigitalOcean key is set. Operator Groq/Gemini/DeepSeek env secrets are not used on public routes. Cloudflare Workers AI is not a public route.
Register once, then Cursor only needs the Kasva key.
curl -X POST https://kasva.dev/v1/byok/keys \
-H "Authorization: Bearer YOUR_KASVA_KEY" \
-H "Content-Type: application/json" \
-d '{"groq":"gsk_...","deepseek":"sk_...","gemini":"AIza...","openai":"sk-...","xai":"xai-...","fal":"..."}'
Partial update is fine — omit a field to leave it unchanged. Send "" to delete that provider.
curl https://kasva.dev/v1/byok/keys \
-H "Authorization: Bearer YOUR_KASVA_KEY"
{
"object": "byok.keys",
"configured": { "groq": true, "deepseek": false, "gemini": true, "openai": false, "anthropic": false, "xai": false, "fal": false }
}
YOUR_KASVA_KEYhttps://kasva.dev/v1kasva/auto or kasva/code (not Cursor’s built-in Auto)curl https://kasva.dev/v1/chat/completions \
-H "Authorization: Bearer YOUR_KASVA_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"kasva/auto","messages":[{"role":"user","content":"Hello"}]}'
Register provider keys with POST /v1/byok/keys. Per-request X-Kasva-*-Key headers are not accepted.
GET /v1/models shows byok/<provider>/… only when that provider key is configured on your account.
POST /v1/byok/keys)When an upstream returns 401 / 402 / 403 / 429 / 503, Kasva walks the user’s remaining BYOK providers, then Kasva hosted:
Order: Groq → Gemini → DeepSeek → Kasva hosted
Already-tried providers are skipped. Response kasva.route_reason shows hops, e.g. groq 429, free-route → byok/gemini/2.5-flash.
Proactive KV rate counters (B-026) are still separate; this is reactive failover.
Same Base URL + Kasva key. Prefer KV registration so you do not put provider keys in client config.
node_modulestool_calls/v1/byok/keys never returns secret valuesbyok:{sha256(api_key)} → JSON keysPOST with a new key, or "" to clear| Anahtar | Rol |
|---|---|
| Kasva API anahtarı | Ağ geçidine kimlik (Authorization: Bearer …) |
| Sağlayıcı anahtarları (Groq / DeepSeek / Gemini / OpenAI / Anthropic / xAI / fal.ai) | Sen ödersin; yukarı çıkarım için kullanılır |
Sağlayıcı BYOK yoksa, operatör DigitalOcean anahtarı varsa sohbet Kasva barındırılan açık modellerde çalışır. Operatör Groq/Gemini/DeepSeek env sırları kamu yollarında kullanılmaz. Cloudflare Workers AI kamu yolu değildir.
Bir kez kaydet, sonra Cursor yalnızca Kasva anahtarını ister.
curl -X POST https://kasva.dev/v1/byok/keys \
-H "Authorization: Bearer YOUR_KASVA_KEY" \
-H "Content-Type: application/json" \
-d '{"groq":"gsk_...","deepseek":"sk_...","gemini":"AIza...","openai":"sk-...","xai":"xai-...","fal":"..."}'
Kısmi güncelleme olur — bir alanı atlamak onu olduğu gibi bırakır. O sağlayıcıyı silmek için "" gönder.
curl https://kasva.dev/v1/byok/keys \
-H "Authorization: Bearer YOUR_KASVA_KEY"
{
"object": "byok.keys",
"configured": { "groq": true, "deepseek": false, "gemini": true, "openai": false, "anthropic": false, "xai": false, "fal": false }
}
YOUR_KASVA_KEYhttps://kasva.dev/v1kasva/auto veya kasva/code (Cursor’ın yerleşik Auto’su değil)tool_calls dönen modeller istercurl https://kasva.dev/v1/chat/completions \
-H "Authorization: Bearer YOUR_KASVA_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"kasva/auto","messages":[{"role":"user","content":"Hello"}]}'
Sağlayıcı anahtarlarını POST /v1/byok/keys ile kaydet. İstek başına X-Kasva-*-Key başlıkları kabul edilmez.
GET /v1/models byok/<provider>/… yalnızca o sağlayıcı anahtarı hesabında yapılandırıldığında gösterir.
POST /v1/byok/keys)Yukarı 401 / 402 / 403 / 429 / 503 dönerse Kasva kullanıcının kalan BYOK sağlayıcılarını, sonra Kasva barındırılanı dolaşır:
Sıra: Groq → Gemini → DeepSeek → Kasva barındırılan
Denenmiş sağlayıcılar atlanır. Yanıt lumirouter.route_reason atlamaları gösterir, ör. groq 429, free-route → byok/gemini/2.5-flash.
Proaktif KV hız sayaçları (B-026) ayrıdır; bu tepkisel failover’dır.
Aynı Base URL + Kasva anahtarı. İstemci yapılandırmasına sağlayıcı anahtarı koymamak için KV kaydını tercih et.
node_modules taramaya başlarsa Auto-approve Read’i kapattool_calls dönen modellerle kullan/v1/byok/keys asla sır değer döndürmezbyok:{sha256(api_key)} → JSON anahtarları saklarPOST, veya temizlemek için ""Images are on a separate page.