BestPrivateAI API — referensi

Satu endpoint kompatibel OpenAI, satu model, satu key. Jika kode Anda sudah berbicara dengan /v1/chat/completions, ubah base URL dan key-nya, lalu kode itu akan berbicara dengan kami.

Base URL & autentikasi

Base URL:  https://api.bestprivateai.com/v1
Header:    Authorization: Bearer sk-…

Key dibuat di halaman key. Sebuah key ditampilkan sekali, saat dibuat; kami menyimpan hash-nya dan enam karakter terakhirnya. Kirim hanya lewat HTTPS dan hanya di header Authorization — jangan pernah di URL.

Semuanya JSON (Content-Type: application/json). Respons menggunakan skema OpenAI, sehingga SDK resmi openai dan setiap klien yang kompatibel dengan OpenAI berfungsi tanpa perubahan.

Model

GET /v1/models

{ "object": "list",
  "data": [ { "id": "notrack-uncensored", "object": "model", "owned_by": "notrack" } ] }

Hanya ada satu model, notrack-uncensored: tune companion buatan kami sendiri, dijalankan di hardware kami sendiri. Apa pun yang Anda kirim sebagai model akan dirutekan ke model ini; gunakan id publiknya agar log Anda cocok dengan log kami.

Chat completions

POST /v1/chat/completions

{
  "model": "notrack-uncensored",
  "messages": [
    { "role": "system",    "content": "You are Mira, a wry bartender in 1920s Berlin." },
    { "role": "user",      "content": "Evening. What's good tonight?" }
  ],
  "max_tokens": 400,
  "temperature": 0.9
}

Respons — bentuk standar, dengan jumlah token sebenarnya di usage (itulah yang menjadi dasar penagihan Anda):

{
  "id": "chatcmpl-…", "object": "chat.completion", "model": "notrack-uncensored",
  "choices": [ { "index": 0, "finish_reason": "stop",
                 "message": { "role": "assistant", "content": "…" } } ],
  "usage": { "prompt_tokens": 41, "completion_tokens": 118, "total_tokens": 159 }
}

System prompt Anda yang mengatur percakapan. Kami menambahkan tepat satu baris di depan — identitas model (bahwa ini adalah notrack-uncensored, buatan BestPrivateAI) — dan tidak ada yang lain: tanpa aturan, tanpa filter topik. Pesan sistem Anda mengikutinya dan menentukan persona, gaya, dan sisanya. Satu-satunya pengecualian ada di Kebijakan konten.

Streaming

Set "stream": true dan baca server-sent events, sama seperti pada OpenAI. Chunk terakhir membawa usage (kami selalu menyertakannya, baik Anda meminta stream_options atau tidak), lalu data: [DONE].

data: {"id":"chatcmpl-…","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"Ev"}}]}
data: {"id":"chatcmpl-…","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"ening"}}]}
…
data: {"id":"chatcmpl-…","object":"chat.completion.chunk","choices":[],"usage":{"prompt_tokens":41,"completion_tokens":118,"total_tokens":159}}
data: [DONE]

Parameter

FieldCatatan
messagesWajib. Role system, user, assistant. Hanya teks untuk saat ini — bagian gambar akan ditolak.
modelGunakan notrack-uncensored.
streamtrue untuk SSE. stream_options.include_usage selalu aktif.
max_tokensBatas untuk completion. Prompt + completion harus muat dalam jendela 64,000 token.
temperature, top_p, stop, presence_penalty, frequency_penalty, seed, nDiteruskan ke model seperti pada OpenAI. Jika Anda tidak mengirim temperature, kami memakai 0,85, sama seperti chat kami. n > 1 melipatgandakan biaya output.
tools, tool_choiceDidukung: auto, none, required, atau fungsi bernama. Balasan membawa tool_calls dan finish_reason: "tool_calls"; kirim balik hasilnya sebagai pesan role: "tool". Jika ada tool, balasan streaming datang sebagai satu chunk per panggilan, bukan token demi token.
response_format{"type": "json_object"} didukung (sebutkan di prompt JSON seperti apa yang Anda inginkan). json_schema dan field lama functions tidak didukung.

Limit & header respons

LimitNilaiJika terlampaui
Request bersamaan per key8429 concurrency
Request per menit per key300429 rate_limit
Jendela konteks (prompt + completion)64,000 token400 context_limit — pangkas riwayat dan coba lagi
Pengeluaran harian per key (opsional)diatur oleh Anda di halaman key402 key_daily_cap sampai 00:00 UTC

Setiap respons yang berhasil membawa:

HeaderArti
X-Request-IdSebutkan ini saat menulis ke support; ini satu-satunya hal yang kami simpan tentang sebuah request.
X-NoTrack-Balance-USDSaldo Anda sebelum request ini ditagihkan, dalam dolar.
X-RateLimit-Limit-RequestsRequest per menit yang diizinkan untuk key ini.
X-RateLimit-Limit-ConcurrencyRequest paralel yang diizinkan untuk key ini.
X-NoTrack-Content-FlagHanya pada penolakan konten: minor_in_sexual_context atau child_safety.

Error

Error berupa JSON dengan type yang stabil; message untuk manusia dan dapat berubah.

{ "error": { "type": "no_credit", "message": "no credit left on this account — top up at bestprivateai.com/api-keys" } }
HTTPtypeYang harus dilakukan
400bodyJSON tidak valid atau tidak ada messages.
400context_limitPrompt terlalu panjang untuk jendela 64,000 token. Buang giliran yang lebih lama.
400content_policy + X-NoTrack-Content-Flag: minor_in_sexual_contextSkenario terbaca seksual dan sebuah karakter terbaca sebagai anak di bawah umur. Jadikan karakter secara jelas dewasa dan kirim ulang; tidak ditagih.
401auth, invalid_key, key_revoked, key_expiredPerbaiki atau ganti key.
402no_creditSaldo nol. Isi ulang; request dilanjutkan segera.
402key_daily_capKey ini mencapai batas harian yang Anda tetapkan. Naikkan batasnya atau tunggu hingga 00:00 UTC.
403content_policy + X-NoTrack-Content-Flag: child_safetyDitolak dan tidak ditagih. Lihat Kebijakan konten.
429rate_limit, concurrencyPerlambat dan coba lagi; patuhi kedua header X-RateLimit-*.
502upstreamModel tidak merespons. Coba lagi dengan backoff; tidak ditagih.
503billing, safetySalah satu dependensi kami sedang down. Coba lagi dalam beberapa detik; tidak ditagih.

Penagihan

Saldo prabayar, ditagih per token berdasarkan usage sebenarnya dari setiap respons: $0.25 per 1 juta token input, $1.00 per 1 juta token output. Input adalah semua yang Anda kirim (system prompt, riwayat, pesan baru); output adalah yang ditulis model.

Persona — model polos atau karakter BestPrivateAI

Setiap key memiliki gaya, dipilih di halaman key dan dapat diganti kapan saja:

Sebuah request dapat menimpa setelan key, baik dengan field maupun dengan suffix model (untuk klien yang hanya bisa mengatur nama model):

{ "model": "notrack-uncensored", "notrack": { "persona": "notrack" }, "messages": [ … ] }

{ "model": "notrack-uncensored:notrack", "messages": [ … ] }      // same thing, by model name
{ "model": "notrack-uncensored:bare",    "messages": [ … ] }      // force the bare model on a persona key

Nama persona: notrack (karakter polos), concise, detailed, creative (varian yang sama yang ditawarkan chat), bare. Header respons X-NoTrack-Persona menunjukkan mana yang diterapkan.

Kebijakan konten

Kami tidak menambahkan system prompt dan tidak menjalankan filter topik apa pun. Fiksi dewasa, tema gelap, bahasa kasar, kekerasan dalam fiksi — model menjawab sesuai yang ditulis. Satu aturan diberlakukan dalam kode dan tidak dapat dimatikan: apa pun yang bersifat seksual yang melibatkan anak di bawah umur akan ditolak.

403 yang berulang pada sebuah key akan berujung pada penutupan key, lalu akun. Teks lengkapnya ada di Acceptable Use policy.

Privasi

Prompt dan completion tidak ditulis ke disk — tidak oleh gateway, tidak oleh server model. Yang kami simpan per request adalah id request, id key, jumlah token, dan harga, karena itulah dasar penagihan. Penolakan keamanan dicatat berdasarkan kategori, tanpa teksnya. Tidak ada penyedia model pihak ketiga yang pernah melihat traffic Anda: model berjalan di hardware yang kami sewa dan kendalikan sendiri.

Klien & SDK

Situs BestPrivateAI dan aplikasi BestPrivateAI adalah chat kami sendiri — keduanya tidak memiliki field untuk API key dan tidak akan pernah memilikinya. Sebuah key ditujukan untuk program lain: tempelkan ke salah satu klien di bawah ini, atau ke kode Anda sendiri.

Python

from openai import OpenAI
client = OpenAI(base_url="https://api.bestprivateai.com/v1", api_key="sk-…")
stream = client.chat.completions.create(model="notrack-uncensored",
    messages=[{"role": "user", "content": "Hello"}], stream=True)
for chunk in stream:
    if chunk.choices and chunk.choices[0].delta.content:
        print(chunk.choices[0].delta.content, end="")

Node.js

import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://api.bestprivateai.com/v1", apiKey: process.env.API_KEY });
const r = await client.chat.completions.create({ model: "notrack-uncensored",
  messages: [{ role: "user", content: "Hello" }] });
console.log(r.choices[0].message.content);

SillyTavern

API Connections → API: Chat Completion → Source: Custom (OpenAI-compatible) → Custom Endpoint https://api.bestprivateai.com/v1 → Custom API Key → Connect → Model notrack-uncensored. Streaming aktif. Jaga ukuran konteks pada atau di bawah 64,000 token.

Chatbox

Settings → Model Provider → Add → Add Custom Provider, mode OpenAI API Compatible → tempelkan base URL dan key, lalu tambahkan notrack-uncensored sebagai model.

NextChat

Settings → aktifkan Custom Endpoint (kompatibel OpenAI) → base URL dan key, lalu ketik nama model di field model.

Cherry Studio

Settings → Model Providers → Add Provider → ketik OpenAI → base URL dan key, lalu "Add model" → notrack-uncensored.

LobeChat

Settings → AI Service Provider → OpenAI → aktifkan custom API endpoint, tempelkan base URL dan key, lalu tambahkan model ke daftar model.

Lainnya

LangChain, LlamaIndex, Open WebUI, Continue, setelan proxy JanitorAI, curl — klien apa pun dengan opsi "kompatibel OpenAI" atau "base URL custom".

Penulisan menu di atas berubah antar versi aplikasi — jika sebuah label tidak cocok tepat, cari setelan yang menyebut "custom", "OpenAI-compatible", atau "base URL".

Jika klien tidak bisa terhubung

Key

Pertanyaan atau id request yang ingin diperiksa: support · bestprivateai.com/support.