Skip to content

Albastov API

Language models, speech, voices and events on your albastov.com account, behind one key.

Products

Language models

OpenAI-compatible chat completions on open-weight Qwen and DeepSeek models.

Text to speech

Speech from text, in a built-in voice or a saved voice.

Voices

Clone, design, list, share, copy and delete saved voices, and speak any text in a saved voice.

Speech to text

Transcripts of audio files, with word and segment timestamps, on OpenAI's transcription route.

Image generation

Images from a text prompt or from another image.

Events

One-line notices from your apps, stored per source and streamed to readers.

Quick start

  1. Get a key

    The owner of albastov.com issues abk_ keys to an albastov.com account, with scopes: llm for language models, media:generate for speech. The key is shown once, at creation. Store the key in an environment variable:

    Shell
    export ALBASTOV_API_KEY=abk_...
  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 $ALBASTOV_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{
        "model": "qwen3.8-27b",
        "messages": [{"role": "user", "content": "Say hello in five 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["ALBASTOV_API_KEY"])
    reply = client.chat.completions.create(
        model="qwen3.8-27b",
        messages=[{"role": "user", "content": "Say hello in five 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.ALBASTOV_API_KEY}`,
        "Content-Type": "application/json",
      },
      body: JSON.stringify({
        model: "qwen3.8-27b",
        messages: [{ role: "user", content: "Say hello in five 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}
      }
    }

Audio models

Audio models
Sample 0:08

OmniVoice

Clone a voice, or design one from a description.

Sample 0:09

Kokoro

Fast, clear narration in 54 ready-made voices.

Sample 0:14

Parakeet

Transcripts with punctuation and word timestamps.

Base URL and hosts

ItemValue
Base URLhttps://api.albastov.com/v1
AuthenticationAuthorization: Bearer $ALBASTOV_API_KEY

Albastar Corp. operates albastov.com; the Albastov API serves albastov.com accounts and their API keys. The host citadel.albastov.com answers the same routes, for existing integrations.

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. No routes yet.

For agents

Every page is plain markdown at its URL plus .md. The full index is llms.txt.

Open llms.txt