Disclosure and availability:DaoXE is a multi-model, multi-protocol API gateway we operate (OpenAI Chat Completions, OpenAI Responses, Anthropic Messages / Claude protocol, and image-generation-compatible endpoints — not OpenAI-only, not Claude-only). It isnotavailable in mainland China. This article is for developers in regions allowed by the service terms. The checklist works for any OpenAI-compatible gateway, not just DaoXE.
If you build software from Vietnam, Indonesia, Turkey, or a dozen other places, you know a failure mode that rarely shows up in English tutorials: the model works fine, but the billing page doesn't. An international card gets declined, a region isn't in the dropdown, or a subscription won't activate. The code is not the problem. The checkout is.
This post is the practical checklist I use when the goal is "get a real request through," separate from "argue with a payment form." It assumes you route through a gateway that already handles billing in a way you can actually complete, and it focuses on proving the integration is correct.
Write them down as two different problems:
Most "the API is broken" reports are actually one of these wearing the other's clothes. A gateway that accepts a payment method you can complete solves the first. This checklist solves the second.
Do not start inside your app. Start with the smallest possible call. Discover a model first — do not paste a model name from a blog:
export DAOXE_API_KEY="your_api_key"
export DAOXE_BASE_URL="https://daoxe.com/v1"
curl --fail-with-body --show-error --silent \
-H "Authorization: Bearer $DAOXE_API_KEY" \
"$DAOXE_BASE_URL/models"
Then one tiny Chat Completions request (keep max_tokens
small; it may be billed):
export DAOXE_MODEL="paste_exact_id_from_the_list"
curl --fail-with-body --show-error --silent \
-H "Authorization: Bearer $DAOXE_API_KEY" \
-H "Content-Type: application/json" \
-d "{\"model\":\"$DAOXE_MODEL\",\"max_tokens\":8,\"messages\":[{\"role\":\"user\",\"content\":\"Reply with OK.\"}]}" \
"$DAOXE_BASE_URL/chat/completions"
A multi-protocol gateway can speak more than one dialect. Your client usually speaks exactly one:
| Client | Protocol to verify | Path |
|---|---|---|
| OpenAI SDK, many IDE "OpenAI Compatible" fields | Chat Completions | https://daoxe.com/v1 |
| Newer agent stacks | Responses | /v1/responses |
| Claude Code, Anthropic SDK, Messages-only tools | Anthropic Messages | /v1/messages |
| Image tools | image generation | /v1/images/generations |
If you configure the wrong dialect, you get auth or 404 errors that look like a billing problem but are not.
Because the whole point is that checkout is painful where you are, do not waste balance during setup:
max_tokens
at 8 during smoke tests/v1/models
instead of shipping a stale hardcoded listIf your tool is Claude Code, you point it at the gateway with two environment variables (host root, not /v1
):
export ANTHROPIC_BASE_URL="https://daoxe.com"
export ANTHROPIC_AUTH_TOKEN="your_api_key"
claude
Full native setup, including the ANTHROPIC_AUTH_TOKEN
vs ANTHROPIC_API_KEY
gotcha, is here: CLAUDE_CODE.md.
It is a way to stop conflating "I can't complete the checkout" with "the API doesn't work for me." They are different problems and only one of them is in your code.