One endpoint. Every model.
Knot puts one OpenAI-compatible endpoint in front of a pool of capacity. Ask for a model by name; the request lands on whichever slot is healthy, retries past a 429 before the first byte, and every token it spends is priced and written down.
By invitation · Works with any OpenAI SDK · eu-west-1
curl https://tryknot.xyz/v1/chat/completions \
-H "Authorization: Bearer $KNOT_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "openai/gpt-5.6-sol",
"messages": [{"role": "user", "content": "Ping"}],
"stream": true
}'What happens between your SDK and the model
Four steps, in this order. Everything that can run after the response, does.
- 01
Authenticate
- 02
Route
- 03
Dispatch
- 04
Meter
Your plumbing stays yours
One public model ID is backed by an ordered pool of capacity. Retire a slot, add a region, move a quota — every client keeps working, because the model ID is the whole contract.
Priced per token, logged per request
Input, output and discounted cached input are priced separately, then written to a ledger row you can read. Balances are integer micro-dollars — a million to the dollar — so every figure stays exact.
One line changes: the base URL
It speaks the OpenAI API, so Cursor, Cline, LangChain and the official SDKs work unmodified. Streaming, tools and vision pass straight through.
import os
from openai import OpenAI
client = OpenAI(
base_url="https://tryknot.xyz/v1",
api_key=os.environ["KNOT_KEY"],
)
stream = client.chat.completions.create(
model="openai/gpt-5.6-sol",
messages=[{"role": "user", "content": "Ping"}],
stream=True,
)Endpoints
- POST /v1/chat/completions
- POST /v1/images/generations
- GET /v1/models
- GET /v1/credits
What people ask first
The short answers. The API reference has the long ones.
- What is Knot?
- Does my existing code work with it?
- How does it handle rate limits?
- How is usage billed?
- Which endpoints does it support?
- How do I get access?
Point your SDK somewhere better
Accounts are created with an invite code, which carries the credit you start with. Your code is all you need.