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

FeltNoter
messagesObligatorisk. Rollerne system, user, assistant. Kun tekst for nu — billeddele afvises.
modelBrug notrack-uncensored.
streamtrue for SSE. stream_options.include_usage er altid slået til.
max_tokensGrænse for completion. Prompt + completion skal passe inden for vinduet på 64,000 tokens.
temperature, top_p, stop, presence_penalty, frequency_penalty, seed, nSendes 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_choiceUnderstø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ænseVærdiVed overskridelse
Samtidige forespørgsler pr. nøgle8429 concurrency
Forespørgsler pr. minut pr. nøgle300429 rate_limit
Kontekstvindue (prompt + completion)64,000 tokens400 context_limit — beskær historikken og prøv igen
Dagligt forbrug pr. nøgle (valgfrit)fastsat af dig på nøglesiden402 key_daily_cap indtil kl. 00:00 UTC

Hvert vellykket svar indeholder:

HeaderBetydning
X-Request-IdAngiv den, når du skriver til support; det er det eneste, vi opbevarer om en forespørgsel.
X-NoTrack-Balance-USDDin kredit før denne forespørgsel blev opkrævet, i dollars.
X-RateLimit-Limit-RequestsForespørgsler pr. minut tilladt for denne nøgle.
X-RateLimit-Limit-ConcurrencyParallelle forespørgsler tilladt for denne nøgle.
X-NoTrack-Content-FlagKun 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" } }
HTTPtypeHvad du skal gøre
400bodyUgyldig JSON eller ingen messages.
400context_limitPrompten er for lang til vinduet på 64,000 tokens. Fjern ældre replikker.
400content_policy + X-NoTrack-Content-Flag: minor_in_sexual_contextScenen læses som seksuel, og en karakter læses som mindreårig. Gør karaktererne umiskendeligt voksne, og send igen; faktureres ikke.
401auth, invalid_key, key_revoked, key_expiredRet eller udskift nøglen.
402no_creditSaldoen er nul. Fyld op; forespørgsler genoptages med det samme.
402key_daily_capDenne nøgle har nået det daglige loft, du har sat. Hæv det, eller vent til kl. 00:00 UTC.
403content_policy + X-NoTrack-Content-Flag: child_safetyAfvist og ikke faktureret. Se Indholdspolitik.
429rate_limit, concurrencySæt tempoet ned, og prøv igen; respekter begge X-RateLimit-*-headere.
502upstreamModellen svarede ikke. Prøv igen med backoff; faktureres ikke.
503billing, safetyEn 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.

Persona — ren model eller BestPrivateAIs karakter

Hver nøgle har en stil, valgt på nøglesiden og kan skiftes når som helst:

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.

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

Nøgler

Spørgsmål eller et forespørgsels-id at kigge på: support · bestprivateai.com/support.