Disclosure and availability: DaoXE is a multi-model multi-protocol API gateway we operate. It is listed on models.dev as provider key
daoxewithapi=https://daoxe.com/v1and envDAOXE_API_KEY. It is not available in mainland China. This article is for developers in regions allowed by the service terms.
For a long time my gateway setup notes looked like this:
base_url = https://something/v1
model = gpt-4o-mini # hope this still exists
Enter fullscreen mode Exit fullscreen mode
That pattern fails in three predictable ways:
- The blog model ID is not in your account catalog.
- The host is correct, but the provider key your client expects is different.
- The catalog moved and your README did not.
This post is the discovery workflow I use now: public catalog first, account catalog second, client third.
Series context
Earlier posts covered smoke tests, multiprotocol checks, client setup, and IDE failure isolation:
- The 3-step smoke test I use for any OpenAI-compatible API
- One gateway, three protocols
- How I configure Cline, Continue, and similar tools
- My curl smoke test passed. Why does Cline / Continue still fail?
- Claude protocol without the OpenAI-only mental model
This one is about where model IDs come from before you paste them into an IDE.
1. Public catalog: models.dev
models.dev is a public provider/model catalog many coding tools read.
When a gateway lands there, clients that support custom / catalog-driven providers can resolve:
Field Why it matters provider key stable id for configs (daoxe, not a marketing name)
api base
host + /v1 shape
env var
which secret name tools expect
For DaoXE the live catalog entry is effectively:
key: daoxe
api: https://daoxe.com/v1
env: DAOXE_API_KEY
Enter fullscreen mode Exit fullscreen mode
That is public discovery, not proof your account can call every model.
2. Account catalog: GET /v1/models
Public catalogs and account catalogs are different objects.
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"
Enter fullscreen mode Exit fullscreen mode
I treat the response as live data for this account only:
- copy an exact
id - do not invent IDs from screenshots
- do not assume yesterday’s list is still valid
If /models returns 401, stop blaming the IDE. Fix auth first.
3. One tiny Chat Completions smoke with that exact ID
export DAOXE_MODEL="paste_exact_id_from_models_response"
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"
Enter fullscreen mode Exit fullscreen mode
Only after this returns HTTP 200 do I open Cline / Continue / Claude-shaped tools.
4. Wire the client to the same triple
The only triple that should move between tools:
Piece Example for DaoXE Base URLhttps://daoxe.com/v1
API key storage
env / secret store (DAOXE_API_KEY or the client’s custom key field)
Model ID
exact id from /v1/models now
Public setup notes:
Footguns this workflow prevents
Footgun Symptom Fix Blog model ID model_not_found re-copy from/v1/models
Marketing name as API id
client 400
use catalog id, not label
Public catalog only
“listed but my key fails”
public catalog ≠ account access
Account catalog only
“works for me, not for teammate”
each account has its own list
Skipping smoke
IDE red noise
curl first
What success looks like
Success is not “every model on models.dev works for every key.”
Success is:
- you can find the gateway in a public catalog or docs
- you can list models for your key
- you can call one model with a tiny request
- you can clone that triple into one client without guessing
Soft CTA
If you want the product side of this writeup:
https://daoxe.com/?utm_source=devto&utm_medium=organic&utm_campaign=global_launch_modelsdev
If something fails, comment with client name + whether /v1/models returned 200 for your key. Do not paste API keys.
Series
- Smoke test
- Multiprotocol checklist
- Client setup
- curl OK, IDE fails
- Claude protocol
-
This post: models.dev + account
/modelsdiscovery
답글 남기기