Text, image and video from one API key.

Qai speaks the same API as OpenAI. Change the base URL in the client you already have and the same code can call a chat model, generate an image or render a short video. You pay per call, and the sandbox model is free.

POST /v1/chat/completions200 stream: true
curl https://llm.quickcasa.ai/v1/chat/completions \
  -H "Authorization: Bearer sk-..." \
  -d '{"model": "qai-hello-world", "stream": true,
       "messages": [{"role": "user",
         "content": "Write a haiku about Mondays"}]}'
data: {"choices":[{"delta":{"content":"Monday"}}]}
data: {"choices":[{"delta":{"content":" morning"}}]}
data: {"choices":[{"delta":{"content":" light,"}}]}
data: {"choices":[{"delta":{"content":"\n"}}]}
data: {"choices":[{"delta":{"content":"coffee"}}]}
data: {"choices":[{"delta":{"content":" cools"}}]}
data: {"choices":[{"delta":{"content":" beside"}}]}
data: {"choices":[{"delta":{"content":" the"}}]}
data: {"choices":[{"delta":{"content":" keys,"}}]}
data: {"choices":[{"delta":{"content":"\n"}}]}
data: {"choices":[{"delta":{"content":"the"}}]}
data: {"choices":[{"delta":{"content":" inbox"}}]}
data: {"choices":[{"delta":{"content":" can"}}]}
data: {"choices":[{"delta":{"content":" wait."}}]}
data: [DONE]

What you get

01
OpenAI-compatible
Any OpenAI SDK, or any tool with a configurable base URL, works as is. Streaming, tool calls and JSON mode pass through unchanged.
One key for every model
Five text models, two image models and one video model on the same key and the same bill.
Hosted media
Ask for hostMedia and a generated image or video comes back at a permanent URL on our CDN, ready to drop into an image tag or an email.
A sandbox that stays free
qai-hello-world costs nothing and allows 100 calls per key each UTC day. Use it to wire up your client and test prompts.
Pay per use
Text is billed per token, images per image and video per second. There is no monthly fee or minimum.
Usage in the dashboard
Spend is broken down by model and by key, so you can see what each integration costs.
Free utilities
JSON repair and text cleanup endpoints come free with any account. See the utilities page.

Models and pricing

02

Pick a model by the job. Context is the window in tokens. Prices come from live billing, so this table is what Stripe charges. Full limits are on the models page.

Model Kind Context Use it for Price
qai-hello-world text 131,072 Wiring up a client and testing prompts. Free 100 calls per key per day
qai-flash text 1,000,000 Chat, summaries, classification and anything you call at volume. $0.20 per 1M input tokens
$0.50 per 1M output tokens
qai-pro text 1,048,576 The default for most work: reasoning, code and structured output. $0.80 per 1M input tokens
$2.00 per 1M output tokens
qai-max text 1,048,576 Long context and multi-step work where quality matters more than speed. $1.50 per 1M input tokens
$5.00 per 1M output tokens
qai-think text 204,800 Problems that benefit from the model reasoning before it answers. $1.80 per 1M input tokens
$8.00 per 1M output tokens
qai-imagine-turbo image Fast generation for previews and batches. $0.04 per image
qai-imagine-quality image Sharper detail and better text rendering. $0.08 per image
qai-motion video Short clips from a text prompt. $0.18 per video-second

More detail on the models page and the pricing page.

Quick start

03

Point an OpenAI client at https://llm.quickcasa.ai/v1 with your key. Start on qai-hello-world, then change the model name when you go to production.

Node / TypeScriptopenai
import OpenAI from 'openai';

const client = new OpenAI({
  baseURL: 'https://llm.quickcasa.ai/v1',
  apiKey: process.env.QAI_API_KEY,
});

const response = await client.chat.completions.create({
  model: 'qai-hello-world',
  messages: [{ role: 'user', content: 'Hello' }],
});

console.log(response.choices[0].message.content);
Pythonopenai
from openai import OpenAI

client = OpenAI(
    base_url="https://llm.quickcasa.ai/v1",
    api_key="sk-...",
)

response = client.chat.completions.create(
    model="qai-hello-world",
    messages=[{"role": "user", "content": "Hello"}],
)

print(response.choices[0].message.content)

Generated media, hosted for you

04

By default an image or video comes back on a temporary URL. Set hostMedia to true and it is stored on our CDN at a permanent address you can use straight away.

POST /v1/images/generationsjson
{
  "model": "qai-imagine-turbo",
  "prompt": "a lighthouse at dusk, film grain",
  "hostMedia": true
}

// response
{ "data": [{ "url": "https://llm.quickcasa.ai/media/..." }] }

How your data is handled

05
In transit
Every request runs over TLS.
Training
We do not train on your prompts, completions or generated media, and we do not share them with anyone.
Keys
Disable a key from the dashboard and it stops working on the next request. Create a new one whenever you want to rotate.
Deletion
Email us and we will delete your prompts, hosted media and account in one pass.
Where models run
On capacity we manage. The model ids stay the same, and which upstream serves a call is handled on our side.

Questions

06

Anything else, email hi@quickcasa.ai. A person replies within a business day.

How is this different from calling OpenAI directly?

The request shape is the same. Qai adds image and video on the same key, hosted media, a sandbox model that stays free, and usage broken down per key. If you only need one text model, calling OpenAI directly is fine.

Can I use it without writing code?

Yes. Any tool that takes a custom OpenAI base URL works: Cursor, Continue, Open WebUI, n8n, Make and Zapier among them. Set the base URL and the key.

Which model should I start with?

Use qai-hello-world to confirm the integration, then qai-pro. Move to qai-flash for volume, and to qai-max or qai-think when the answer matters more than the speed.

How does billing work?

Per token for text, per image for images and per second for video. Stripe charges the card on your account at the end of each period and emails an invoice.

What are the rate limits?

The sandbox model allows 100 calls per key each UTC day. Paid models default to 100 requests a minute. Email us before a launch and we will raise it.

What happens if my key leaks?

Disable it in the dashboard and create a new one. If you spot usage you do not recognize, email us and we will lock the key from our side.

Coming next

07

Three things being built now. None of them are available yet.

qai-embed
Text embeddings for search and retrieval, on an OpenAI-compatible /v1/embeddings endpoint.
Files
Upload a document, reference it in chat, and let the server handle chunking and retrieval.
Sessions
Pass a session id and conversation history is kept on our side between calls.

Try it on the free model.

Sign up, create a key, and make your first call to qai-hello-world.