What the error actually says
The server received your request and understood the key, then could not find a callable model under the name you sent. On an OpenAI-compatible API it is an HTTP 404 with the code model_not_found. On Model.sale the message reads: The model '<id>' does not exist or is not available. GET /v1/models lists callable models.
Tell it apart from neighbours. 401 invalid_api_key is a key problem. 403 model_not_allowed means the key exists but is restricted to other models. 404 on a path such as /v1/response (a typo in the endpoint) is a URL problem, not a model problem. Reading the status and the code first saves most of the debugging.
1. Copy the ID from the list, not from memory
Model IDs are exact strings: lowercase, hyphens, no spaces. gpt-6-sol works, "GPT-6 Sol", gpt6-sol and gpt_6_sol do not. Names shown in a UI or an article are display names. Ask the server what it can call: curl https://api.model.sale/v1/models -H "Authorization: Bearer $MODEL_SALE_KEY" returns the live IDs, and the model pages on the site show the same strings.
Aggregators often add a vendor prefix such as openai/gpt-6-sol. Model.sale IDs have no prefix, so a name copied from an OpenRouter example needs the prefix removed. The reverse also applies: a bare ID sent to a prefix-based service is not found.
2. The model may be temporarily unavailable
Models are routed to upstream capacity that can fail. Model.sale checks every model continuously and removes one from GET /v1/models while its checks fail; a request for it returns this same 404 until it is restored. If a model that worked yesterday is missing from the list, it is usually this, not a typo. Switch to a sibling model (for example gpt-6-sol instead of gpt-6.1-sol) and retry later.
Old snippets are the other source of this. A tutorial or an agent config that hard-codes an ID from a few months ago keeps failing after that ID is renamed or retired. Use the list as the source of truth and keep the ID in one config value, not scattered through the code.
3. Check what the key is allowed to call
A scoped key can carry an allowed-model list. A request for any other model fails with 403 model_not_allowed, and some clients show that as "model not found". Open Dashboard, API keys, and compare the key's allowed models with the ID you send. This is the usual cause when one project works and another, using a different key, does not.
Also confirm the key belongs to the account you funded. A key from an old test account can authenticate and still have nothing it may call.
4. Make sure the request goes to the right base URL
The classic mistake is a client that ignores your base URL and talks to the default endpoint. The default server then looks up gpt-6-sol, does not know it and answers model not found. Check that the base URL is https://api.model.sale/v1 and that the tool really uses it: print the URL in your SDK debug logging, or call the endpoint with curl first.
Per client: the official SDKs read OPENAI_BASE_URL, older wrappers read OPENAI_API_BASE, Cursor needs Override OpenAI Base URL turned on, and Codex CLI needs a custom provider with base_url and wire_api = "responses". Cursor and similar editors also keep their own model list, so add the custom model name there as well. The base URL guide in the blog walks through each client.
5. Match the endpoint to the model
Models list the endpoints they support, usually /v1/responses and /v1/chat/completions. A client that insists on one endpoint, such as an older plugin that only speaks Chat Completions, may fail on a model that only has the other. The model page on the site shows the validated endpoints; pick a model that supports the one your tool uses.
A 30-second checklist
First, read the status and code. Second, call GET /v1/models with the same key and confirm the ID is in the list, character for character. Third, check the key's allowed models in the dashboard. Fourth, confirm the request really reaches api.model.sale. Fifth, retry with a tiny prompt such as "Say hello" before blaming the model.
If the ID is in the list, the key allows it and the URL is right, and you still get 404, keep the request ID from the x-model-sale-request-id response header and contact support with it. Do not paste your key or prompts into the message.