Documentation

Quickstart

Your first request, in three languages.

Get a key

  1. Create an account and open API Keys.
  2. Press New Key. You can give it a spend cap, an expiry date and a per-minute request limit now, or leave them empty.
  3. Copy the key. It is shown once and never again — only its hash is stored.
  4. Add credits under Credits. The minimum top-up is $5.
Keep keys server-side

A key spends your balance. Put it in an environment variable on a server you control; never ship it to a browser or commit it to a repository.

First request

curl

Shell
1curl https://api.sothe.net/v1/chat/completions \2  -H "Authorization: Bearer $SOTHE_API_KEY" \3  -H "Content-Type: application/json" \4  -d '{5    "model": "anthropic/claude-haiku-4-5-20251001-v1:0",6    "messages": [{ "role": "user", "content": "Hello!" }]7  }'

Python

Python
1import os2from openai import OpenAI34client = OpenAI(base_url="https://api.sothe.net/v1", api_key=os.environ["SOTHE_API_KEY"])56completion = client.chat.completions.create(7    model="anthropic/claude-haiku-4-5-20251001-v1:0",8    messages=[{"role": "user", "content": "Hello!"}],9)10print(completion.choices[0].message.content)

TypeScript

TypeScript
1import OpenAI from "openai";23const client = new OpenAI({ baseURL: "https://api.sothe.net/v1", apiKey: process.env.SOTHE_API_KEY });45const completion = await client.chat.completions.create({6  model: "amazon/nova-micro-v1:0",7  messages: [{ role: "user", content: "Hello!" }],8});9console.log(completion.choices[0].message.content);

The response

The usual chat.completion object, with one addition worth knowing: usage.cost is what this request cost you, in USD.

JSON
1{2  "id": "gen-...",3  "object": "chat.completion",4  "model": "anthropic/claude-haiku-4-5-20251001-v1:0",5  "choices": [6    { "index": 0, "message": { "role": "assistant", "content": "Hello!" }, "finish_reason": "stop" }7  ],8  "usage": { "prompt_tokens": 9, "completion_tokens": 3, "total_tokens": 12, "cost": 0.000041 }9}

Next steps