TRAE ships a built-in model list, with a BYOK mode buried one click behind it: bring your own OpenAI-compatible endpoint, set the model ID, done. We wired TRAE to our own API running Kimi K3 tonight, on a Free account, and it works. The path has three potholes, and we hit all three so you can drive around them.
Every step below comes from tonight's run: TraeCode v3.6.2, macOS, Free account.
Disclosure: Wallaby Token operates the OpenAI-compatible inference API used as the endpoint in this test. The TRAE side of every step applies to any compatible provider.
The working setup, in one screen
TRAE menu → Preferences → Settings → Models → Add Model → Custom Model, then:
- API Format: OpenAI Chat Completions
- Custom Request URL:
https://api.wallabytoken.com/v1(no trailing slash; TRAE appends/chat/completionsitself) - Model ID:
kimi-k3 - API Key: your key from the provider's console
Hit Test and Add. The connectivity test sends one real request; ours came back "Test passed. Model saved successfully" in seconds. Then the important part: open the model picker in the chat window and switch from Auto to your custom model by hand before you type anything. Auto is TRAE's own routing; your custom endpoint only serves chats that name it.
No paywall anywhere in this flow. Free plan mounts custom models fine.
Pothole one: "OpenAI" does not mean "OpenAI-compatible"
TRAE's Add Model screen lists two dozen providers, and OpenAI is right there near the top. Resist it. That entry is hardwired to api.openai.com. We selected it, chose Other Models, typed kimi-k3, pasted our key, and got back:
Model provider request failed. Please check the error message. Form data saved Incorrect API key provided: sk-[REDACTED]. You can find your API key at https://platform.openai.com/account/api-keys.
Read that error slowly: TRAE had forwarded our third-party key to OpenAI's own servers, and OpenAI's servers were complaining. The form never asked for a base URL, because that provider entry doesn't have one. If your endpoint is OpenAI-compatible rather than OpenAI, the only correct door is Custom Model.
Pothole two: a 4054 that only dies with the chat
Once the model was saved, we sent a test prompt from a chat where we had been poking around earlier, and got:
Model Request failed. Please try again later. (4054)
Retrying didn't help. TRAE's Copy Request Details gave us this, verbatim:
usttp.7694713799311819789:c33582ae06efba6a69234acd369ae09b_6aca5672a5f52538d822ccb5.6aca59eebbfa17b27ba4588d.6aca59eebbfa17b27ba4588a:Trae.T(1970/1/22 01:40:46)
That is an internal trace ID, complete with a broken 1970 timestamp. No HTTP status, no body, nothing you can paste into a search box or a support ticket. From the client side, this error is a wall.
From the server side, though, we could see everything, because the endpoint is ours. The gateway log showed the request arriving, the model stream ending cleanly in 1 to 3 seconds, and zero output tokens, eight identical 8,690-token prompts in a row. Meanwhile a fresh chat with a 104-token prompt answered normally in the same minute, and curl against the same endpoint with streaming, tool calls, and deliberately mangled message histories all came back healthy.
The fix is embarrassingly simple: abandon the chat, start a new one. Something in that conversation's accumulated state poisoned every subsequent request. New chat, same model, same key: first reply came back fine, Kimi K3 introducing itself with its reasoning trace folded neatly under "Thought". If you hit a 4054 that survives a retry, don't keep retrying. New chat.
Pothole three: retry storms are not free, and your bill should say so
This last part matters most, and it's only visible because we could read both sides of the wire.
Those eight dead retries were TRAE auto-retrying an identical 8,690-token prompt. Every attempt processed the full input before the stream died, so every attempt billed: 8,690 in, 0 out, $0.023464 each, line by line in our console. Twenty-two empty responses across the evening cost about $0.73 in input tokens. Not a fortune. But it is exactly the kind of slow leak you never see on a flat subscription, and exactly the kind you should see on a metered plan.
So when you evaluate BYOK against an IDE's bundled pricing, ask the boring question: can you see every request, with its token counts, including the failures? On our platform that itemization is the product. Kimi K3 bills at $2.70 per million input tokens, $13.50 per million output, $0.27 for cached input, 10% off the official list, and a typical agent turn costs a fraction of a cent to a few cents. You watch it happen, line by line, or you don't pay for mysteries. (The empty-response charge in this test was real, so here is our rule, stated where you can hold us to it: if your bill shows input charges for requests that returned nothing, email [email protected] with a screenshot of the failure and the bill line. We check the logs, and if the response was empty, the charge comes off your balance. We refund empty-response charges, capped at $1 per account; the fix that avoids the whole mess is two sections up.)
The short version
- TRAE's merged release (TraeCode v3.6.2) supports custom OpenAI-compatible endpoints on the Free plan
- Use Custom Model, never the
OpenAIprovider entry; that one goes to api.openai.com no matter what key you paste - Switch the chat's model picker from Auto to your custom model by hand
- A persistent 4054 means the chat is poisoned, not your endpoint; start a new chat
- Metered beats bundled when, and only when, the bill shows you every request. Check whether yours does
- And if an empty response ever bills on our watch, a screenshot to [email protected] gets it refunded, up to $1 per account
Tested on 2026-10-10, TraeCode v3.6.2, Free plan, macOS, endpoint running Kimi K3. If TRAE moves any of these steps in a future update, we'll note it here with a date.