Quickstart
Inferel’s API is OpenAI-compatible: any OpenAI SDK works by changing the base URL and key.
1. Create an account and API key
Section titled “1. Create an account and API key”- Sign up or sign in at console.inferel.ai.
- Go to API Keys and click Create key.
- Copy the key immediately — for security it is shown only once. Store it in an environment variable:
export INFEREL_API_KEY="your-key-here"New accounts need a credit balance before making paid requests — see Billing & credits to top up.
2. Make your first request
Section titled “2. Make your first request”curl https://inference.inferel.ai/v1/chat/completions \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $INFEREL_API_KEY" \ -d '{ "model": "anthropic/claude-sonnet-4.6", "messages": [ {"role": "user", "content": "Say hello from Inferel!"} ] }'Python (OpenAI SDK)
Section titled “Python (OpenAI SDK)”from openai import OpenAI
client = OpenAI( base_url="https://inference.inferel.ai/v1", api_key="YOUR_INFEREL_API_KEY",)
response = client.chat.completions.create( model="anthropic/claude-sonnet-4.6", messages=[{"role": "user", "content": "Say hello from Inferel!"}],)print(response.choices[0].message.content)Node.js (OpenAI SDK)
Section titled “Node.js (OpenAI SDK)”import OpenAI from 'openai';
const client = new OpenAI({ baseURL: 'https://inference.inferel.ai/v1', apiKey: process.env.INFEREL_API_KEY,});
const response = await client.chat.completions.create({ model: 'anthropic/claude-sonnet-4.6', messages: [{ role: 'user', content: 'Say hello from Inferel!' }],});console.log(response.choices[0].message.content);3. Stream the response
Section titled “3. Stream the response”Set stream: true to receive tokens as server-sent events. Inferel automatically includes
a final usage chunk so you always know what a streamed request cost:
stream = client.chat.completions.create( model="anthropic/claude-sonnet-4.6", messages=[{"role": "user", "content": "Write a haiku about GPUs."}], stream=True,)for chunk in stream: if chunk.choices and chunk.choices[0].delta.content: print(chunk.choices[0].delta.content, end="")Next steps
Section titled “Next steps”- Pick a model from the live catalog —
GET /v1/modelsalways reflects what’s currently available. - Understand rate limits and how to set per-key limits.
- Learn how errors are reported so your retries behave well.