BestPrivateAI API — reference
Ét OpenAI-kompatibelt endpoint, én model, én nøgle. Hvis din kode allerede taler med /v1/chat/completions, skal du bare ændre base-URL'en og nøglen, og den taler med os.
Base-URL og godkendelse
Base URL: https://api.bestprivateai.com/v1
Header: Authorization: Bearer sk-…
Nøgler oprettes på nøglesiden. En nøgle vises kun én gang, ved oprettelsen; vi opbevarer et hash og dens sidste seks tegn. Send den kun over HTTPS og kun i Authorization-headeren — aldrig i en URL.
Alt er JSON (Content-Type: application/json). Svar bruger OpenAIs skema, så de officielle openai-SDK'er og enhver OpenAI-kompatibel klient fungerer uændret.
Modeller
GET /v1/models
{ "object": "list",
"data": [ { "id": "notrack-uncensored", "object": "model", "owned_by": "notrack" } ] }
Der findes én model, notrack-uncensored: vores eget companion-tune, kørt på vores eget hardware. Hvad du end sender som model, sendes videre til den; brug det offentlige id, så dine logs matcher vores.
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
}
Svar — den standardform, med reelle token-antal i usage (det er det, du bliver faktureret for):
{
"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 }
}
Din system prompt styrer samtalen. Vi indsætter præcis én linje forrest — modellens identitet (at det er notrack-uncensored, lavet af BestPrivateAI) — og intet andet: ingen regler, intet emnefilter. Din systemmeddelelse følger efter og bestemmer persona, stil og alt andet. Den ene undtagelse er i Indholdspolitik.
Streaming
Sæt "stream": true og læs server-sent events, præcis som med OpenAI. Det sidste chunk indeholder usage (vi inkluderer altid det, uanset om du beder om stream_options eller ikke), derefter 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]
Parametre
| Felt | Noter |
|---|---|
messages | Obligatorisk. Rollerne system, user, assistant. Kun tekst for nu — billeddele afvises. |
model | Brug notrack-uncensored. |
stream | true for SSE. stream_options.include_usage er altid slået til. |
max_tokens | Grænse for completion. Prompt + completion skal passe inden for vinduet på 64,000 tokens. |
temperature, top_p, stop, presence_penalty, frequency_penalty, seed, n | Sendes videre til modellen som i OpenAI. Sender du ikke temperature, bruger vi 0,85, samme som i vores chat. n > 1 mangedobler outputprisen. |
tools, tool_choice | Understøttet: auto, none, required, eller en navngivet funktion. Svaret indeholder tool_calls og finish_reason: "tool_calls"; send resultatet tilbage som en role: "tool"-meddelelse. Med tools til stede ankommer et streamet svar som ét chunk per kald og ikke token for token. |
response_format | {"type": "json_object"} er understøttet (angiv i prompten, hvilken JSON du vil have). json_schema og det gamle felt functions er det ikke. |
Grænser og response-headere
| Grænse | Værdi | Ved overskridelse |
|---|---|---|
| Samtidige forespørgsler pr. nøgle | 8 | 429 concurrency |
| Forespørgsler pr. minut pr. nøgle | 300 | 429 rate_limit |
| Kontekstvindue (prompt + completion) | 64,000 tokens | 400 context_limit — beskær historikken og prøv igen |
| Dagligt forbrug pr. nøgle (valgfrit) | fastsat af dig på nøglesiden | 402 key_daily_cap indtil kl. 00:00 UTC |
Hvert vellykket svar indeholder:
| Header | Betydning |
|---|---|
X-Request-Id | Angiv den, når du skriver til support; det er det eneste, vi opbevarer om en forespørgsel. |
X-NoTrack-Balance-USD | Din kredit før denne forespørgsel blev opkrævet, i dollars. |
X-RateLimit-Limit-Requests | Forespørgsler pr. minut tilladt for denne nøgle. |
X-RateLimit-Limit-Concurrency | Parallelle forespørgsler tilladt for denne nøgle. |
X-NoTrack-Content-Flag | Kun ved et indholdsafslag: minor_in_sexual_context eller child_safety. |
Fejl
Fejl er JSON med en stabil type; message er til mennesker og kan ændre sig.
{ "error": { "type": "no_credit", "message": "no credit left on this account — top up at bestprivateai.com/api-keys" } }
| HTTP | type | Hvad du skal gøre |
|---|---|---|
| 400 | body | Ugyldig JSON eller ingen messages. |
| 400 | context_limit | Prompten er for lang til vinduet på 64,000 tokens. Fjern ældre replikker. |
| 400 | content_policy + X-NoTrack-Content-Flag: minor_in_sexual_context | Scenen læses som seksuel, og en karakter læses som mindreårig. Gør karaktererne umiskendeligt voksne, og send igen; faktureres ikke. |
| 401 | auth, invalid_key, key_revoked, key_expired | Ret eller udskift nøglen. |
| 402 | no_credit | Saldoen er nul. Fyld op; forespørgsler genoptages med det samme. |
| 402 | key_daily_cap | Denne nøgle har nået det daglige loft, du har sat. Hæv det, eller vent til kl. 00:00 UTC. |
| 403 | content_policy + X-NoTrack-Content-Flag: child_safety | Afvist og ikke faktureret. Se Indholdspolitik. |
| 429 | rate_limit, concurrency | Sæt tempoet ned, og prøv igen; respekter begge X-RateLimit-*-headere. |
| 502 | upstream | Modellen svarede ikke. Prøv igen med backoff; faktureres ikke. |
| 503 | billing, safety | En af vores afhængigheder er nede. Prøv igen om nogle sekunder; faktureres ikke. |
Fakturering
Forudbetalt kredit, opkrævet pr. token baseret på den reelle usage for hvert svar: $0.25 pr. 1 mio. input-tokens, $1.00 pr. 1 mio. output-tokens. Input er alt, du sender (system prompt, historik, den nye meddelelse); output er det, modellen skriver.
- Din første nøgle kommer med $0.50 gratis kredit, gyldig i 7 dage — nok til at integrere og teste. Der kræves en bekræftet e-mail til en nøgle (det er der, "kreditten er ved at slippe op" sendes til). Betalt kredit udløber aldrig.
- Kredit udløber ikke, der er intet abonnement, og intet fornyer sig selv. Fyld op med kort eller i USDT/USDC på nøglesiden.
- Der opkræves ikke noget for afviste forespørgsler (
4xx) eller mislykkede (5xx). En forespørgsel faktureres én gang, efter svaret, ud fra densX-Request-Id. - Saldoen løber tør →
402 no_credit, indtil du fylder op. Sæt et dagligt loft på hver nøgle, så en lækket nøgle ikke kan dræne kontoen. - Kreditter kan refunderes, hvis de ikke er brugt inden for 24 timer efter købet, eller senere anvendes til en plan. Se Kreditter og refusion.
Persona — ren model eller BestPrivateAIs karakter
Hver nøgle har en stil, valgt på nøglesiden og kan skiftes når som helst:
- Ren (standard) — din system prompt er hele prompten. Vi tilføjer én linje identitet og intet andet.
- BestPrivateAI-persona — karakteren og stilen i chatten på bestprivateai.com: direkte, ufiltreret, uden moralisering, svarer på brugerens sprog. Samme model, samme pris, samme indholdspolitik; kun prompten forud for dine meddelelser ændres. Din egen systemmeddelelse følger stadig efter og kan justere den.
En forespørgsel kan tilsidesætte nøglens indstilling, enten med et felt eller med et modelsuffiks (til klienter, der kun kan angive et modelnavn):
{ "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
Personanavne: notrack (den enkle karakter), concise, detailed, creative (de samme varianter, som chatten tilbyder), bare. Response-headeren X-NoTrack-Persona angiver, hvilken der blev brugt.
Indholdspolitik
Vi tilføjer ingen system prompt og køre intet emnefilter. Voksen fiktion, mørke temaer, kraftigt sprog, vold i fiktion — modellen svarer som skrevet. Én regel er indbygget i koden og kan ikke slås fra: alt seksuelt, der involverer en mindreårig, afvises.
403 child_safety— forespørgslen søgte seksuelt indhold, der involverede et barn. Afvist, ikke faktureret, logført som en sikkerhedshændelse.400 minor_in_sexual_context— scenen er seksuel, og en karakter læses som under 18 (alder angivet, skolemiljø, "pige/dreng"-fremstilling). Ikke et forbud: gør aldre og fremstilling umiskendeligt voksne, og send igen.
Gentagne 403 på en nøgle fører til, at nøglen, og derefter kontoen, bliver lukket. Hele teksten findes i politikken for acceptabel brug.
Privatliv
Prompts og completions skrives ikke til disk — hverken af gatewayen eller modelserverne. Hvad vi opbevarer pr. forespørgsel, er forespørgsels-id, nøgle-id, token-antal og pris, fordi det er fakturaen. Sikkerhedsafslag logføres efter kategori, uden teksten. Ingen tredjeparts modeludbyder ser nogensinde din trafik: modellen kører på hardware, vi selv lejer og styrer.
Klienter og SDK'er
BestPrivateAI-webstedet og BestPrivateAI-appen er vores egen chat — de har ingen felt til en API-nøgle og vil aldrig få det. En nøgle er til andre programmer: sæt den ind i en af klienterne nedenfor, eller din egen kode.
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 slået til. Hold kontekststørrelsen på 64,000 tokens eller derunder.
Chatbox
Settings → Model Provider → Add → Add Custom Provider, tilstand OpenAI API Compatible → indsæt base-URL og nøgle, og tilføj derefter notrack-uncensored som model.
NextChat
Settings → slå Custom Endpoint til (OpenAI-kompatibel) → base-URL og nøgle, og skriv derefter modelnavnet i modelfeltet.
Cherry Studio
Settings → Model Providers → Add Provider → skriv OpenAI → base-URL og nøgle, og derefter "Add model" → notrack-uncensored.
LobeChat
Settings → AI Service Provider → OpenAI → aktivér custom API endpoint, indsæt base-URL og nøgle, og tilføj modellen til modellisten.
Alt andet
LangChain, LlamaIndex, Open WebUI, Continue, JanitorAI proxy-indstillinger, curl — enhver klient med en "OpenAI-compatible"- eller "custom base URL"-mulighed.
Menuteksten ovenfor varierer mellem appversioner — hvis en betegnelse ikke passer nøjagtigt, kig efter den indstilling, der nævner "custom", "OpenAI-compatible" eller "base URL".
Hvis en klient ikke vil forbinde
- 401 / "invalid API key" — nøglen kom aldrig frem. Bekræft, at klienten sender
Authorization: Bearer sk-…med hele nøglen, inklusive prefiks. - 404 / ukendt endpoint — klienter er ikke enige om, hvorvidt de selv tilføjer
/v1. Hvishttps://api.bestprivateai.com/v1giver 404, prøvhttps://api.bestprivateai.comsom base-URL i stedet (eller omvendt). - "The Responses API is not supported yet" — nogle nyere klienter bruger som standard OpenAIs Responses API. Vi understøtter kun Chat Completions; skift klienten til den tilstand.
- Tom modelliste — nogle klienter udfylder den først efter et gyldigt nøgletjek. Skriv
notrack-uncensoredind manuelt. - Der sker ikke noget i en Ollama-/llama.cpp-klient — de taler deres eget protokol, ikke OpenAI-kompatibelt. Brug i stedet en af klienterne ovenfor.
Nøgler
- Op til 20 aktive nøgler pr. konto. Giv hver app sin egen nøgle og sit eget daglige loft.
- Valgfri udløbsdato; tilbagekaldelse af en nøgle stopper den øjeblikkeligt og kan ikke fortrydes — udsted i stedet en ny.
- Nøglesiden viser forbrug pr. nøgle, sidste anvendelse og kontoens 30-dages totaler.
Spørgsmål eller et forespørgsels-id at kigge på: support · bestprivateai.com/support.