Skip to content

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

  1. 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: llm for language models, media:generate for 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:

    Shell
    export ALBASTAR_API_KEY=abk_...

    Scopes and key handling: Authentication.

  2. Send a request

    A chat completion with qwen3.8-27b, through curl, the OpenAI Python SDK or fetch.

    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);
  3. Read the reply

    The reply is JSON. The answer is choices[0].message.content; usage counts 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_loading or 503 queued with Retry-After: Model loading.

All steps

Apps

Voice models

Every text-to-speech model, with a sample of each: Voice models.

  • BreezeTTS 2breeze22 languagesClones a voice in Chinese and English; instruct describes the delivery.Voice cloning0:11
  • Chatterboxchatterbox19 languagesClones a voice in 19 languages, using up to 20 s of the clip.Voice cloning0:10
  • CosyVoice 3cosyvoice39 languagesClones a voice in 9 languages; the clip and the text may be in different languages.Voice cloning0:12
  • FireRedTTS 3fireredtts324 languagesClones a voice in 24 languages, including Arabic, Thai and Vietnamese.Voice cloning0:11
All voice models

Base URL and authentication

Base URL
https://api.albastov.com/v1
Authentication
The header Authorization, value Bearer $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-After is in seconds.
  • Every response carries an X-Request-Id header. 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 code to 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.txt lists 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.

Open llms.txt
Albastar API docs