Already using the OpenAI SDK, Azure OpenAI, or any OpenAI-compatible provider? Switching to Corti Models means changing two lines — no new SDK, no rewrite, no migration.
Corti Models is available only for Corti projects hosted in the EU region (https://ai.eu.corti.app). Credentials from a US-hosted project can’t access Corti Models. See Environments & Tenants .
Get your API key
Grab your API key from the Corti Console’s Developer Quickstart — a one-click Copy all as .env variables action copies everything you need.
Open the Developer Quickstart in the Corti Console Sign in, then under Default client → Copy all as .env variables.
Swap your provider
If your code looks like this today:
from openai import OpenAI
client = OpenAI(
api_key = os.environ[ "OPENAI_API_KEY" ],
)
response = client.chat.completions.create(
model = "gpt-4o" ,
messages = [{ "role" : "user" , "content" : "Hello!" }],
)
import OpenAI from "openai" ;
const client = new OpenAI ({
apiKey: process . env . OPENAI_API_KEY ,
});
const response = await client . chat . completions . create ({
model: "gpt-4o" ,
messages: [{ role: "user" , content: "Hello!" }],
});
Change the base URL and API key, and you’re running on Corti:
from openai import OpenAI
# corti-s1 | corti-s1-instant | corti-s1-mini | corti-s1-mini-instant
MODEL = "corti-s1"
client = OpenAI(
base_url = "https://ai.eu.corti.app/v1" ,
api_key = "<your-api-key>" ,
)
response = client.chat.completions.create(
model = MODEL ,
messages = [{ "role" : "user" , "content" : "Hello!" }],
)
print (response.choices[ 0 ].message.content)
import OpenAI from "openai" ;
// corti-s1 | corti-s1-instant | corti-s1-mini | corti-s1-mini-instant
const MODEL = "corti-s1" ;
const client = new OpenAI ({
baseURL: "https://ai.eu.corti.app/v1" ,
apiKey: "<your-api-key>" ,
});
const response = await client . chat . completions . create ({
model: MODEL ,
messages: [{ role: "user" , content: "Hello!" }],
});
console . log ( response . choices [ 0 ]. message . content );
API_KEY = "<your-api-key>"
# corti-s1 | corti-s1-instant | corti-s1-mini | corti-s1-mini-instant
MODEL = "corti-s1"
curl https://ai.eu.corti.app/v1/chat/completions \
-H "Authorization: Bearer ${ API_KEY }" \
-H "Content-Type: application/json" \
-d "{
\" model \" : \" ${ MODEL } \" ,
\" messages \" : [{ \" role \" : \" user \" , \" content \" : \" Hello! \" }]
}"
Everything else in your code — streaming, tool calling, JSON mode, multi-turn conversations, the Responses API — works unchanged. Corti Models is a drop-in replacement.
OAuth 2.0 access tokens will be supported soon. For now, use your Corti API key as the apiKey / Bearer credential.
See which models are available
List the models your credentials can access to confirm the model IDs you can pass:
API_KEY = "<your-api-key>"
curl https://ai.eu.corti.app/v1/models \
-H "Authorization: Bearer ${ API_KEY }"
See the Models page for the full lineup and pricing.
Next steps
Models Compare the four model variants by capability, reasoning, speed, and price.
Code with Corti Connect OpenCode, ForgeCode, Crush, or Pi to Corti Models with the Corti CLI.
API Reference Browse the full Corti Models API with interactive examples.
Authentication How authentication works at Corti.