We expose the standard OpenAI surface (/v1/chat/completions and /v1/models), so any client that supports a "custom OpenAI provider" — Cherry Studio, Cursor, ChatBox, LobeChat, NextChat — connects with a single API key and gets every model (GPT-5.5, Claude, Gemini, GLM, …). Usually a one-minute setup.
| Base URL / API host | https://apimodels.app/api/v1 |
| API Key | your sk_… key (create in console) |
| Model id | gpt-5-5 · claude-opus-4-8 · gemini-3-pro-preview · gpt-image-2 |
No key yet? Open Console → Chaves de API and create an sk_… string.
https://apimodels.app/api/v1/Settings → Model Providers → Add, type OpenAI. The host must end with a slash.
https://apimodels.app/api/v1Settings → Models → enable "Override OpenAI Base URL" with the host above, paste your sk_… key, then add a custom model name (e.g. gpt-5-5).
https://apimodels.app/api/v1Settings → pick "OpenAI API Compatible", set the API host above, paste your sk_… key, model gpt-5-5.
https://apimodels.app/api/v1Settings → Language Model → OpenAI, fill API Key and the API proxy address above, model gpt-5-5.
https://apimodels.appSettings → Custom Endpoint, set the endpoint to https://apimodels.app (it appends /v1 itself), API Key your sk_… key, model gpt-5-5.
https://apimodels.app/api/v1Set base_url to the host above, api_key to your sk_… key, model to gpt-5-5. OpenAI SDK example below.
Any project using the OpenAI SDK only needs base_url and api_key changed to point here — no other code changes.
from openai import OpenAI
client = OpenAI(
base_url="https://apimodels.app/api/v1",
api_key="sk_your_key_here",
)
resp = client.chat.completions.create(
model="gpt-5-5",
messages=[{"role": "user", "content": "Reply with exactly: ok"}],
)
print(resp.choices[0].message.content)import OpenAI from "openai"
const client = new OpenAI({
baseURL: "https://apimodels.app/api/v1",
apiKey: "sk_your_key_here",
})
const resp = await client.chat.completions.create({
model: "gpt-5-5",
messages: [{ role: "user", content: "Reply with exactly: ok" }],
})
console.log(resp.choices[0].message.content)If a client won't connect, confirm the key + endpoint with curl first — this is exactly what clients hit on "check connection":
# confirm the endpoint + your key work (this is what a client hits on "check connection"):
curl -s https://apimodels.app/api/v1/models \
-H "Authorization: Bearer $APIMODELS_API_KEY" | head -c 300| Sintoma | Causa / correção |
|---|---|
| Connection check fails / no models | Host became …/api/v1/v1/…. Clients like Cherry Studio need the trailing slash (…/api/v1/); clients that append /v1 themselves (e.g. NextChat) take just https://apimodels.app. |
| HTTP 401 | Wrong or disabled key. Mint a fresh sk_… in the console and paste it again. |
| Picked a model but nothing / 400 Unknown model | Model id typo — use the dash form, e.g. gpt-5-5, claude-opus-4-8. Full list at /v1/models. |
| Insufficient balance / 402 | You're only charged for successful requests; top up in the console. |