Quickstart
FAQ
Xisu AI FAQ: lost keys and 401 errors, empty model lists or clients that won't connect, using Claude Code, whether to retry dropped streams, double charges from auto-retries, payments not credited, and what to include for refunds and support.
Keys
I lost my key — can you recover it? No. The server stores only a hash, and support doesn't have it either. Rotate to a new one — rotation gives the old key a grace period so you can move services across one at a time.
The key is correct but I keep getting 401.
Check the source IP first. If the key has an IP allowlist, calling from outside it returns 401 invalid_api_key — exactly the same code as an invalid key. That is deliberate: a dedicated code would tell whoever found the key "the key is fine, you're just on the wrong network".
How many keys can be valid at once? You can create as many as you like. But rotation keeps at most two — rotate again during a grace period and the older key is revoked immediately, without finishing its own grace period.
Calls
The model dropdown is empty / my client can't connect.
The client is calling GET /v1/models. That call also fails when the key is invalid or the balance is negative — work through Error codes and rate limits first. Some clients also need a restart before they re-resolve the endpoint.
Do you support images, audio or files?
There are no image-generation, audio or file endpoints. Image input does work, though — multimodal content passes through untouched on /v1/messages; see The Anthropic-native endpoint.
Can I use Claude Code or the Anthropic SDK?
Yes — point them at /v1/messages. The key and the balance are shared with the OpenAI-compatible side. Note that the models available on that endpoint are a subset (those with an Anthropic upstream configured); see The Anthropic-native endpoint.
I got a 429 on /v1/messages but I'm not sending many requests.
Check the balance first. The Anthropic protocol has no "insufficient balance" error type, so an empty balance is reported as 429 there too; the message says it is an account limit and that retrying won't help.
A stream dropped midway — should I retry? Start a new request; there is no resume semantic. Note that tokens already generated are still billed — the gateway meters what it produced, not what reached you.
My SDK retries on timeout — will I be charged twice? Yes. The gateway does no cross-request de-duplication (matching OpenAI's own behaviour on this endpoint): an automatic retry is treated as a brand-new call and is genuinely billed again. If your SDK has automatic retries on by default, consider lowering or disabling them.
A model is marked "unavailable". No upstream can serve it right now. It recovers on its own — no ticket needed; switch models if the work matters.
Money
My bill is much higher than I estimated. Usually because the estimate used the input price only. Across every model currently live, the output price is 3 to 5 times the input price, and output-heavy work (long-form writing, code) diverges the most. Estimate the two halves separately.
Payment succeeded but my balance didn't move. Don't pay again. Wait a few minutes and refresh; if it still hasn't landed, open a ticket with the order number — every grant is recorded on our side and support can see which step it is stuck at.
What happens when the balance runs out? Once it reaches zero, new requests are refused; a call already in flight is unaffected. The console warns you before that happens — keep a margin sized to your usage.
Is there post-payment or a credit line? No, and that is a product decision rather than a missing feature. The reasoning is in How billing works.
Can I get a refund? Not for reasons outside the platform's control, which is why we suggest testing with the 10-yuan package before buying a larger one. For platform-side problems such as model substitution or double charges, we refund once your evidence is verified. See Top-ups and refunds.
Reporting a problem
What should a ticket contain?
The request_id, when it happened, which model, and the complete error body. Without the request_id we cannot find that call — the gateway handles a large volume every day.
Never paste your key into a ticket. Debugging never needs it.