How to Migrate from the OpenAI API to Sistematis AI (5 Minutes)
A migration guide from the OpenAI API to Sistematis AI for developers: swap the base URL and API key in Python, Node.js, Laravel, and AI coding tools. No code rewrite, pay with QRIS.
Why Migrate?#
If your code already uses the OpenAI SDK, migrating to Sistematis AI requires no rewrite. The Sistematis AI endpoint is compatible with the OpenAI format — you only change base_url and api_key. After that: QRIS payments in Rupiah, no credit card, and predictable subscription costs.
This article shows you how to migrate across popular stacks.
Prerequisites#
- A Sistematis AI API key — register at sistematis.ai/register; the API key appears automatically in your dashboard once your subscription is active
- Endpoint:
https://api.sistematis.ai/v1 - Models: use Sistematis AI model names (
sai-1.0–sai-1.4) — see the model selection guide
Important: OpenAI model names (
gpt-4oetc.) are not guaranteed to map on the chat endpoint — always usesai-1.xslugs in your own code. On the Anthropic-compatible endpoint for Claude Code, Claude name mapping is automatic.
Python (openai SDK)#
Before (OpenAI):
from openai import OpenAI
client = OpenAI(api_key="sk-...")
After (Sistematis AI):
from openai import OpenAI
client = OpenAI(
api_key="sai-xxxxxxxx",
base_url="https://api.sistematis.ai/v1",
)
response = client.chat.completions.create(
model="sai-1.1",
messages=[{"role": "user", "content": "Hello!"}],
)
print(response.choices[0].message.content)
Streaming is identical to the OpenAI pattern:
stream = client.chat.completions.create(
model="sai-1.1",
messages=[{"role": "user", "content": "Write a fibonacci function"}],
stream=True,
)
for chunk in stream:
delta = chunk.choices[0].delta
if delta.content:
print(delta.content, end="")
Node.js / TypeScript (openai SDK)#
import OpenAI from "openai";
const client = new OpenAI({
apiKey: process.env.SAI_API_KEY,
baseURL: "https://api.sistematis.ai/v1",
});
const response = await client.chat.completions.create({
model: "sai-1.1",
messages: [{ role: "user", content: "Hello!" }],
});
Keep credentials in environment variables (.env):
SAI_API_KEY=sai-xxxxxxxx
Laravel / PHP (guzzlehttp or openai-php)#
With the openai-php/laravel package, set the config in .env:
OPENAI_API_KEY=sai-xxxxxxxx
OPENAI_BASE_URI=https://api.sistematis.ai/v1
Then call it as usual:
use OpenAILaravelFacadesOpenAI;
$result = OpenAI::chat()->create([
'model' => 'sai-1.1',
'messages' => [
['role' => 'user', 'content' => 'Hello!'],
],
]);
Or with raw Guzzle:
$response = $client->post('https://api.sistematis.ai/v1/chat/completions', [
'headers' => [
'Authorization' => 'Bearer ' . env('SAI_API_KEY'),
'Content-Type' => 'application/json',
],
'json' => [
'model' => 'sai-1.1',
'messages' => [['role' => 'user', 'content' => 'Hello!']],
],
]);
cURL (quick test)#
curl https://api.sistematis.ai/v1/chat/completions \
-H "Authorization: Bearer sai-xxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"model": "sai-1.1",
"messages": [{"role": "user", "content": "Hello!"}]
}'
AI Coding Tools#
OpenAI-compatible tools (Cline, Kilo Code, Roo Code, OpenClaw, Hermes Agent): set Base URL https://api.sistematis.ai/v1, your Sistematis AI API key, and pick a sai-1.x model.
Claude Code uses the Anthropic-compatible endpoint — see the Claude Code setup article. Codex uses the Responses endpoint — both are documented at docs/tools.
Migration Checklist#
- Change
base_url→https://api.sistematis.ai/v1 - Change
api_key→ your Sistematis AI API key (sai-prefix) - Change model names →
sai-1.0…sai-1.4 - Remove dependencies on OpenAI-specific features (e.g. hardcoded
gpt-4o, embeddings) - Test one non-streaming request, then one streaming request
- Watch your quota on the dashboard — 5-hour & weekly percentages
Common Troubleshooting#
401 Unauthorized — Make sure the Authorization: Bearer sai-... header is correct and your subscription is active.
Unknown model — Use sai-1.x slugs, not OpenAI model names, in your own code.
429 Rate Limited — Your 5-hour or weekly quota is exhausted. Check the dashboard; the 5-hour quota resets automatically in the next window.
Conclusion#
Migrating from the OpenAI API to Sistematis AI is essentially a two-line migration: base_url and api_key. Everything else — request format, responses, streaming — is identical to what you already know.
After migrating, you pay in Rupiah via QRIS, with no credit card, and a monthly cost you can budget.
Try it now: register free, migrate your code in 5 minutes, and see the plans starting at Rp7,000/day.