developer docs
Build with Skena AI.
Skena's own models behind a plain HTTPS API, and every key you make calls both. Klok is a reasoning model with an OpenAI-compatible chat API. Kvick answers yes or no, multiple choice and ratings about any text or JSON, each with a probability.
Models
Base URL
https://api.skena.ai
Both APIs share one base, https://api.skena.ai, and every path starts with /v1. OpenAI's SDKs take https://api.skena.ai/v1 as their base URL; Jev clients take https://api.skena.ai.
- Endpoint
POST /v1/chat/completions- What
- Klok: OpenAI-compatible chat
- Refusals
skena_inference_error
- Endpoint
POST /v1/systemone- What
- Kvick: Jev-compatible decisions
- Refusals
skena_labs_error
- Endpoint
GET /v1/models- What
- Every model your key can call, in OpenAI's shape and the Jev API's
- Refusals
skena_inference_error
| Endpoint | What | Refusals |
|---|---|---|
POST /v1/chat/completions | Klok: OpenAI-compatible chat | skena_inference_error |
POST /v1/systemone | Kvick: Jev-compatible decisions | skena_labs_error |
GET /v1/models | Every model your key can call, in OpenAI's shape and the Jev API's | skena_inference_error |
Any other path or method on the base answers 404, in an envelope of its own:
{
"error": {
"message": "unknown-endpoint",
"type": "skena_api_error",
"code": "unknown-endpoint"
}
}Earlier per-product addresses on app.skena.ai keep working; new code should use this base.
Get an API key
- 01Create a Skena account, or sign in, and verify your email.
- 02On your dashboard's API key page, make a key and give it a name. Copy it then: it is shown once.
- 03Call Klok or Kvick with it. Every call is paid from your Skena AI credit.
- Make one key per app or server, so you can revoke one without touching the others. An account holds up to 25 keys, each with a name of up to 64 characters; the key you had before names is listed as "Default".
- Every key starts with
skl_(47 characters) and calls both APIs. A key is shown once, when you make it: Skena keeps only its hash and its last 4 characters, so a lost key cannot be shown again. Make a new one and revoke the old. - Revoke a key on the same page and it stops working at once. All of an account's keys share its credit and its limits, and Skena checks the key and your credit on every call, so spent credit takes effect on the next request.
Authenticate
Send your key on every request as Authorization: Bearer <key>, with Bearer spelled just so. The API takes Skena API keys only: a device key from Skena Builder or Skena Servant is refused with a 401.
POST https://api.skena.ai/v1/chat/completions
Authorization: Bearer skl_…
Content-Type: application/jsonPOST https://api.skena.ai/v1/systemone
Authorization: Bearer skl_…
Content-Type: application/jsonKeep keys on your server or in your own tools, never in a web page or an app you hand out: anyone holding one spends your account's credit. If a key leaks, revoke it.
Credit and prices
Plans cover the products. Credit pays for the API.
A Skena AI subscription, a company seat or early access granted by Skena covers Skena's own products: Skena Builder, Skena Servant and the Skena Agent Harness, each with its own device key.
Every call with your API key is paid from Skena AI credit, whatever plan the account has. Without credit, a call is refused before it runs and costs nothing.
Credit is priced per token, per model:
- Model
- Klok (
klok-1) - Input
- $0.40 per million
- Output
- $4.00 per million
- Notes
- Text and images. Cached input is charged in full.
- Model
- Kvick (
kvick-1) - Input
- $0.10 per million
- Output
- Free
- Notes
- Text. Images from Kvick's next release, per image token at this price times the image weight (today 440%).
| Model | Input | Output | Notes |
|---|---|---|---|
Klok (klok-1) | $0.40 per million | $4.00 per million | Text and images. Cached input is charged in full. |
Kvick (kvick-1) | $0.10 per million | Free | Text. Images from Kvick's next release, per image token at this price times the image weight (today 440%). |
Klok sets a hold aside before each call: the whole context as input plus max_tokens as output, $0.233 at the default. Only what the call used is charged. Kvick prices the call before it runs and charges its input.
Skena AI credit is one balance: the welcome gift and credit from Skena. Your balance, what it is made of and when each part expires are on the dashboard's Skena AI page.
The welcome gift pays for API calls once Skena Builder or Skena Servant, signed in to your account on a computer, has activated it. Until then a call answers 403 ai-credit-activation-required.
The welcome gift's daily limits on Kvick reset at 00:00 UTC.
Errors
When Skena Cloud refuses a call (a key, credit, a limit), the body is OpenAI's error envelope with a stable code. Its type names the API:
Klok
{
"error": {
"message": "ai-credit-insufficient",
"type": "skena_inference_error",
"code": "ai-credit-insufficient"
}
}Klok: skena_inference_error. Every code is in the Klok reference.
Kvick
{
"error": {
"message": "daily-limit-reached",
"type": "skena_labs_error",
"code": "daily-limit-reached"
}
}Kvick: skena_labs_error. Kvick's own refusals use the Jev API's shapes. Every code is in the Kvick reference.
Status
- Neither API has an uptime guarantee yet, and either may change.
- Kvick is a Skena Labs model: please do not send it personal or sensitive data.
Machine-readable descriptions (OpenAPI 3.1): /docs/klok/openapi.json and /docs/kvick/openapi.json. Questions or problems: hello@skena.ai.