OpenAI SDKs
The official OpenAI SDKs for Python and JavaScript work unchanged: give the client our base URL and your key, and name the model.
- Base URL
https://api.creeksidecompute.ai/v1- API
- Chat Completions, and Responses without stored state
- Model id
qwen/qwen3.8-27b, orqwen/qwen3.6-35b-a3bfor speed, ormeta/muse-glimmer-30b, which always reasons first- Context window
- 131072 tokens, up to 65536 of them output
- Key
- In
CREEKSIDE_API_KEY. Make one at creeksidecompute.ai/account
Set it up
Make a key. Sign in at creeksidecompute.ai/account with your email and make a key. Each request is paid from prepaid credit: top up by card from $10, or redeem a promotional code.
Put the key in an environment variable. Add this line to your shell profile (for example
~/.zshrc), then open a new terminal:shellexport CREEKSIDE_API_KEY=<your key>Install the SDK:
pip install openai, ornpm install openai.Point the client at Creekside. In Python:
Pythonimport os from openai import OpenAI client = OpenAI( base_url="https://api.creeksidecompute.ai/v1", api_key=os.environ["CREEKSIDE_API_KEY"], ) response = client.chat.completions.create( model="qwen/qwen3.8-27b", messages=[{"role": "user", "content": "Explain prefix caching."}], ) print(response.choices[0].message.content)In JavaScript or TypeScript:
JavaScriptimport OpenAI from "openai"; const client = new OpenAI({ baseURL: "https://api.creeksidecompute.ai/v1", apiKey: process.env.CREEKSIDE_API_KEY, }); const response = await client.chat.completions.create({ model: "qwen/qwen3.8-27b", messages: [{ role: "user", content: "Explain prefix caching." }], }); console.log(response.choices[0].message.content);Streaming works as usual. With
stream_options={"include_usage": True}the last chunk carries the token counts, with an emptychoiceslist.
Thinking
Thinking is off unless you ask for it. Pass reasoning_effort: "low", "medium" and "high" turn it on, "none" and "minimal" keep it off. Both SDKs send the field for any model.
The thinking comes back in message.reasoning, or delta.reasoning when streaming, a field the SDK types do not declare. In Python, read it with getattr. In TypeScript, put // @ts-expect-error above the line that reads it. Thinking tokens are billed as output.
response = client.chat.completions.create(
model="qwen/qwen3.8-27b",
messages=[{"role": "user", "content": "Is 391 a prime number?"}],
reasoning_effort="medium",
)
message = response.choices[0].message
print(getattr(message, "reasoning", None)) # the thinking
print(message.content) # the answerMuse Glimmer 30B always reasons before it answers, so reasoning_effort sets how long, not whether. Without it, the model reasons briefly, as at "low"; "medium", "high" and "xhigh" make it reason longer, and "none" and "minimal" act as "low". The reasoning counts toward max_tokens, so leave it room.
What does not work
- Stored Responses state.
client.responses.createworks, but nothing is kept between calls:previous_response_id, conversations and background responses are refused. Send the whole conversation ininput. - Hosted tools. Web search, file search, code interpreter and image generation run at OpenAI. Your own function tools work.
- Other endpoints. Embeddings, images, audio, files, batches and fine-tuning are not served. We serve
/v1/models,/v1/chat/completions,/v1/completionsand/v1/responses. - Images in messages, on the Qwen models. They are listed for text only. Muse Glimmer 30B reads images sent as
image_urlparts with base64 data URLs.
Troubleshooting
AuthenticationError: 401 invalid API key- The key is wrong, or
CREEKSIDE_API_KEYis not set where the code runs. To test the key alone:curl -s https://api.creeksidecompute.ai/v1/models -H "Authorization: Bearer $CREEKSIDE_API_KEY". NotFoundError: 404 model … is not served- The model id is wrong. Use
qwen/qwen3.8-27bexactly.GET /v1/modelslists every id we serve. A 404 on the path itself means an endpoint we do not serve. BadRequestError: 400 maximum context length is 131072 tokens- The prompt is longer than the model's window. Drop or summarise the oldest turns and send it again.
402or429- A
402means your prepaid credit does not cover the request: add credit at creeksidecompute.ai/account. A429means the key's rate, or the number of requests your account may run at once, is used up; agents that work in parallel reach that sooner. Wait and retry. The API reference lists the limits.
Other tools
Sources, read on 2026-10-11: openai-python, openai-node.