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ält | Anteckningar |
|---|---|
messages | Obligatoriskt. Rollerna system, user, assistant. Bara text för tillfället — bilddelar avvisas. |
model | Använd notrack-uncensored. |
stream | true för SSE. stream_options.include_usage är alltid på. |
max_tokens | Begränsning på completion. Prompt + completion måste rymmas i fönstret på 64,000 token. |
temperature, top_p, stop, presence_penalty, frequency_penalty, seed, n | Skickas 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_choice | Stö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äns | Värde | Vid överskridande |
|---|---|---|
| Samtidiga förfrågningar per nyckel | 8 | 429 concurrency |
| Förfrågningar per minut per nyckel | 300 | 429 rate_limit |
| Kontextfönster (prompt + completion) | 64,000 token | 400 context_limit — korta av historiken och försök igen |
| Daglig utgift per nyckel (valfritt) | anges av dig på nyckelsidan | 402 key_daily_cap till 00:00 UTC |
Varje lyckat svar bär:
| Header | Betydelse |
|---|---|
X-Request-Id | Ange den när du skriver till supporten; det är det enda vi sparar om en förfrågan. |
X-NoTrack-Balance-USD | Din kredit före denna förfrågan debiterades, i dollar. |
X-RateLimit-Limit-Requests | Antal förfrågningar per minut som tillåts för denna nyckel. |
X-RateLimit-Limit-Concurrency | Antal parallella förfrågningar som tillåts för denna nyckel. |
X-NoTrack-Content-Flag | Endast 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" } }
| HTTP | type | Vad du ska göra |
|---|---|---|
| 400 | body | Ogiltig JSON eller ingen messages. |
| 400 | context_limit | Prompten är för lång för fönstret på 64,000 token. Ta bort äldre repliker. |
| 400 | content_policy + X-NoTrack-Content-Flag: minor_in_sexual_context | Scenen läses som sexuell och en karaktär läses som minderårig. Gör karaktärerna otvetydigt vuxna och skicka igen; debiteras inte. |
| 401 | auth, invalid_key, key_revoked, key_expired | Fixa eller byt ut nyckeln. |
| 402 | no_credit | Saldot är noll. Fyll på; förfrågningar återupptas omedelbart. |
| 402 | key_daily_cap | Denna nyckel har nått det dagliga taket du satt. Höj det eller vänta till 00:00 UTC. |
| 403 | content_policy + X-NoTrack-Content-Flag: child_safety | Nekad och inte debiterad. Se Innehållspolicy. |
| 429 | rate_limit, concurrency | Sakta ner och försök igen; respektera de två X-RateLimit-*-headerna. |
| 502 | upstream | Modellen svarade inte. Försök igen med backoff; debiteras inte. |
| 503 | billing, safety | En 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.
- Din första nyckel kommer med $0.50 fri kredit, giltig i 7 dagar — tillräckligt för att integrera och testa. En bekräftad e-postadress krävs för en nyckel (det är dit meddelandet "krediten tar slut" går). Betald kredit går aldrig ut.
- Krediten går inte ut, det finns ingen prenumeration och inget förnyas av sig själv. Fyll på med kort eller i USDT/USDC på nyckelsidan.
- Inget debiteras för nekade förfrågningar (
4xx) eller misslyckade (5xx). En förfrågan debiteras en gång, efter svaret, baserat på dessX-Request-Id. - Saldot tar slut →
402 no_credittills du fyller på. Sätt ett dagligt tak på varje nyckel så att en läckt nyckel inte kan dränera kontot. - Krediter kan återbetalas om de inte har använts inom 24 timmar från köpet, eller senare räknas av mot en prenumeration. Se Krediter och återbetalningar.
Persona — ren modell eller BestPrivateAIs karaktär
Varje nyckel har en stil, vald på nyckelsidan och kan bytas när som helst:
- Ren (standard) — din systemprompt är hela prompten. Vi lägger till en rad identitet och inget annat.
- BestPrivateAI-persona — karaktären och stilen hos chatten på bestprivateai.com: direkt, ofiltrerad, ingen moralisering, svarar på användarens språk. Samma modell, samma pris, samma innehållspolicy; bara prompten framför dina meddelanden ändras. Ditt eget systemmeddelande kommer fortfarande efter den och kan justera den.
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.
403 child_safety— förfrågan sökte sexuellt innehåll som involverar ett barn. Nekad, inte debiterad, loggad som en säkerhetsincident.400 minor_in_sexual_context— scenen är sexuell och en karaktär läses som under 18 (angiven ålder, skolmiljö, "flicka/pojke"-inramning). Inte en spärr: gör åldrar och inramning otvetydigt vuxna och skicka igen.
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
- 401 / "invalid API key" — nyckeln kom aldrig fram. Bekräfta att klienten skickar
Authorization: Bearer sk-…med hela nyckeln, prefixet inkluderat. - 404 / okänd endpoint — klienter är oeniga om huruvida de lägger till
/v1själva. Omhttps://api.bestprivateai.com/v1ger 404, provahttps://api.bestprivateai.comsom bas-URL istället (eller tvärtom). - "The Responses API is not supported yet" — några nyare klienter använder som standard OpenAI:s Responses API. Vi levererar bara Chat Completions; växla klienten till det läget.
- Tom modellista — vissa klienter fyller den bara efter en giltig nyckelkontroll. Skriv in
notrack-uncensoredmanuellt. - Ingenting händer i en Ollama-/llama.cpp-klient — de talar sitt eget protokoll, inte OpenAI-kompatibelt. Använd en av klienterna ovan istället.
Nycklar
- Upp till 20 aktiva nycklar per konto. Ge varje app sin egen nyckel och sitt eget dagliga tak.
- Valfritt utgångsdatum; att återkalla en nyckel stoppar den omedelbart och kan inte ångras — utfärda en ny istället.
- Nyckelsidan visar utgifter per nyckel, senaste användning och kontots 30-dagarssummor.
Frågor eller ett förfråge-id att titta på: support · bestprivateai.com/support.