Pakai AI kami (Chat, lewat routing Hermes ke beberapa model sekaligus) langsung dari
website atau aplikasi Anda sendiri. Format request/response kompatibel dengan OpenAI API —
kalau kode Anda sudah pakai SDK resmi OpenAI, tinggal ganti base_url dan API key,
tidak perlu ubah kode lain. Alternatif praktis dari beli saldo langsung ke provider (OpenAI/Groq/dll):
satu saldo AI Center, dipakai lintas model.
Klaim trial sekali per akun di halaman AI API -- selama 14 hari sejak diklaim,
semua pemakaian /v1/chat/completions Anda gratis penuh.
Daftar / masuk ke akun AI Center Anda, lalu buka halaman AI API di dashboard untuk membuat key (dan klaim trial gratis di atas kalau belum). Key hanya ditampilkan satu kali saat dibuat — simpan baik-baik.
Penting soal keamanan: API key ini mewakili saldo Anda. Panggil API dari server/backend Anda sendiri, JANGAN ditaruh di kode JavaScript sisi browser/client (CORS memang sengaja tidak diaktifkan di endpoint ini) — siapa pun yang melihat key Anda bisa memakai saldo Anda.
Daftar Gratis & Buat KeySemua request dikirim dengan header Authorization: Bearer <API_KEY>.
Base URL: https://ai.suryadigital.id/v1
Body request (JSON):
{
"model": "hermes-agent", // opsional -- kosongkan/"auto" biar Hermes yang pilih
"messages": [
{ "role": "system", "content": "Anda asisten yang ringkas dan sopan." },
{ "role": "user", "content": "Ringkas paragraf ini: ..." }
],
"temperature": 0.7, // opsional, default 0.7
"max_tokens": 2048, // opsional, default 2048
"stream": false // opsional, default false -- true utk balasan berangsur (SSE)
}
Response 200 kalau stream: false/tidak diisi (bentuk sama seperti OpenAI):
{
"id": "chatcmpl-12345",
"object": "chat.completion",
"created": 1758000000,
"model": "hermes-agent",
"choices": [
{ "index": 0, "message": { "role": "assistant", "content": "..." }, "finish_reason": "stop" }
],
"usage": { "prompt_tokens": 42, "completion_tokens": 120, "total_tokens": 162 }
}
Response kalau stream: true -- Content-Type: text/event-stream, potongan chat.completion.chunk format OpenAI, diakhiri data: [DONE]:
data: {"id":"chatcmpl-12345","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
data: {"id":"chatcmpl-12345","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"Halo"},"finish_reason":null}]}
data: {"id":"chatcmpl-12345","object":"chat.completion.chunk","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
data: [DONE]
Catatan: streaming di sini "simulated" -- balasan tetap ditunggu penuh dari model
dulu di belakang layar, baru dikirim berangsur sbg potongan SSE. SDK resmi OpenAI (yang baca lewat
for await (const chunk of stream)) tetap bekerja apa adanya, cuma waktu ke
token pertama sama dengan mode non-streaming (bukan lebih cepat).
Daftar model yang tersedia untuk API ini (juga butuh header Authorization).
{
"object": "list",
"data": [
{ "id": "hermes-agent", "object": "model", "owned_by": "sdn-ai-center" },
{ "id": "hermes-longcat", "object": "model", "owned_by": "sdn-ai-center" },
{ "id": "hermes-stepfun", "object": "model", "owned_by": "sdn-ai-center" },
{ "id": "hermes-deepseek", "object": "model", "owned_by": "sdn-ai-center" },
{ "id": "hermes-deepseek-pro", "object": "model", "owned_by": "sdn-ai-center" }
]
}
curl https://ai.suryadigital.id/v1/chat/completions \
-H "Authorization: Bearer sk-xxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"messages": [{ "role": "user", "content": "Halo, siapa kamu?" }]
}'
// npm install openai
import OpenAI from "openai";
const client = new OpenAI({
apiKey: process.env.SDN_AI_API_KEY, // API key dari /api_keys.php
baseURL: "https://ai.suryadigital.id/v1", // satu-satunya baris yang beda dari pakai OpenAI langsung
});
const res = await client.chat.completions.create({
messages: [{ role: "user", content: "Halo, siapa kamu?" }],
});
console.log(res.choices[0].message.content);
# pip install openai
from openai import OpenAI
client = OpenAI(
api_key="sk-xxxxxxxxxxxx",
base_url="https://ai.suryadigital.id/v1",
)
res = client.chat.completions.create(
messages=[{"role": "user", "content": "Halo, siapa kamu?"}],
)
print(res.choices[0].message.content)
<?php
$ch = curl_init('https://ai.suryadigital.id/v1/chat/completions');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer sk-xxxxxxxxxxxx',
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode([
'messages' => [['role' => 'user', 'content' => 'Halo, siapa kamu?']],
]),
]);
$response = json_decode(curl_exec($ch), true);
echo $response['choices'][0]['message']['content'];
Dipotong dari saldo AI Center Anda yang sama (top up sekali, dipakai untuk Chat web maupun AI API). Markup AI API terpisah dari markup Chat web di dashboard.
| Provider | Model ID (model) | Harga Input /1 juta token | Harga Output /1 juta token | Estimasi per Panggilan |
|---|---|---|---|---|
| Hermes Agent | hermes-agent | Rp0 | Rp0 | ~Rp0 |
| Hermes Agent | hermes-longcat | Rp926 | Rp1.851 | ~Rp2 |
| Hermes Agent | hermes-stepfun | Rp926 | Rp1.851 | ~Rp2 |
| Hermes Agent | hermes-deepseek | Rp5.782 | Rp17.346 | ~Rp9 |
| Hermes Agent | hermes-deepseek-pro | Rp17.346 | Rp52.037 | ~Rp27 |
Maksimal 30 request/menit per API key untuk POST /v1/chat/completions.
Lebih dari itu, Anda menerima status 429.
Batas keselamatan per request: total panjang pesan maksimal 200.000 karakter, maksimal 100 pesan,
max_tokens dijepit ke 8.192 dan temperature ke rentang 0–2.
Maksimal 3 request bersamaan per key.
| Status | error.code | Arti |
|---|---|---|
| 401 | missing_api_key / invalid_api_key | Header Authorization tidak ada, key salah, atau sudah dinonaktifkan. |
| 400 | missing_messages / invalid_messages | Field messages kosong atau formatnya salah. |
| 400 | content_blocked | Pesan mengandung kata kunci yang tidak diizinkan (tidak dikenai biaya). |
| 400 | context_length_exceeded / too_many_messages | Total panjang pesan atau jumlah pesan melebihi batas per request. |
| 400 | invalid_temperature / invalid_max_tokens | Tipe temperature atau max_tokens bukan angka. |
| 404 | model_not_found | Nilai model tidak dikenali/tidak aktif — lihat GET /v1/models. |
| 429 | insufficient_balance | Saldo AI Center Anda tidak cukup — top up dulu, atau kecilkan max_tokens/konteks. Saldo harus menutup perkiraan biaya maksimum permintaan (input + max_tokens penuh). |
| 429 | (rate limit) | Lebih dari 30 request/menit dari key yang sama. |
| 429 | too_many_concurrent_requests | Terlalu banyak request yang sedang diproses bersamaan dari key yang sama (maks 3). |
| 502 | upstream_error | Gagal memanggil model AI di belakang layar — coba lagi. |
Semua error berbentuk {"error":{"message","type","code"}}, sama seperti OpenAI, supaya penanganan error di SDK Anda tetap bekerja apa adanya.