BestPrivateAI API — referans

Tek bir OpenAI uyumlu endpoint, tek bir model, tek bir anahtar. Kodunuz zaten /v1/chat/completions ile konuşuyorsa, base URL ile anahtarı değiştirin, bizimle konuşsun.

Base URL ve kimlik doğrulama

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

Anahtarlar anahtarlar sayfası üzerinde oluşturulur. Bir anahtar sadece oluşturulduğu anda gösterilir; biz bir hash ve son altı karakterini saklarız. Sadece HTTPS üzerinden ve sadece Authorization başlığında gönderin — asla bir URL içinde değil.

Her şey JSON (Content-Type: application/json). Yanıtlar OpenAI şemasını kullanır, bu yüzden resmi openai SDK'ları ve OpenAI uyumlu her istemci değişiklik yapılmadan çalışır.

Modeller

GET /v1/models

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

Tek bir model var: notrack-uncensored — kendi eşlik eden modelimiz, kendi donanımımızda çalışır. model olarak ne gönderirseniz ona yönlendirilir; günlüklerinizin bizimkilerle eşleşmesi için genel id'yi kullanın.

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
}

Yanıt — standart şekil, usage içinde gerçek token sayılarıyla (faturalandırıldığınız şey budur):

{
  "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 }
}

Sistem isteminiz konuşmayı yönetir. Tam olarak tek bir satır ekleriz — modelin kimliği (notrack-uncensored olduğu, BestPrivateAI tarafından yapıldığı) — ve başka hiçbir şey: kural yok, konu filtresi yok. Sistem mesajınız onu takip eder ve persona, stil ve her şeyin kalanına karar verir. Tek istisna İçerik politikası içindedir.

Akış (Streaming)

"stream": true ayarlayın ve OpenAI'daki gibi sunucu tarafından gönderilen olayları (server-sent events) okuyun. Son parça usage taşır (siz stream_options isteseniz de istemeseniz de her zaman dahil ederiz), ardından data: [DONE] gelir.

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]

Parametreler

AlanNotlar
messagesZorunlu. system, user, assistant rolleri. Şimdilik yalnızca metin — görsel parçalar reddedilir.
modelnotrack-uncensored kullanın.
streamSSE için true. stream_options.include_usage her zaman açıktır.
max_tokensCompletion üzerindeki sınır. Prompt + completion 64,000 tokenlık pencereye sığmalıdır.
temperature, top_p, stop, presence_penalty, frequency_penalty, seed, nOpenAI'daki gibi modele iletilir. temperature göndermezseniz 0.85 kullanırız, sohbetimizle aynı. n > 1 çıktı maliyetini çarpar.
tools, tool_choiceDesteklenenler: auto, none, required veya adı belirtilmiş bir fonksiyon. Yanıt tool_calls ve finish_reason: "tool_calls" taşır; sonucu bir role: "tool" mesajı olarak geri gönderin. Araçlar mevcut olduğunda akış halindeki bir yanıt token token değil, çağrı başına tek bir parça olarak gelir.
response_format{"type": "json_object"} desteklenir (istediğiniz JSON'u prompt içinde belirtin). json_schema ve eski functions alanı desteklenmez.

Limitler ve yanıt başlıkları

LimitDeğerAşıldığında
Anahtar başına eşzamanlı istek8429 concurrency
Anahtar başına dakikadaki istek300429 rate_limit
Bağlam penceresi (prompt + completion)64,000 token400 context_limit — geçmişi kısaltın ve yeniden deneyin
Anahtar başına günlük harcama (isteğe bağlı)anahtarlar sayfasında sizin tarafınızdan ayarlanır402 key_daily_cap 00:00 UTC'ye kadar

Her başarılı yanıt şunları taşır:

BaşlıkAnlamı
X-Request-IdDestek ekibine yazarken bunu belirtin; bir istekle ilgili sakladığımız tek şey budur.
X-NoTrack-Balance-USDBu isteğin önce dolar olarak veresiyenizden tahsil edilen tutar.
X-RateLimit-Limit-RequestsBu anahtar için dakikada izin verilen istek sayısı.
X-RateLimit-Limit-ConcurrencyBu anahtar için izin verilen paralel istek sayısı.
X-NoTrack-Content-FlagSadece bir içerik reddinde: minor_in_sexual_context veya child_safety.

Hatalar

Hatalar sabit bir type içeren JSON'dır; message insanlar içindir ve değişebilir.

{ "error": { "type": "no_credit", "message": "no credit left on this account — top up at bestprivateai.com/api-keys" } }
HTTPtypeNe yapmalı
400bodyGeçersiz JSON veya messages yok.
400context_limit64,000 tokenlık pencere için prompt çok uzun. Eski turları kaldırın.
400content_policy + X-NoTrack-Content-Flag: minor_in_sexual_contextSahne cinsel içerikli okunuyor ve bir karakter reşit olmayan biri gibi okunuyor. Karakterleri açık ve tartışmasız biçimde yetişkin yapıp yeniden gönderin; ücretlendirilmez.
401auth, invalid_key, key_revoked, key_expiredAnahtarı düzeltin veya değiştirin.
402no_creditBakiye sıfır. Bakiye ekleyin; istekler hemen devam eder.
402key_daily_capBu anahtar sizin belirlediğiniz günlük tavana ulaştı. Tavanı yükseltin veya 00:00 UTC'yi bekleyin.
403content_policy + X-NoTrack-Content-Flag: child_safetyReddedildi ve ücretlendirilmedi. Bkz. İçerik politikası.
429rate_limit, concurrencyYavaşlayın ve yeniden deneyin; iki X-RateLimit-* başlığına uyun.
502upstreamModel yanıt vermedi. Geri çekilmeyle yeniden deneyin; ücretlendirilmez.
503billing, safetyBağımlılıklarımızdan biri çalışmıyor. Birkaç saniye içinde yeniden deneyin; ücretlendirilmez.

Faturalandırma

Ön ödemeli bakiye, her yanıtın gerçek usage üzerinden token bazında ücretlendirilir: 1M girdi token için $0.25, 1M çıktı token için $1.00. Girdi, gönderdiğiniz her şeydir (sistem istemi, geçmiş, yeni mesaj); çıktı, modelin yazdığıdır.

Persona — çıplak model veya BestPrivateAI'in karakteri

Her anahtarın anahtarlar sayfasında seçilen ve her zaman değiştirilebilen bir stili vardır:

Bir istek, anahtarın ayarını bir alanla veya bir model son ekiyle (sadece bir model adı ayarlayabilen istemciler için) geçersiz kılabilir:

{ "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

Persona adları: notrack (sade karakter), concise, detailed, creative (sohbetin sunduğu aynı varyantlar), bare. X-NoTrack-Persona yanıt başlığı hangisinin uygulandığını söyler.

İçerik politikası

Hiçbir sistem istemi eklemiyoruz ve hiçbir konu filtresi çalıştırmıyoruz. Yetişkin kurgu, karanlık temalar, ağır dil, kurgusal şiddet — model yazıldığı gibi yanıt verir. Kodda uygulanan ve kapatılamayan tek bir kural var: reşit olmayan biriyle ilgili cinsel herhangi bir şey reddedilir.

Bir anahtarda tekrarlanan 403'lar önce anahtarın, sonra hesabın kapatılmasına yol açar. Tam metin Kabul Edilebilir Kullanım politikası içindedir.

Gizlilik

Promptlar ve completion'lar diske yazılmaz — ne gateway tarafından, ne de model sunucuları tarafından. İstek başına sakladığımız şey istek id'si, anahtar id'si, token sayıları ve fiyattır, çünkü fatura bunlardan oluşur. Güvenlik reddi olayları metin olmadan, kategoriye göre kaydedilir. Hiçbir üçüncü taraf model sağlayıcısı trafiğinizi asla görmez: model, kiraladığımız ve kontrol ettiğimiz donanımda çalışır.

İstemciler ve SDK'lar

BestPrivateAI web sitesi ve BestPrivateAI uygulaması kendi sohbetimizdir — bir API anahtarı alanları yoktur ve asla olmayacak. Bir anahtar diğer programlar içindir: aşağıdaki istemcilerden birine yapıştırın veya kendi kodunuza.

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 açık. Bağlam boyutunu 64,000 tokenda veya altında tutun.

Chatbox

Settings → Model Provider → Add → Add Custom Provider, mod OpenAI API Compatible → base URL ve anahtarı yapıştırın, ardından model olarak notrack-uncensored ekleyin.

NextChat

Settings → Custom Endpoint'yı açın (OpenAI uyumlu) → base URL ve anahtar, sonra model adını model alanına yazın.

Cherry Studio

Settings → Model Providers → Add Provider → OpenAI yazın → base URL ve anahtar, sonra "Add model" → notrack-uncensored.

LobeChat

Settings → AI Service Provider → OpenAI → custom API endpoint'yı etkinleştirin, base URL ve anahtarı yapıştırın ve modeli model listesine ekleyin.

Başka bir şey

LangChain, LlamaIndex, Open WebUI, Continue, JanitorAI proxy ayarları, curl — "OpenAI uyumlu" veya "özel base URL" seçeneği olan herhangi bir istemci.

Yukarıdaki menü ifadeleri uygulama sürümleri arasında değişir — bir etiket tam olarak eşleşmiyorsa, "custom", "OpenAI-compatible" veya "base URL"den bahseden ayarı arayın.

Bir istemci bağlanmıyorsa

Anahtarlar

Sorular veya incelenecek bir istek id'si: destek · bestprivateai.com/support.