Quick start
Get a key, send a chat completion, read the reply and make a speech file.
A first chat completion, then a first speech file.
Get a key
Albastar Corp. issues
abk_keys to albastov.com accounts; an account cannot create its own key. To get a key, write to Albastar Corp. at [email protected] with the account's address and the products the key is for. A key carries scopes:llmfor language models,media:generatefor speech, on an account with media access granted by Albastar Corp. The key is shown once, at creation. Store the key in an environment variable:Shellexport ALBASTAR_API_KEY=abk_...Scopes and key handling: Authentication.
Send a request
A chat completion with
qwen3.8-27b, through curl, the OpenAI Python SDK orfetch.curl
curl https://api.albastov.com/v1/chat/completions \ -H "Authorization: Bearer $ALBASTAR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "qwen3.8-27b", "messages": [ {"role": "user", "content": "Say hello in four words."} ], "chat_template_kwargs": {"enable_thinking": false}, "max_tokens": 50 }'Python
import os from openai import OpenAI client = OpenAI( base_url="https://api.albastov.com/v1", api_key=os.environ["ALBASTAR_API_KEY"], ) reply = client.chat.completions.create( model="qwen3.8-27b", messages=[{"role": "user", "content": "Say hello in four words."}], extra_body={"chat_template_kwargs": {"enable_thinking": False}}, max_tokens=50, ) print(reply.choices[0].message.content)JavaScript
const res = await fetch("https://api.albastov.com/v1/chat/completions", { method: "POST", headers: { Authorization: `Bearer ${process.env.ALBASTAR_API_KEY}`, "Content-Type": "application/json", }, body: JSON.stringify({ model: "qwen3.8-27b", messages: [{ role: "user", content: "Say hello in four words." }], chat_template_kwargs: { enable_thinking: false }, max_tokens: 50, }), }); if (!res.ok) throw new Error(`${res.status} ${await res.text()}`); const reply = await res.json(); console.log(reply.choices[0].message.content);Read the reply
The reply is JSON. The answer is
choices[0].message.content;usagecounts the tokens.Response{ "id": "chatcmpl-b50af0eb9c5d02d9", "object": "chat.completion", "created": 1793305215, "model": "qwen3.8-27b", "choices": [ { "index": 0, "message": { "role": "assistant", "content": "Hello there, my friend.", "reasoning": null }, "finish_reason": "stop" } ], "usage": { "prompt_tokens": 18, "completion_tokens": 7, "total_tokens": 25, "prompt_tokens_details": {"cached_tokens": 0}, "completion_tokens_details": {"reasoning_tokens": 0} } }A request for a model that is not loaded waits up to 80 s for the model to load, then returns
503 model_loadingor503 queuedwithRetry-After: Model loading.Make speech
A key with
media:generate, on an account with media access, turns text into an MP3 file withkokoroand the built-in voiceaf_heart.curl
curl https://api.albastov.com/v1/audio/speech \ -H "Authorization: Bearer $ALBASTAR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "kokoro", "voice": "af_heart", "input": "The river bends past the old mill and climbs into the hills." }' \ --output speech.mp3Python
import os from openai import OpenAI client = OpenAI( base_url="https://api.albastov.com/v1", api_key=os.environ["ALBASTAR_API_KEY"], ) with client.audio.speech.with_streaming_response.create( model="kokoro", voice="af_heart", input="The river bends past the old mill and climbs into the hills.", ) as res: res.stream_to_file("speech.mp3")JavaScript
import { writeFile } from "node:fs/promises"; const res = await fetch("https://api.albastov.com/v1/audio/speech", { method: "POST", headers: { Authorization: `Bearer ${process.env.ALBASTAR_API_KEY}`, "Content-Type": "application/json", }, body: JSON.stringify({ model: "kokoro", voice: "af_heart", input: "The river bends past the old mill and climbs into the hills.", }), }); if (!res.ok) throw new Error(`${res.status} ${await res.text()}`); await writeFile("speech.mp3", Buffer.from(await res.arrayBuffer()));The response body is the audio file,
Content-Type: audio/mpeg.
Guides
| Task | Guide |
|---|---|
| Chat, streaming, tools and thinking | Language models |
| Speech in a built-in or saved voice | Text to speech |
| A voice from a short clip | Voice cloning |
| Transcripts from audio | Speech to text |
| Every route, parameter and error | API reference |