OverviewAPI ReferenceTutorialChangelogStatus
API Reference

SahabatMobile API Reference

REST API yang kompatibel OpenAI. Base URL untuk semua endpoint di bawah:

https://sahabatmobile.com/api/v1

Autentikasi

Sertakan API key di setiap request. Buat key di /ai/api-keys (key personal, awalan sk-) atau /ai/plan-details (key langganan paket, mis. sk-minimax-...). Tiga cara yang didukung:

CaraContohKeterangan
Authorization headerBearer sk-...Disarankan
x-api-key headerx-api-key: sk-...Untuk tool yang mengirim header ini (mis. OpenCode)
Query/body?apiKey=sk-...Darurat saja — key bisa bocor di log
401 Invalid API key berarti key salah, dicabut, atau paket langganannya sudah tidak aktif. Buat key baru dan coba lagi.

POST /chat/completions

POST

/api/v1/chat/completions

Endpoint utama. Menerima format OpenAI Chat Completions dan meneruskannya ke provider model yang dipilih. Kredit/kuota terpotong per token aktual.

Parameter

FieldTipeWajibKeterangan
modelstringYaSlug model, mis. google/gemini-2.5-flash. Daftar live via GET /models
messagesarrayYaMinimal 1. Role: system, user, assistant, developer, tool, tool_result
max_tokensintegerTidakDefault 1024, maks 100000
temperaturenumberTidak0–2, default 0.7
streambooleanTidakDefault false. true = SSE chunk (lihat Streaming)
tools, tool_choicearrayTidakHanya model yang mendukung function calling (mis. MiniMax-M3)
reasoning_splitbooleanTidakKhusus MiniMax M3 (interleaved thinking)

Contoh request

curl https://sahabatmobile.com/api/v1/chat/completions \
  -H "Authorization: Bearer sk-ISI_KEY_ANDA" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "google/gemini-2.5-flash",
    "messages": [
      {"role": "system", "content": "Kamu asisten yang ringkas."},
      {"role": "user", "content": "Apa itu QRIS?"}
    ],
    "max_tokens": 300,
    "temperature": 0.7
  }'

Contoh respons sukses (200)

{
  "id": "chatcmpl-abc123",
  "object": "chat.completion",
  "created": 1726000000,
  "model": "google/gemini-2.5-flash",
  "choices": [{
    "index": 0,
    "message": {"role": "assistant", "content": "QRIS adalah ..."},
    "finish_reason": "stop"
  }],
  "usage": {"prompt_tokens": 25, "completion_tokens": 40, "total_tokens": 65}
}
Blok <think> pada model reasoning otomatis dibersihkan — content selalu siap tampil.

Streaming (SSE)

Kirim "stream": true untuk menerima jawaban kata-per-kata. Format Server-Sent Events:

data: {"id":"chatcmpl-x","object":"chat.completion.chunk","model":"...","choices":[{"index":0,"delta":{"content":"Halo"},"finish_reason":null}]}

data: {"id":"chatcmpl-x","object":"chat.completion.chunk","model":"...","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}

data: [DONE]

Gabungkan semua choices[0].delta.content hingga data: [DONE]. Contoh lengkap: Tutorial Streaming.

GET /models

GET

/api/v1/models

Mengembalikan daftar model aktif dalam format OpenAI ({object: "list", data: [{id, object: "model", owned_by, name}]}). Pakai ini agar aplikasi Anda selalu sinkron saat ada model baru — jangan hardcode daftar model.

curl https://sahabatmobile.com/api/v1/models \
  -H "Authorization: Bearer sk-ISI_KEY_ANDA"

Endpoint Plugin WordPress

Khusus plugin WordPress resmi (throttle 30–60 req/menit + batas domain & harian per paket):

EndpointFungsi
POST /api/v1/plugin/checkValidasi key + domain. Body: domain, version?. Balikan status: active | update_required | domain_limit
POST /api/v1/plugin/chatChat via plugin. Body: messages[], model?, domain
GET /api/v1/plugin/updateCek versi plugin terbaru

Error Codes

Semua error berbentuk {"error": {"message": "...", "type": "...", "code": "...?"}}:

HTTPType / CodeArtinya & solusi
400invalid_request_errorParameter tidak valid (mis. messages kosong)
400model_no_tool_supportModel tidak mendukung tool calling — pindah ke MiniMax-M3
401invalid_request_errorKey hilang/salah/dicabut/paket tidak aktif — buat key baru
403model_requires_packageModel mimo-*/minimax-* khusus pelanggan paket
403model_not_in_packageModel di luar paket Anda — ganti model atau upgrade paket
429quota_exceeded (5h/weekly/monthly_exhausted)Kuota habis — tunggu reset_in atau upgrade
429rate_limit_exceededMelebihi X request/menit — perlambat + backoff
500server_errorProvider belum dikonfigurasi / gangguan — hubungi support
502provider_errorProvider upstream error — aman untuk retry dengan backoff

SDK & Contoh Kode

API kompatibel OpenAI — library resmi OpenAI bisa langsung dipakai dengan mengganti base_url.

Python

from openai import OpenAI

client = OpenAI(
    base_url="https://sahabatmobile.com/api/v1",
    api_key="sk-ISI_KEY_ANDA",
)
resp = client.chat.completions.create(
    model="google/gemini-2.5-flash",
    messages=[{"role": "user", "content": "Halo!"}],
)
print(resp.choices[0].message.content)

Node.js

import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "https://sahabatmobile.com/api/v1",
  apiKey: process.env.SM_API_KEY,
});

const c = await client.chat.completions.create({
  model: "google/gemini-2.5-flash",
  messages: [{ role: "user", content: "Halo!" }],
});
console.log(c.choices[0].message.content);

PHP (Laravel)

$res = Http::withToken(config('services.sm.key'))
    ->timeout(60)
    ->post('https://sahabatmobile.com/api/v1/chat/completions', [
        'model' => 'google/gemini-2.5-flash',
        'messages' => [['role' => 'user', 'content' => 'Halo!']],
    ]);

echo $res->json('choices.0.message.content');

Panduan langkah-demi-langkah: Tutorial Developer →

Limit & Kuota

FAQ Developer

Apakah bisa dipakai dengan OpenCode / Cursor / Claude Code?
Ya — set base URL https://sahabatmobile.com/api/v1 dan API key Anda. Panduan per tool ada di dokumentasi utama.

Model apa yang murah untuk development?
Ambil daftar via GET /models dan lihat harga per token. Model flash/lite umumnya paling hemat.

Kenapa 403 padahal key benar?
Kemungkinan besar model eksklusif paket atau di luar paket Anda. Coba model pay-as-you-go seperti google/gemini-2.5-flash, atau cek plan details.

Apakah ada webhook untuk pemakaian?
Belum. Pantau pemakaian via dasbor /ai/usage dan riwayat transaksi.

Butuh bantuan integrasi?
Hubungi WhatsApp support atau lihat paket Bisnis untuk SLA & dedicated support.

© 2026 SahabatMobile — PT BINA SEJAHTERA INOVASI DIGITAL Docs · API · Tutorial · Changelog · Status