Documentation
Language models, speech, voices and events at api.albastov.com.
Albastar Corp. runs the Albastar API at https://api.albastov.com/v1. Every route answers at that base URL. A route
that needs an API key names the scope the key must carry. A first request with a new key:
Quick start.
Products
Quick start
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.
Apps
- GenAI: https://genai.albastov.com, images and videos from a prompt, in the browser: Image.
- Music: https://music.albastov.com, songs with vocals or instrumentals, in the browser: Music.
Voice models
Every text-to-speech model, with a sample of each: Voice models.
- BreezeTTS 2Clones a voice in Chinese and English;
instructdescribes the delivery.Voice cloning0:11 - ChatterboxClones a voice in 19 languages, using up to 20 s of the clip.Voice cloning0:10
- CosyVoice 3Clones a voice in 9 languages; the clip and the text may be in different languages.Voice cloning0:12
- FireRedTTS 3Clones a voice in 24 languages, including Arabic, Thai and Vietnamese.Voice cloning0:11
Base URL and authentication
- Base URL
https://api.albastov.com/v1- Authentication
- The header
Authorization, valueBearer $ALBASTAR_API_KEY
Keys, scopes and key handling: Authentication.
Conventions
- Request and response bodies are JSON, except audio files and multipart uploads where a route says so.
- Streams are
text/event-stream. - Daily limits reset at 00:00 UTC.
Retry-Afteris in seconds. - Every response carries an
X-Request-Idheader. Include the value in a bug report. - A request may set its own
X-Request-Id: 16 to 64 lowercase hex characters. Any other value is replaced. - Every error carries a
codeto branch on: Errors. - Every limit and the error it returns: Rate limits.
- Every docs page is markdown at
GET /v1/docs/{section}/{page}.md;GET /v1/docs/llms.txtlists every page. Both routes need no key: Docs reference.
Statuses
- Stable
- Breaking changes appear in the changelog before release.
- Beta
- Details may change. Every change gets a changelog line.
- Experimental
- May change or be removed without notice.
- Coming
- Planned for the Albastar API. No documented routes yet.
For agents
Every page is plain markdown at its URL plus .md. The full index is llms.txt.