Getting started

Knot gives you one place to use many AI models, with one key and one bill. This page walks through it from the beginning. If you already know your way around an API, the reference is one click away.

Last updated 29 July 2026

What Knot is

Different companies build different AI models — OpenAI, Anthropic, xAI, Moonshot. Normally, using several means an account with each one, a separate key for each, separate bills, and different code for each.

Knot sits in front of all of them. You get one key, use one address, and every model is available by name. Switching from one model to another means changing a single word in your request.

You add credit up front and it is drawn down as you use it. Nothing is charged monthly, and there is no subscription.

First request, step by step

  1. Create an account

    Knot is invite-only for now. You need a code from us — enter it on the sign-up page and your account starts with credit already on it.

  2. Create a key

    A key is a long password that proves a request came from you. Make one on the API keys page. It looks like knot_live_a1b2….

    It is shown once, and we store only a scrambled copy — so we cannot show it to you again, and nobody who reads our database can use it. If you lose it, revoke it and make another. Treat it like a password: never put it in a public place or in code you share.

  3. Point your code at Knot

    Knot deliberately speaks the same language as OpenAI’s API. If you already have code that calls OpenAI, you change two lines — the address and the key — and everything else keeps working.

    Pick whichever of these matches what you use:

    Python

    from openai import OpenAI
    
    client = OpenAI(
        base_url="https://tryknot.xyz/v1",
        api_key="knot_live_your_key_here",
    )
    
    reply = client.chat.completions.create(
        model="openai/gpt-5.6-luna",
        messages=[{"role": "user", "content": "Hello"}],
    )
    
    print(reply.choices[0].message.content)

    JavaScript / TypeScript

    import OpenAI from "openai";
    
    const client = new OpenAI({
      baseURL: "https://tryknot.xyz/v1",
      apiKey: process.env.KNOT_KEY,
    });
    
    const reply = await client.chat.completions.create({
      model: "openai/gpt-5.6-luna",
      messages: [{ role: "user", content: "Hello" }],
    });
    
    console.log(reply.choices[0].message.content);

    Terminal (curl)

    curl https://tryknot.xyz/v1/chat/completions \
      -H "Authorization: Bearer $KNOT_KEY" \
      -H "Content-Type: application/json" \
      -d '{
        "model": "openai/gpt-5.6-luna",
        "messages": [{"role": "user", "content": "Hello"}]
      }'
  4. Choose a model

    Every model has a name like openai/gpt-5.6-luna or anthropic/claude-opus-5. The model catalog lists all of them with live prices.

    They vary enormously in cost — the cheapest is roughly 25 times less than the dearest. A good habit is to start with a cheap model and move up only if the answers are not good enough.

What you get charged

AI models do not charge per question. They charge per token, which is a chunk of text — very roughly, one token is about four characters, so 100 tokens is a short paragraph.

You are charged for two things on every request:

  • Input — everything you send, including the conversation so far.
  • Output — everything the model writes back. Output almost always costs more than input.

Prices are quoted per million tokens, because per-token numbers would be a string of zeros. A model at “$1 per million input tokens” costs one hundredth of a cent for a thousand tokens.

Every request you make is listed on your usage page with the exact tokens and the exact cost. Open any row to see the arithmetic behind the charge. Nothing is estimated or rounded up.

Two details that trip people up, in case you meet them: repeated text can be “cached” and billed at a large discount, and some models do hidden “reasoning” before answering, which counts as output. Both are shown separately in your usage log, and neither is ever billed twice. The reference has the exact formula.

Adding credit

Your balance is shown at the top of the dashboard. Top it up by card at any time, or redeem another invite code.

Credit never expires. When it runs out, requests stop with a clear message rather than failing mysteriously — and nothing is charged to your card without you asking.

If something goes wrong

What you see
Invalid API key
What it means
The key is wrong, or it was revoked.
What to do
Make a new one on the keys page.
What you see
You have run out of credit
What it means
Your balance reached zero.
What to do
Add credit on the dashboard.
What you see
The model does not exist
What it means
The name is misspelled, or that model is not available.
What to do
Check the catalog for the exact name.
What you see
Too many requests
What it means
You sent a lot very quickly.
What to do
Wait the number of seconds given, then continue.
What you see
No capacity right now
What it means
Every server for that model is busy.
What to do
Try again shortly, or use a different model.

Going further

That is everything most people need. If you want the precise behaviour — the billing formula, streaming, how failover works, the exact error shapes — it is all in the API reference.