LuluTokens

Models

Which models LuluTokens serves, how to list them, and how they are priced.

Every model is reachable through the same endpoint — you switch models by changing one string, the model field of your request.

The live catalogue is the model list in the console and the /v1/models endpoint. This page describes how to read them; it does not duplicate them, because the list changes as channels are added.

List models from the API

curl
curl https://api.lulutokens.ai/v1/models \
  -H "Authorization: Bearer $LULUTOKENS_API_KEY"
Response (truncated)
{
    "data": [
        {
            "id": "glm-5.2",
            "object": "model",
            "created": 1626777600,
            "owned_by": "advanced_custom",
            "supported_endpoint_types": [
                "openai",
                "openai-response",
                "anthropic"
            ]
        },
        {
            "id": "gpt-5.4",
            "object": "model",
            "created": 1626777600,
            "owned_by": "advanced_custom",
            "supported_endpoint_types": [
                "openai"
            ]
        },
    ],
    "object": "list",
    "success": true
}

The response only contains models your key is allowed to call, so it is the right thing to poll from an app that renders a model picker.

supported_endpoint_types lists the format a model speaks natively. It is not the list of endpoints you may call: the gateway translates between formats, so a model marked openai is still reachable over /v1/responses and /v1/messages.

from openai import OpenAI

client = OpenAI(
    api_key=os.environ["LULUTOKENS_API_KEY"],
    base_url="https://api.lulutokens.ai/v1",
)

for model in client.models.list():
    print(model.id)

Families

FamilyExample IDsGood for
DeepSeekdeepseek-v4-pro, deepseek-v4-flashGeneral chat, reasoning, code — strong price/performance
GLMglm-5.2, glm-5.1General chat, long context
Qwenqwen3.7-max, qwen3.7-plusChinese-first workloads, long context
Kimikimi-k2.6, kimi-k2.7-codeLong-document reading, coding
MiniMaxminimax-m3, minimax-m2.7General chat
GPTgpt-5.4, gpt-5.5Tool use, structured output, Codex CLI
Claudeclaude-sonnet-4-6, claude-haiku-4-5Long agentic coding sessions, Claude Code
Geminigemini-3-pro-image-previewImage generation

IDs are exact — there are no * wildcards and no unversioned aliases such as gpt-5 or qwen-max. Always copy the ID from /v1/models.

Choosing a model

  • Start cheap. For most chat and summarisation work a mid-tier model is indistinguishable from a frontier one at a fraction of the cost.
  • Reasoning models cost more per answer than their token price suggests — they emit a large number of hidden reasoning tokens, and you are billed for them.
  • Agentic coding tools burn context. Codex, Claude Code and opencode replay the whole conversation on every turn, so context length and cache behaviour matter more than raw benchmark scores.
  • Pin a version in production. Aliases can be repointed at a newer snapshot; a pinned ID will not change under you.

Pricing

Pricing is per million tokens and is billed separately for input and output. The authoritative numbers, including any per-model multiplier, are in Models & pricing in the console.

Every response includes a usage object, and the console's usage logs show the cost of each individual request:

{
  "usage": {
    "prompt_tokens": 24,
    "completion_tokens": 118,
    "total_tokens": 142
  }
}

When a model is unavailable

SymptomCauseFix
400 with model_not_foundID typo, or the model is not enabled for your keyCheck the ID against /v1/models
402Balance exhaustedTop up in the console
429Provider or account rate limitBack off, or route the request to another model
5xxUpstream provider is failingRetry; consider a fallback model in your client

On this page