BestPrivateAI API — viiteopas
Yksi OpenAI-yhteensopiva rajapinta, yksi malli, yksi avain. Jos koodisi puhuu jo /v1/chat/completions:lle, vaihda perus-URL ja avain, ja se puhuu meille.
Perus-URL ja tunnistautuminen
Base URL: https://api.bestprivateai.com/v1
Header: Authorization: Bearer sk-…
Avaimet luodaan avainten sivu:ssa. Avain näytetään vain kerran, luontihetkellä; me tallennamme sen hash-arvon ja viimeiset kuusi merkkiä. Lähetä se vain HTTPS:n yli ja vain Authorization-otsikossa — ei koskaan URL-osoitteessa.
Kaikki on JSON-muodossa (Content-Type: application/json). Vastaukset käyttävät OpenAI:n skeemaa, niin että viralliset openai SDK:t ja mikä tahansa OpenAI-yhteensopiva asiakasohjelma toimivat muuttamattomina.
Mallit
GET /v1/models
{ "object": "list",
"data": [ { "id": "notrack-uncensored", "object": "model", "owned_by": "notrack" } ] }
Käytössä on yksi malli, notrack-uncensored: oma virityksemme, ajettuna omalla laitteistollamme. Mitä tahansa lähetät model:na, ohjataan siihen; käytä julkista id:tä, jotta lokisi täsmäävät meidän lokeihimme.
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
}
Vastaus — vakiomuoto, todellisilla token-määrillä kohdassa usage (tästä sinua laskutetaan):
{
"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 }
}
System promptisi hallitsee keskustelua. Lisäämme alkuun täsmälleen yhden rivin — mallin identiteetin (että se on notrack-uncensored, BestPrivateAIin tekemä) — ja ei mitään muuta: ei sääntöjä, ei aihesuodatinta. System-viestisi seuraa sitä ja päättää persoonasta, tyylistä ja kaikesta muusta. Ainoa poikkeus on kohdassa Sisältöpolitiikka.
Streaming
Aseta "stream": true ja lue server-sent-eventtejä, täsmälleen kuten OpenAI:ssa. Viimeinen palanen kantaa usage:n (sisällytämme sen aina, pyydätpä stream_options:ta tai et), sitten data: [DONE]:n.
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]
Parametrit
| Kenttä | Huomiot |
|---|---|
messages | Pakollinen. Roolit system, user, assistant. Toistaiseksi vain tekstiä — kuvaosat hylätään. |
model | Käytä notrack-uncensored. |
stream | true SSE:tä varten. stream_options.include_usage on aina päällä. |
max_tokens | Yläraja completionille. Promptin + completionin on mahduttava 64,000 tokenin ikkunaan. |
temperature, top_p, stop, presence_penalty, frequency_penalty, seed, n | Välitetään mallille kuten OpenAI:ssa. Jos et lähetä temperature:ta, käytämme arvoa 0,85, samaa kuin chatissamme. n > 1 kertoo tuotoskustannuksen. |
tools, tool_choice | Tuettu: auto, none, required, tai nimetty funktio. Vastaus kantaa tool_calls:n ja finish_reason: "tool_calls":n; lähetä tulos takaisin role: "tool"-viestinä. Kun tools on läsnä, streamattu vastaus saapuu yhtenä palana kutsua kohti, ei token kerrallaan. |
response_format | {"type": "json_object"} on tuettu (kerro promptissa, minkälaisen JSON:n haluat). json_schema ja vanha functions-kenttä eivät ole. |
Rajoitukset ja vastausotsikot
| Rajoitus | Arvo | Kun ylittyy |
|---|---|---|
| Samanaikaiset pyynnöt per avain | 8 | 429 concurrency |
| Pyynnöt minuutissa per avain | 300 | 429 rate_limit |
| Kontekstiikkuna (prompti + completion) | 64,000 tokenia | 400 context_limit — lyhennä historiaa ja yritä uudelleen |
| Päivittäinen kulutus per avain (valinnainen) | asetat itse avainten sivulla | 402 key_daily_cap klo 00:00 UTC asti |
Joka onnistunut vastaus kantaa:
| Otsikko | Merkitys |
|---|---|
X-Request-Id | Mainitse se ottaessasi yhteyttä tukeen; se on ainoa, jonka säilytämme pyynnöstä. |
X-NoTrack-Balance-USD | Saldosi ennen tämän pyynnön veloitusta, dollareissa. |
X-RateLimit-Limit-Requests | Tälle avaimelle sallitut pyynnöt minuutissa. |
X-RateLimit-Limit-Concurrency | Tälle avaimelle sallitut rinnakkaiset pyynnöt. |
X-NoTrack-Content-Flag | Vain sisällön hylkäyksessä: minor_in_sexual_context tai child_safety. |
Virheet
Virheet ovat JSON-muodossa vakaalla type:lla; message on ihmisiä varten ja voi muuttua.
{ "error": { "type": "no_credit", "message": "no credit left on this account — top up at bestprivateai.com/api-keys" } }
| HTTP | type | Mitä tehdä |
|---|---|---|
| 400 | body | Virheellinen JSON tai ei messages:ta. |
| 400 | context_limit | Prompti on liian pitkä 64,000 tokenin ikkunaan. Poista vanhempia vuoroja. |
| 400 | content_policy + X-NoTrack-Content-Flag: minor_in_sexual_context | Kohtaus luetaan seksuaaliseksi ja hahmo luetaan alaikäiseksi. Tee hahmoista kiistattoman aikuisia ja lähetä uudelleen; ei laskuteta. |
| 401 | auth, invalid_key, key_revoked, key_expired | Korjaa tai vaihda avain. |
| 402 | no_credit | Saldo on nolla. Lataa saldoa; pyynnöt jatkuvat välittömästi. |
| 402 | key_daily_cap | Tämä avain saavutti asettamasi päivittäisen katon. Nosta sitä tai odota klo 00:00 UTC asti. |
| 403 | content_policy + X-NoTrack-Content-Flag: child_safety | Hylätty, ei laskuteta. Katso Sisältöpolitiikka. |
| 429 | rate_limit, concurrency | Hidasta ja yritä uudelleen; kunnioita molempia X-RateLimit-*-otsikoita. |
| 502 | upstream | Malli ei vastannut. Yritä uudelleen backoffilla; ei laskuteta. |
| 503 | billing, safety | Yksi riippuvuuksistamme on poikki. Yritä uudelleen muutaman sekunnin kuluttua; ei laskuteta. |
Laskutus
Ennakkoon maksettu saldo, laskutetaan tokenia kohti joka vastauksen todellisen usage:n perusteella: $0.25 / 1M syötetokenia, $1.00 / 1M tuotostokenia. Syöte on kaikki, mitä lähetät (system prompt, historia, uusi viesti); tuotos on se, mitä malli kirjoittaa.
- Ensimmäinen avaimesi tulee mukana $0.50 ilmaista saldoa, voimassa 7 päivää — riittää integrointiin ja testaukseen. Avainta varten tarvitaan vahvistettu sähköposti (siihen lähtee ilmoitus "saldo loppumassa"). Maksettu saldo ei koskaan vanhene.
- Saldo ei vanhene, tilausta ei ole, ja mikään ei uusiudu itsestään. Lataa saldoa kortilla tai USDT/USDC:llä avainten sivulla.
- Hylätyistä pyynnöistä (
4xx) tai epäonnistuneista (5xx) ei laskuteta mitään. Pyyntö laskutetaan kerran, vastauksen jälkeen, senX-Request-Id:n perusteella. - Saldo loppuu →
402 no_credit, kunnes lataat sitä. Aseta päivittäinen katto joka avaimelle, jotta vuotanut avain ei voi tyhjentää tiliä. - Krediitit voi palauttaa, jos niitä ei ole käytetty 24 tunnin kuluessa ostosta, tai ne voi myöhemmin käyttää tilaukseen. Katso Krediitit ja palautukset.
Persoona — paljas malli vai BestPrivateAIin hahmo
Joka avaimella on tyyli, valittu avainten sivulla ja vaihdettavissa milloin tahansa:
- Puhdas (oletus) — system promptisi on koko prompti. Lisäämme yhden identiteettirivin ja ei mitään muuta.
- BestPrivateAI-persoona — chatin hahmo ja tyyli osoitteessa bestprivateai.com: suora, suodattamaton, ei moralisointia, vastaa käyttäjän kielellä. Sama malli, sama hinta, sama sisältöpolitiikka; ainoastaan viestiesi edellä oleva prompti muuttuu. Oma system-viestisi seuraa sitä edelleen ja voi säätää sitä.
Pyyntö voi ohittaa avaimen asetuksen joko kentällä tai mallin liitteellä (asiakasohjelmille, jotka voivat asettaa vain mallin nimen):
{ "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
Persoonanimet: notrack (yksinkertainen hahmo), concise, detailed, creative (samat variantit, joita chat tarjoaa), bare. Vastausotsikko X-NoTrack-Persona kertoo, mikä niistä sovellettiin.
Sisältöpolitiikka
Emme lisää system promptia eikä käytä aihesuodatinta. Aikuisfiktio, synkät teemat, karkea kieli, väkivalta fiktiossa — malli vastaa niin kuin se on kirjoitettu. Yksi sääntö on koodissa pakotettu ja sitä ei voi kytkeä pois: kaikki alaikäiseen liittyvä seksuaalinen sisältö hylätään.
403 child_safety— pyyntö haki lapseen liittyvää seksuaalista sisältöä. Hylätty, ei laskutettu, kirjattu turvallisuustapahtumaksi.400 minor_in_sexual_context— kohtaus on seksuaalinen ja hahmo luetaan alle 18-vuotiaaksi (ikä mainittu, kouluympäristö, "tyttö/poika"-kehystys). Ei kielto: tee ikä ja kehystys kiistattoman aikuisiksi ja lähetä uudelleen.
Toistuvat 403 avaimella johtavat avaimen ja sitten tilin sulkemiseen. Koko teksti löytyy hyväksyttävän käytön käytännöstä:sta.
Tietosuoja
Prompteja ja completioneja ei kirjoiteta levylle — ei gatewaylla, ei mallipalvelimilla. Pyynnöstä säilytämme pyynnön id:n, avaimen id:n, token-määrät ja hinnan, koska se muodostaa laskun. Turvallisuushylkäykset kirjataan kategorioittain, ilman tekstiä. Mikään kolmannen osapuolen mallintarjoaja ei koskaan näe liikennettäsi: malli toimii laitteistolla, jonka vuokraamme ja hallitsemme itse.
Asiakasohjelmat ja SDK:t
BestPrivateAIin verkkosivusto ja BestPrivateAIin sovellus ovat oma chattimme — niissä ei ole kenttää API-avaimelle, eikä koskaan tule olemaan. Avain on tarkoitettu ulkopuolisille ohjelmille: liitä se johonkin alla olevista asiakasohjelmista, tai omaan koodiisi.
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äällä. Pidä kontekstin koko 64,000 tokenissa tai alle.
Chatbox
Settings → Model Provider → Add → Add Custom Provider, tila OpenAI API Compatible → liitä perus-URL ja avain, lisää sitten notrack-uncensored malliksi.
NextChat
Settings → kytke päälle Custom Endpoint (OpenAI-yhteensopiva) → perus-URL ja avain, kirjoita sitten mallin nimi malli-kenttään.
Cherry Studio
Settings → Model Providers → Add Provider → kirjoita OpenAI → perus-URL ja avain, sitten "Add model" → notrack-uncensored.
LobeChat
Settings → AI Service Provider → OpenAI → ota käyttöön custom API endpoint, liitä perus-URL ja avain, ja lisää malli mallilistaan.
Kaikki muu
LangChain, LlamaIndex, Open WebUI, Continue, JanitorAI:n proxy-asetukset, curl — mikä tahansa asiakasohjelma, jossa on "OpenAI-compatible"- tai "custom base URL" -vaihtoehto.
Yllä olevat valikkotekstit vaihtelevat sovellusversioittain — jos otsikko ei täsmää tarkalleen, etsi asetus, joka mainitsee "custom", "OpenAI-compatible" tai "base URL".
Jos asiakasohjelma ei muodosta yhteyttä
- 401 / "invalid API key" — avain ei koskaan saapunut. Varmista, että asiakasohjelma lähettää
Authorization: Bearer sk-…:n koko avaimella, prefiksi mukaan lukien. - 404 / tuntematon rajapinta — asiakasohjelmat eivät ole yhtä mieltä siitä, lisäävätkö ne
/v1:n itse. Joshttps://api.bestprivateai.com/v1antaa 404:n, kokeile sen sijaanhttps://api.bestprivateai.com:ta perus-URL:na (tai toisin päin). - "The Responses API is not supported yet" — jotkin uudemmat asiakasohjelmat käyttävät oletuksena OpenAI:n Responses API:a. Me tarjoamme vain Chat Completionsia; vaihda asiakasohjelma tähän tilaan.
- Tyhjä mallilista — jotkin asiakasohjelmat täyttävät sen vain kelvollisen avaintarkistuksen jälkeen. Kirjoita
notrack-uncensoredkäsin. - Ollama- / llama.cpp-asiakasohjelmassa ei tapahdu mitään — ne puhuvat omaa protokollaansa, ei OpenAI-yhteensopivaa. Käytä sen sijaan yhtä yllä olevista asiakasohjelmista.
Avaimet
- Enintään 20 aktiivista avainta per tili. Anna joka sovellukselle oma avain ja oma päivittäinen katto.
- Valinnainen vanhenemispäivä; avaimen peruuttaminen pysäyttää sen välittömästi, ja sitä ei voi peruuttaa — anna sen sijaan uusi.
- Avainten sivu näyttää avainkohtaisen kulutuksen, viimeisimmän käytön ja tilin 30 päivän kokonaismäärät.
Kysymyksiä tai tarkistettava pyynnön id: tuki · bestprivateai.com/support.