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
| Alan | Notlar |
|---|---|
messages | Zorunlu. system, user, assistant rolleri. Şimdilik yalnızca metin — görsel parçalar reddedilir. |
model | notrack-uncensored kullanın. |
stream | SSE için true. stream_options.include_usage her zaman açıktır. |
max_tokens | Completion üzerindeki sınır. Prompt + completion 64,000 tokenlık pencereye sığmalıdır. |
temperature, top_p, stop, presence_penalty, frequency_penalty, seed, n | OpenAI'daki gibi modele iletilir. temperature göndermezseniz 0.85 kullanırız, sohbetimizle aynı. n > 1 çıktı maliyetini çarpar. |
tools, tool_choice | Desteklenenler: 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ı
| Limit | Değer | Aşıldığında |
|---|---|---|
| Anahtar başına eşzamanlı istek | 8 | 429 concurrency |
| Anahtar başına dakikadaki istek | 300 | 429 rate_limit |
| Bağlam penceresi (prompt + completion) | 64,000 token | 400 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ır | 402 key_daily_cap 00:00 UTC'ye kadar |
Her başarılı yanıt şunları taşır:
| Başlık | Anlamı |
|---|---|
X-Request-Id | Destek ekibine yazarken bunu belirtin; bir istekle ilgili sakladığımız tek şey budur. |
X-NoTrack-Balance-USD | Bu isteğin önce dolar olarak veresiyenizden tahsil edilen tutar. |
X-RateLimit-Limit-Requests | Bu anahtar için dakikada izin verilen istek sayısı. |
X-RateLimit-Limit-Concurrency | Bu anahtar için izin verilen paralel istek sayısı. |
X-NoTrack-Content-Flag | Sadece 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" } }
| HTTP | type | Ne yapmalı |
|---|---|---|
| 400 | body | Geçersiz JSON veya messages yok. |
| 400 | context_limit | 64,000 tokenlık pencere için prompt çok uzun. Eski turları kaldırın. |
| 400 | content_policy + X-NoTrack-Content-Flag: minor_in_sexual_context | Sahne 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. |
| 401 | auth, invalid_key, key_revoked, key_expired | Anahtarı düzeltin veya değiştirin. |
| 402 | no_credit | Bakiye sıfır. Bakiye ekleyin; istekler hemen devam eder. |
| 402 | key_daily_cap | Bu anahtar sizin belirlediğiniz günlük tavana ulaştı. Tavanı yükseltin veya 00:00 UTC'yi bekleyin. |
| 403 | content_policy + X-NoTrack-Content-Flag: child_safety | Reddedildi ve ücretlendirilmedi. Bkz. İçerik politikası. |
| 429 | rate_limit, concurrency | Yavaşlayın ve yeniden deneyin; iki X-RateLimit-* başlığına uyun. |
| 502 | upstream | Model yanıt vermedi. Geri çekilmeyle yeniden deneyin; ücretlendirilmez. |
| 503 | billing, safety | Bağı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.
- İlk anahtarınız $0.50 ücretsiz bakiye ile gelir, 7 gün geçerlidir — entegrasyon ve test için yeterli. Bir anahtar için onaylanmış bir e-posta gerekir ("bakiye tükeniyor" bildirimlerinin gideceği yer burasıdır). Ücretli bakiye asla sona ermez.
- Bakiye sona ermez, abonelik yoktur ve kendiliğinden hiçbir şey yenilenmez. Anahtarlar sayfasında kart veya USDT/USDC ile bakiye yükleyin.
- Reddedilen (
4xx) veya başarısız olan (5xx) istekler için hiçbir ücret alınmaz. Bir istek, yanıttan sonra bir kez veX-Request-Id'sine göre ücretlendirilir. - Bakiye tükendiğinde → siz bakiye yükleyene kadar
402 no_credit. Sızdırılan bir anahtarın hesabı boşaltamaması için her anahtara günlük bir tavan koyun. - Krediler, satın almadan sonraki 24 saat içinde kullanılmadıysa iade edilebilir ya da daha sonra bir plana uygulanabilir. Bkz. Krediler ve iadeler.
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:
- Ham (varsayılan) — sistem isteminiz promptun tamamıdır. Biz bir satır kimlik ekleriz, başka hiçbir şey eklemeyiz.
- BestPrivateAI personası — bestprivateai.com üzerindeki sohbetin karakteri ve stili: doğrudan, filtresiz, ahlak dersi vermeyen, kullanıcının dilinde yanıt veren. Aynı model, aynı fiyat, aynı içerik politikası; sadece mesajlarınızın önündeki prompt değişir. Kendi sistem mesajınız yine onu takip eder ve onu ayarlayabilir.
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.
403 child_safety— istek bir çocukla ilgili cinsel içerik arıyordu. Reddedildi, ücretlendirilmedi, bir güvenlik olayı olarak kaydedildi.400 minor_in_sexual_context— sahne cinsel içerikli ve bir karakter 18 yaşından küçük gibi okunuyor (yaş belirtilmiş, okul ortamı, "kız/erkek çocuk" çerçevelemesi). Bir yasak değil: yaşları ve çerçevelemeyi açık ve tartışmasız biçimde yetişkin yapıp yeniden gönderin.
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
- 401 / "invalid API key" — anahtar hiç ulaşmadı. İstemcinin
Authorization: Bearer sk-…'yı önek dahil tüm anahtarla gönderdiğini doğrulayın. - 404 / bilinmeyen endpoint — istemciler
/v1'yı kendilerinin ekleyip eklemeyeceği konusunda farklıdır.https://api.bestprivateai.com/v1404 veriyorsa, bunun yerine base URL olarakhttps://api.bestprivateai.com'yi deneyin (veya tam tersi). - "The Responses API is not supported yet" — bazı daha yeni istemciler varsayılan olarak OpenAI'nin Responses API'sini kullanır. Biz sadece Chat Completions sunuyoruz; istemciyi o moda geçirin.
- Boş model listesi — bazı istemciler bunu yalnızca geçerli bir anahtar kontrolünden sonra doldurur.
notrack-uncensored'yı elle girin. - Bir Ollama / llama.cpp istemcisinde hiçbir şey olmuyor — bunlar kendi protokollerini konuşur, OpenAI uyumlu değildir. Bunun yerine yukarıdaki istemcilerden birini kullanın.
Anahtarlar
- Hesap başına en fazla 20 aktif anahtar. Her uygulamaya kendi anahtarını ve kendi günlük tavanını verin.
- İsteğe bağlı son kullanma tarihi; bir anahtarı iptal etmek onu hemen durdurur ve geri alınamaz — bunun yerine yeni bir anahtar oluşturun.
- Anahtarlar sayfası anahtar başına harcamayı, son kullanımı ve hesabın 30 günlük toplamlarını gösterir.
Sorular veya incelenecek bir istek id'si: destek · bestprivateai.com/support.