BestPrivateAI API — referens

En OpenAI-kompatibel endpoint, en modell, en nyckel. Om din kod redan pratar med /v1/chat/completions, byt bas-URL och nyckel och den pratar med oss.

Bas-URL och autentisering

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

Nycklar skapas på nyckelsidan. En nyckel visas bara en gång, vid skapandet; vi lagrar en hash och de sista sex tecknen. Skicka den bara över HTTPS och bara i headern Authorization — aldrig i en URL.

Allt är JSON (Content-Type: application/json). Svar använder OpenAI-schemat, så de officiella openai-SDK:erna och alla OpenAI-kompatibla klienter fungerar oförändrat.

Modeller

GET /v1/models

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

Det finns en modell, notrack-uncensored: vår egen sällskapsversion, som körs på vår egen hårdvara. Vad du än skickar som model routas till den; använd det publika id:t så att dina loggar matchar våra.

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 — standardformatet, med faktiska token-antal i usage (det är det du debiteras för):

{
  "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 systemprompt styr konversationen. Vi lägger till exakt en rad i början — modellens identitet (att det är notrack-uncensored, skapad av BestPrivateAI) — och inget annat: inga regler, inget ämnesfilter. Ditt systemmeddelande kommer efter den och bestämmer persona, stil och allt annat. Det enda undantaget är i Innehållspolicy.

Streaming

Ställ in "stream": true och läs server-sent events, precis som med OpenAI. Den sista delen bär usage (vi inkluderar den alltid, oavsett om du begär stream_options eller inte), sedan 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]

Parametrar

FältAnteckningar
messagesObligatoriskt. Rollerna system, user, assistant. Bara text för tillfället — bilddelar avvisas.
modelAnvänd notrack-uncensored.
streamtrue för SSE. stream_options.include_usage är alltid på.
max_tokensBegränsning på completion. Prompt + completion måste rymmas i fönstret på 64,000 token.
temperature, top_p, stop, presence_penalty, frequency_penalty, seed, nSkickas vidare till modellen som i OpenAI. Om du inte skickar temperature använder vi 0.85, samma som vår chatt. n > 1 multiplicerar output-kostnaden.
tools, tool_choiceStöds: auto, none, required, eller en namngiven funktion. Svaret bär tool_calls och finish_reason: "tool_calls"; skicka tillbaka resultatet som ett role: "tool"-meddelande. Med verktyg närvarande kommer ett strömmat svar som en del per anrop istället för token för token.
response_format{"type": "json_object"} stöds (ange i prompten vilken JSON du vill ha). json_schema och det äldre fältet functions gör det inte.

Gränser och svarshuvuden

GränsVärdeVid överskridande
Samtidiga förfrågningar per nyckel8429 concurrency
Förfrågningar per minut per nyckel300429 rate_limit
Kontextfönster (prompt + completion)64,000 token400 context_limit — korta av historiken och försök igen
Daglig utgift per nyckel (valfritt)anges av dig på nyckelsidan402 key_daily_cap till 00:00 UTC

Varje lyckat svar bär:

HeaderBetydelse
X-Request-IdAnge den när du skriver till supporten; det är det enda vi sparar om en förfrågan.
X-NoTrack-Balance-USDDin kredit före denna förfrågan debiterades, i dollar.
X-RateLimit-Limit-RequestsAntal förfrågningar per minut som tillåts för denna nyckel.
X-RateLimit-Limit-ConcurrencyAntal parallella förfrågningar som tillåts för denna nyckel.
X-NoTrack-Content-FlagEndast vid en innehållsvägran: minor_in_sexual_context eller child_safety.

Fel

Fel är JSON med en stabil type; message är för människor och kan ändras.

{ "error": { "type": "no_credit", "message": "no credit left on this account — top up at bestprivateai.com/api-keys" } }
HTTPtypeVad du ska göra
400bodyOgiltig JSON eller ingen messages.
400context_limitPrompten är för lång för fönstret på 64,000 token. Ta bort äldre repliker.
400content_policy + X-NoTrack-Content-Flag: minor_in_sexual_contextScenen läses som sexuell och en karaktär läses som minderårig. Gör karaktärerna otvetydigt vuxna och skicka igen; debiteras inte.
401auth, invalid_key, key_revoked, key_expiredFixa eller byt ut nyckeln.
402no_creditSaldot är noll. Fyll på; förfrågningar återupptas omedelbart.
402key_daily_capDenna nyckel har nått det dagliga taket du satt. Höj det eller vänta till 00:00 UTC.
403content_policy + X-NoTrack-Content-Flag: child_safetyNekad och inte debiterad. Se Innehållspolicy.
429rate_limit, concurrencySakta ner och försök igen; respektera de två X-RateLimit-*-headerna.
502upstreamModellen svarade inte. Försök igen med backoff; debiteras inte.
503billing, safetyEn av våra beroenden är nere. Försök igen om några sekunder; debiteras inte.

Fakturering

Förbetald kredit, debiteras per token utifrån det faktiska usage för varje svar: $0.25 per 1M input-token, $1.00 per 1M output-token. Input är allt du skickar (systemprompt, historik, det nya meddelandet); output är det modellen skriver.

Persona — ren modell eller BestPrivateAIs karaktär

Varje nyckel har en stil, vald på nyckelsidan och kan bytas när som helst:

En förfrågan kan åsidosätta nyckelns inställning, antingen med ett fält eller med ett modellsuffix (för klienter som bara kan ange ett modellnamn):

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

Personanamn: notrack (den enkla karaktären), concise, detailed, creative (samma varianter som chatten erbjuder), bare. Svarshuvudet X-NoTrack-Persona anger vilken som tillämpades.

Innehållspolicy

Vi lägger inte till någon systemprompt och kör inget ämnesfilter. Vuxenfiktion, mörka teman, starkt språk, våld i fiktion — modellen svarar som skrivet. En regel är hårdkodad och kan inte stängas av: allt sexuellt som involverar en minderårig nekas.

Upprepade 403 på en nyckel leder till att nyckeln, och sedan kontot, stängs. Den fullständiga texten finns i policyn för acceptabel användning.

Sekretess

Prompter och svar skrivs inte till disk — inte av gatewayen, inte av modellservrarna. Vad vi sparar per förfrågan är förfrågans id, nyckelns id, antal token och priset, eftersom det är det som utgör fakturan. Säkerhetsnekanden loggas per kategori, utan text. Ingen tredjepartsleverantör av modellen ser någonsin din trafik: modellen körs på hårdvara vi hyr och kontrollerar.

Klienter och SDK:er

BestPrivateAI-webbplatsen och BestPrivateAI-appen är vår egen chatt — de har inget fält för en API-nyckel och kommer aldrig att ha det. En nyckel är till för andra-program: klistra in den i en av klienterna nedan, eller i din egen kod.

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 på. Håll kontextstorleken på eller under 64,000 token.

Chatbox

Settings → Model Provider → Add → Add Custom Provider, läge OpenAI API Compatible → klistra in bas-URL och nyckel, lägg sedan till notrack-uncensored som modell.

NextChat

Settings → aktivera Custom Endpoint (OpenAI-kompatibel) → bas-URL och nyckel, skriv sedan modellnamnet i modellfältet.

Cherry Studio

Settings → Model Providers → Add Provider → skriv OpenAI → bas-URL och nyckel, sedan "Add model" → notrack-uncensored.

LobeChat

Settings → AI Service Provider → OpenAI → aktivera custom API endpoint, klistra in bas-URL och nyckel, och lägg till modellen i modellistan.

Något annat

LangChain, LlamaIndex, Open WebUI, Continue, JanitorAI:s proxyinställningar, curl — alla klienter med ett alternativ för "OpenAI-compatible" eller "custom base URL".

Menytexterna ovan skiljer sig mellan appversioner — om en etikett inte matchar exakt, sök efter inställningen som nämner "custom", "OpenAI-compatible" eller "base URL".

Om en klient inte ansluter

Nycklar

Frågor eller ett förfråge-id att titta på: support · bestprivateai.com/support.