BestPrivateAI API — referință
Un endpoint compatibil OpenAI, un model, o cheie. Dacă codul tău deja comunică cu /v1/chat/completions, schimbă URL-ul de bază și cheia și va comunica cu noi.
URL de bază și autentificare
Base URL: https://api.bestprivateai.com/v1
Header: Authorization: Bearer sk-…
Cheile se creează pe pagina de chei. O cheie este afișată o singură dată, la creare; noi stocăm un hash și ultimele șase caractere. Trimite-o doar prin HTTPS și doar în header-ul Authorization — niciodată într-un URL.
Totul este JSON (Content-Type: application/json). Răspunsurile folosesc schema OpenAI, așa că SDK-urile oficiale openai și orice client compatibil cu OpenAI funcționează neschimbate.
Modele
GET /v1/models
{ "object": "list",
"data": [ { "id": "notrack-uncensored", "object": "model", "owned_by": "notrack" } ] }
Există un model, notrack-uncensored: propria noastră versiune de companion, servit pe propriul nostru hardware. Orice trimiți ca model este direcționat către el; folosește id-ul public ca să corespundă log-urile tale cu ale noastre.
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
}
Răspuns — formatul standard, cu numărul real de tokeni în usage (acesta este ceea ce se facturează):
{
"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 }
}
Prompt-ul de sistem stabilit de tine guvernează conversația. Adăugăm exact o linie la început — identitatea modelului (că este notrack-uncensored, creat de BestPrivateAI) — și nimic altceva: nicio regulă, niciun filtru de subiecte. Mesajul tău de sistem urmează după aceasta și decide persona, stilul și tot restul. Singura excepție este în Politica de conținut.
Streaming
Setează "stream": true și citește evenimentele server-sent, exact ca la OpenAI. Ultimul fragment aduce usage (îl includem întotdeauna, indiferent dacă ceri stream_options sau nu), apoi 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]
Parametri
| Câmp | Note |
|---|---|
messages | Obligatoriu. Rolurile system, user, assistant. Doar text pentru moment — părțile de tip imagine sunt respinse. |
model | Folosește notrack-uncensored. |
stream | true pentru SSE. stream_options.include_usage este mereu activ. |
max_tokens | Limita pentru completion. Prompt + completion trebuie să încapă în fereastra de 64,000 tokeni. |
temperature, top_p, stop, presence_penalty, frequency_penalty, seed, n | Transmis modelului ca la OpenAI. Dacă nu trimiți temperature, folosim 0.85, la fel ca chat-ul nostru. n > 1 multiplică costul de output. |
tools, tool_choice | Suportat: auto, none, required, sau o funcție numită. Răspunsul aduce tool_calls și finish_reason: "tool_calls"; trimite rezultatul înapoi ca mesaj role: "tool". Cu unelte prezente, un răspuns în streaming ajunge ca un fragment per apel, nu token cu token. |
response_format | {"type": "json_object"} este suportat (spune în prompt ce JSON vrei). json_schema și câmpul vechi functions nu sunt. |
Limite și headere de răspuns
| Limită | Valoare | La depășire |
|---|---|---|
| Cereri simultane per cheie | 8 | 429 concurrency |
| Cereri pe minut per cheie | 300 | 429 rate_limit |
| Fereastră de context (prompt + completion) | 64,000 tokeni | 400 context_limit — reduce istoricul și încearcă din nou |
| Consum zilnic per cheie (opțional) | setat de tine pe pagina de chei | 402 key_daily_cap până la 00:00 UTC |
Fiecare răspuns cu succes aduce:
| Header | Semnificație |
|---|---|
X-Request-Id | Citează-l atunci când scrii la suport; este singurul lucru pe care îl păstrăm despre o cerere. |
X-NoTrack-Balance-USD | Creditul tău înainte această cerere a fost taxată, în dolari. |
X-RateLimit-Limit-Requests | Cereri pe minut permise pentru această cheie. |
X-RateLimit-Limit-Concurrency | Cereri paralele permise pentru această cheie. |
X-NoTrack-Content-Flag | Doar la un refuz de conținut: minor_in_sexual_context sau child_safety. |
Erori
Erorile sunt JSON cu un type stabil; message este pentru oameni și se poate schimba.
{ "error": { "type": "no_credit", "message": "no credit left on this account — top up at bestprivateai.com/api-keys" } }
| HTTP | type | Ce să faci |
|---|---|---|
| 400 | body | JSON invalid sau fără messages. |
| 400 | context_limit | Prompt prea lung pentru fereastra de 64,000 tokeni. Elimină rundele mai vechi. |
| 400 | content_policy + X-NoTrack-Content-Flag: minor_in_sexual_context | Scena este citită ca sexuală, iar un personaj este citit ca minor. Fă personajele în mod neechivoc adulte și retrimite; nu se taxează. |
| 401 | auth, invalid_key, key_revoked, key_expired | Repară sau înlocuiește cheia. |
| 402 | no_credit | Soldul este zero. Reîncarcă; cererile se reiau imediat. |
| 402 | key_daily_cap | Această cheie a atins plafonul zilnic pe care l-ai setat. Ridică-l sau așteaptă până la 00:00 UTC. |
| 403 | content_policy + X-NoTrack-Content-Flag: child_safety | Refuzat și netaxat. Vezi Politica de conținut. |
| 429 | rate_limit, concurrency | Redu ritmul și încearcă din nou; respectă cele două headere X-RateLimit-*. |
| 502 | upstream | Modelul nu a răspuns. Încearcă din nou cu backoff; nu se taxează. |
| 503 | billing, safety | O dependență a noastră este indisponibilă. Încearcă din nou în câteva secunde; nu se taxează. |
Facturare
Credit preplătit, taxat per token pe baza usage real al fiecărui răspuns: $0.25 per 1M tokeni de input, $1.00 per 1M tokeni de output. Input este tot ce trimiți (prompt de sistem, istoric, mesajul nou); output este ce scrie modelul.
- Prima ta cheie vine cu $0.50 de credit gratuit, valabil 7 zile — suficient pentru integrare și testare. Este necesar un e-mail confirmat pentru o cheie (acolo se trimite avertismentul „creditul se epuizează”). Creditul plătit nu expiră niciodată.
- Creditul nu expiră, nu există abonament și nimic nu se reînnoiește automat. Reîncarcă cu cardul sau în USDT/USDC pe pagina de chei.
- Nu se taxează nimic pentru cererile refuzate (
4xx) sau eșuate (5xx). O cerere este taxată o singură dată, după răspuns, pe bazaX-Request-Id-ului său. - Soldul se epuizează →
402 no_creditpână reîncarci. Setează un plafon zilnic pe fiecare cheie, astfel încât o cheie scursă să nu poată drena contul. - Creditele pot fi rambursate dacă nu sunt folosite în 24 de ore de la achiziție sau pot fi aplicate ulterior pe un abonament. Vezi Credite și rambursări.
Persona — model simplu sau personajul BestPrivateAI
Fiecare cheie are un stil, ales pe pagina de chei și schimbabil în orice moment:
- Simplu (implicit) — prompt-ul tău de sistem este întregul prompt. Adăugăm o linie de identitate și nimic altceva.
- Persona BestPrivateAI — personajul și stilul chat-ului de pe bestprivateai.com: direct, nefiltrat, fără moralizare, răspunde în limba utilizatorului. Același model, același preț, aceeași politică de conținut; se schimbă doar prompt-ul din fața mesajelor tale. Propriul tău mesaj de sistem continuă să urmeze după el și îl poate ajusta.
O cerere poate suprascrie setarea cheii, fie cu un câmp, fie cu un sufix de model (pentru clienții care pot seta doar un nume de 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
Nume de persona: notrack (personajul simplu), concise, detailed, creative (aceleași variante oferite de chat), bare. Header-ul de răspuns X-NoTrack-Persona indică care a fost aplicată.
Politica de conținut
Nu adăugăm niciun prompt de sistem și nu rulăm niciun filtru de subiecte. Ficțiune pentru adulți, teme obscure, limbaj dur, violență în ficțiune — modelul răspunde exact cum e scris. O regulă este impusă în cod și nu poate fi dezactivată: orice conținut sexual care implică un minor este refuzat.
403 child_safety— cererea căuta conținut sexual care implică un copil. Refuzat, netaxat, înregistrat ca eveniment de siguranță.400 minor_in_sexual_context— scena este sexuală și un personaj este citit ca fiind sub 18 ani (vârstă menționată, context școlar, cadru „fată/băiat”). Nu este o interdicție: fă vârstele și cadrul în mod neechivoc adulte și retrimite.
403-uri repetate pe o cheie duc la închiderea cheii, apoi a contului. Textul integral este în Politica de utilizare acceptabilă.
Confidențialitate
Prompturile și completions nu sunt scrise pe disc — nici de gateway, nici de serverele modelului. Ceea ce păstrăm per cerere este id-ul cererii, id-ul cheii, numărul de tokeni și prețul, pentru că acestea formează factura. Refuzurile de siguranță sunt înregistrate pe categorii, fără text. Niciun furnizor terț de model nu vede vreodată traficul tău: modelul rulează pe hardware pe care îl închiriem și îl controlăm.
Clienți și SDK-uri
Site-ul BestPrivateAI și aplicația BestPrivateAI sunt propriul nostru chat — nu au un câmp pentru o cheie API și nici nu vor avea vreodată. O cheie este pentru programe altele: lipește-o într-unul dintre clienții de mai jos, sau în propriul tău cod.
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 activat. Păstrează dimensiunea contextului la sau sub 64,000 tokeni.
Chatbox
Settings → Model Provider → Add → Add Custom Provider, mod OpenAI API Compatible → lipește URL-ul de bază și cheia, apoi adaugă notrack-uncensored ca model.
NextChat
Settings → activează Custom Endpoint (compatibil OpenAI) → URL de bază și cheie, apoi scrie numele modelului în câmpul de model.
Cherry Studio
Settings → Model Providers → Add Provider → scrie OpenAI → URL de bază și cheie, apoi „Add model” → notrack-uncensored.
LobeChat
Settings → AI Service Provider → OpenAI → activează custom API endpoint, lipește URL-ul de bază și cheia, și adaugă modelul la lista de modele.
Altceva
LangChain, LlamaIndex, Open WebUI, Continue, setările de proxy JanitorAI, curl — orice client cu o opțiune „OpenAI-compatible” sau „custom base URL”.
Denumirile din meniu de mai sus diferă între versiunile aplicației — dacă o etichetă nu se potrivește exact, caută setarea care menționează „custom”, „OpenAI-compatible” sau „base URL”.
Dacă un client nu se conectează
- 401 / „invalid API key” — cheia nu a ajuns niciodată. Confirmă că clientul trimite
Authorization: Bearer sk-…cu cheia completă, inclusiv prefixul. - 404 / endpoint necunoscut — clienții diferă în privința adăugării
/v1pe cont propriu. Dacăhttps://api.bestprivateai.com/v1dă 404, încearcăhttps://api.bestprivateai.comca URL de bază (sau invers). - „The Responses API is not supported yet” — unii clienți mai noi folosesc implicit Responses API al OpenAI. Noi oferim doar Chat Completions; comută clientul pe acel mod.
- Lista de modele goală — unii clienți o populează doar după o verificare validă a cheii. Scrie
notrack-uncensoredmanual. - Nu se întâmplă nimic într-un client Ollama / llama.cpp — aceștia vorbesc propriul lor protocol, incompatibil cu OpenAI. Folosește în schimb unul dintre clienții de mai sus.
Chei
- Până la 20 de chei active per cont. Dă fiecărei aplicații propria cheie și propriul plafon zilnic.
- Dată de expirare opțională; revocarea unei chei o oprește imediat și nu poate fi anulată — emite una nouă în schimb.
- Pagina de chei arată consumul per cheie, ultima utilizare și totalurile pe 30 de zile ale contului.
Întrebări sau un id de cerere de verificat: suport · bestprivateai.com/support.