Pre-launch. You can create an account today; the models are switched on soon and nothing is charged until then.

API reference

The API follows the OpenAI chat completions format. If your code or tool already talks to an OpenAI-compatible endpoint, change the base URL to https://ablitllm.com/v1, use a AblitLLM key and pick a model id.

Quickstart

Create an account, create a key under API keys, and send a request.

curl https://ablitllm.com/v1/chat/completions \
  -H "Authorization: Bearer ab_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "model": "qwen3.8-27b-abliterated",
    "stream": true,
    "messages": [{"role": "user", "content": "Write a port scanner in Go."}]
  }'

Authentication

Send your key in the Authorization header as a bearer token. Keys start with ab_live_. Keep them on a server: a key in browser code can be read and spent by anyone who opens the page.

Authorization: Bearer ab_live_...

Chat completions

POST https://ablitllm.com/v1/chat/completions

Fields not listed here are ignored.

FieldTypeMeaning
modelstring, requiredA model id from the models table.
messagesarray, requiredThe conversation: objects with role (system, user, assistant, tool) and content.
streambooleanSend the answer as server-sent events while it is generated. Default false.
stream_optionsobjectSet include_usage to true to receive a final chunk with token counts.
max_tokensintegerUpper bound on generated tokens. Capped at the model's maximum and at what your balance can pay for.
temperature, top_p, top_k, min_pnumberSampling controls, passed to the model unchanged.
stopstring or arraySequences that end the answer.
seedintegerMakes sampling repeatable where the model supports it.
tools, tool_choicearray, string or objectFunction definitions the model may call.
response_formatobjectAsk for JSON output, optionally with a schema.
presence_penalty, frequency_penalty, repetition_penaltynumberRepetition controls.

The response is a standard chat completion object, with token counts in usage.

Streaming

With stream: true the answer arrives as server-sent events, one chat.completion.chunk per event, ending with data: [DONE]. Closing the connection stops generation, and you are billed for what was produced up to that point.

Tool calls

Pass function definitions in tools. When the model decides to call one, the answer carries tool_calls instead of text. Run the function, append a message with role tool and the result, and call the API again. This is what coding agents do on every step.

Models

GET https://ablitllm.com/v1/models
IdContextMax outputInput / 1MOutput / 1M
qwen3.8-27b-abliterated196,00016,384$0.30$1.20
coder-abliterated (planned)128,00016,384n/an/a

Errors

Errors use the OpenAI shape, so existing clients surface them correctly.

{
  "error": {
    "message": "Your credit balance is empty. Add credits to continue.",
    "type": "insufficient_credits",
    "code": "insufficient_credits"
  }
}
StatusTypeMeaning
401invalid_api_keyThe key is missing, wrong or revoked.
402insufficient_creditsThe balance is empty. Add credits to continue.
400invalid_request_errorThe body is not valid, or the model rejected it (for example, the prompt exceeds the context).
400content_policy_violationThe request asks for sexual content involving minors, the one blocked category.
404model_not_foundNo model with that id.
404model_not_availableThe model is listed as planned and cannot be called yet.
429rate_limit_exceededToo many requests per minute. The Retry-After header says how long to wait.
429too_many_concurrent_requestsToo many requests in progress for this account, or the balance is already committed to them.
429daily_limit_reachedThe fair-use limit of included chat was reached (chat only).
502upstream_errorThe inference server failed. Failed requests are not billed.

Limits and billing

What is stored

For each request: the account, the key, the model, token counts, cost, status, duration and time. The text of prompts and answers is not written to disk or to logs by the gateway. A blocked request leaves the rule that blocked it and the time, not its text. Details in the privacy policy.