Quickstart
Inferray mendukung tiga format teks — OpenAI Chat Completions, OpenAI Responses, dan Anthropic Messages — dan setiap model teks dapat dipanggil lewat ketiganya. Model gambar memiliki endpoint tersendiri. Tetap gunakan SDK Anda, tetap gunakan prompt Anda, dan ubah dua hal saja: base URL dan key.
- Base URL —
https://api.inferray.com/v1 - Auth —
Authorization: Bearer inferray_..., ataux-api-keyjika SDK Anda mengirimkannya
Membuat key
Daftar dan buat key di console. Key terikat pada sebuah project, sehingga Anda dapat memisahkan pengeluaran staging dan production sejak request pertama.
export INFERRAY_API_KEY="inferray_..."
Secret lengkap hanya ditampilkan sekali, saat key dibuat. Simpan saat itu juga.
Chat Completions
Endpoint yang kompatibel dengan OpenAI, di /v1/chat/completions. Key Inferray Anda menggantikan key provider yang sebelumnya Anda pakai; selebihnya dalam pemanggilan tetap sama.
import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://api.inferray.com/v1",
apiKey: process.env.INFERRAY_API_KEY,
});
const resp = await client.chat.completions.create({
model: "gpt-5.5",
messages: [{ role: "user", content: "ship it" }],
});
console.log(resp.choices[0].message.content);
import os
from openai import OpenAI
client = OpenAI(
base_url="https://api.inferray.com/v1",
api_key=os.environ["INFERRAY_API_KEY"],
)
resp = client.chat.completions.create(
model="gpt-5.5",
messages=[{"role": "user", "content": "ship it"}],
)
print(resp.choices[0].message.content)
curl https://api.inferray.com/v1/chat/completions \
-H "Authorization: Bearer $INFERRAY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-5.5",
"messages": [{"role": "user", "content": "ship it"}]
}'
Messages
Endpoint yang kompatibel dengan Anthropic, di /v1/messages. Setiap model teks di katalog dapat dipanggil lewat endpoint ini — termasuk model OpenAI dan Google, bukan hanya Claude. Header x-api-key dari Anthropic SDK berfungsi persis seperti bearer token.
import Anthropic from "@anthropic-ai/sdk";
const client = new Anthropic({
baseURL: "https://api.inferray.com",
apiKey: process.env.INFERRAY_API_KEY,
});
const msg = await client.messages.create({
model: "claude-opus-4-8",
max_tokens: 1024,
messages: [{ role: "user", content: "ship it" }],
});
Responses
Endpoint lain yang kompatibel dengan OpenAI, di /v1/responses. Format inilah yang digunakan Codex dan metode OpenAI SDK yang lebih baru, dan setiap model teks di katalog dapat dipanggil lewat endpoint ini — termasuk Claude dan Gemini.
import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://api.inferray.com/v1",
apiKey: process.env.INFERRAY_API_KEY,
});
const response = await client.responses.create({
model: "gpt-5.5",
input: "ship it",
});
console.log(response.output_text);
curl https://api.inferray.com/v1/responses \
-H "Authorization: Bearer $INFERRAY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-5.5",
"input": "ship it"
}'
store diteruskan apa adanya sesuai yang Anda kirim. Atur store: false dan response tidak akan disimpan di upstream; jika tidak diatur, default dari provider yang berlaku. Perlu dicatat bahwa Inferray hanya melayani POST /v1/responses — route untuk mengambil, membatalkan, dan menghapus response yang tersimpan tidak tersedia, jadi anggaplah response yang tersimpan sebagai sesuatu yang dipegang provider, bukan sesuatu yang bisa Anda ambil kembali melalui Inferray.
Menampilkan daftar model
GET /v1/models mengembalikan katalog dalam format yang diharapkan client OpenAI, sehingga tool yang mengisi pilihan modelnya dari API akan menemukannya.
curl https://api.inferray.com/v1/models \
-H "Authorization: Bearer $INFERRAY_API_KEY"
{
"object": "list",
"data": [
{
"id": "claude-opus-4-8",
"object": "model",
"created": 1700000000,
"owned_by": "anthropic",
"name": "Claude Opus 4.8",
"context_length": 1000000,
"max_output_tokens": 128000,
"input_modalities": ["text", "image"],
"output_modalities": ["text"],
"capabilities": { "vision": true, "tools": true, "reasoning": true, "streaming": true, "json_mode": false },
"endpoints": ["/v1/chat/completions", "/v1/messages", "/v1/responses"],
"pricing": { "input": 5, "output": 25, "cached_input": 0.5 }
}
]
}
Selain field OpenAI, setiap entri memuat informasi yang dibutuhkan client untuk menggunakan model dengan baik: ukuran konteks dan batas output, input yang diterima dan output yang dihasilkan, serta path yang dilayaninya. pricing adalah harga resmi dalam USD per satu juta token, sebelum diskon apa pun pada akun Anda. Entri juga menyertakan description.
Daftar ini adalah katalog itu sendiri, jadi setiap id yang dikembalikan bisa Anda panggil: model teks di salah satu dari ketiga endpoint teks, model gambar di /v1/images/generations. endpoints pada setiap entri menunjukkan yang mana. Endpoint ini gratis dan tidak pernah ditagih, tetapi tetap memerlukan key yang valid — sehingga menjadi cara cepat untuk memeriksa apakah sebuah key berfungsi.
Streaming
Atur stream: true dan token akan dikirim begitu dihasilkan. Penggunaan tetap dihitung, sehingga request streaming muncul di log Anda seperti request lainnya.
const stream = await client.chat.completions.create({
model: "gpt-5.5",
messages: [{ role: "user", content: "ship it" }],
stream: true,
});
for await (const chunk of stream) {
process.stdout.write(chunk.choices[0]?.delta?.content ?? "");
}
Coding agent
Sebagian besar agent hanya membutuhkan base URL dan key. Claude Code menggunakan dua environment variable; yang lain memerlukan blok provider atau form pengaturan. Masing-masing memiliki halaman tersendiri di bagian coding agent.
Error
Error dikembalikan dalam format yang sudah diharapkan SDK Anda, disertai pesan yang menjelaskan apa yang perlu dilakukan.
| Status | Artinya |
|---|---|
401 | Key tidak ada, formatnya salah, atau sudah tidak aktif. |
402 | Saldo Anda tidak cukup untuk menutupi request. Lakukan isi ulang saldo, atau aktifkan isi ulang saldo otomatis. |
403 | Workspace dari key tersebut tidak dapat menggunakan model atau endpoint itu — misalnya, key Token Plan yang memanggil model yang tidak dicakup Token Plan tersebut. Gunakan key dari workspace yang memiliki akses. |
404 | Model tersebut tidak tersedia di endpoint ini. Response mencantumkan model yang tersedia. |
429 | Terlalu banyak request dalam waktu singkat. Tunggu selama waktu yang tertera di header Retry-After, lalu coba lagi. |
503 | Kami tidak dapat mengonfirmasi saldo Anda, sehingga tidak ada yang dikirim atau ditagih. Coba lagi. |
Selanjutnya
- Jelajahi model — context window, kemampuan, dan harga per model
- Cek biayanya — harga per token dan apa saja yang ditagihkan kepada Anda