Uncensored AI API — довідник

Один сумісний з OpenAI ендпоінт, одна модель, один ключ. Якщо ваш код уже звертається до /v1/chat/completions, змініть базовий URL і ключ — і він звертатиметься до нас.

Базовий URL та автентифікація

Base URL:  https://api.uncensoredaichat.ai/v1
Header:    Authorization: Bearer sk-…

Ключі створюються на сторінка ключів. Ключ показується один раз, при створенні; ми зберігаємо його хеш та останні шість символів. Надсилайте його тільки через HTTPS і тільки в заголовку Authorization — ніколи в URL.

Усе у формі JSON (Content-Type: application/json). Відповіді використовують схему OpenAI, тож офіційні SDK openai та будь-який сумісний з OpenAI клієнт працюють без змін.

Моделі

GET /v1/models

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

Є одна модель, notrack-uncensored: наша власна модель, що працює на наших власних GPU-серверах. Усе, що ви передаєте як model, спрямовується до неї; використовуйте публічний id, щоб ваші логи збігалися з нашими.

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
}

Відповідь — стандартна форма, з реальною кількістю токенів у usage (саме за це вас тарифікують):

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

Ваш системний промт керує розмовою. Ми додаємо перед ним рівно один рядок — ідентифікацію моделі (що це notrack-uncensored, зроблена Uncensored AI) — і нічого більше: жодних правил, жодного фільтра тем. Далі йде ваше системне повідомлення, яке визначає персону, стиль і все інше. Єдиний виняток — у Політика контенту.

Стримінг

Встановіть "stream": true і читайте server-sent events, точно як в OpenAI. Останній фрагмент містить usage (ми завжди його включаємо, незалежно від того, чи запитували ви stream_options), а потім 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]

Параметри

ПолеПримітки
messagesОбов'язково. Ролі system, user, assistant. Наразі лише текст — частини із зображеннями відхиляються.
modelВикористовуйте notrack-uncensored.
streamtrue для SSE. stream_options.include_usage завжди увімкнено.
max_tokensОбмеження на completion. Prompt + completion повинні вміститися у вікно 100,000 токенів.
temperature, top_p, stop, presence_penalty, frequency_penalty, seed, nПередається моделі так само, як у OpenAI. Якщо ви не надсилаєте temperature, ми використовуємо 0.85, як і в нашому чаті. n > 1 множить вартість виводу.
tools, tool_choiceПідтримується: auto, none, required або названа функція. Відповідь містить tool_calls та finish_reason: "tool_calls"; надішліть результат назад як повідомлення role: "tool". За наявності tools стрімлена відповідь приходить одним фрагментом на кожен виклик, а не токен за токеном.
response_format{"type": "json_object"} підтримується (вкажіть у промті, який JSON вам потрібен). json_schema та застаріле поле functions не підтримуються.

Лімити та заголовки відповіді

ЛімiтЗначенняПри перевищенні
Одночасних запитів на ключ8429 concurrency
Запитів на хвилину на ключ300429 rate_limit
Контекстне вікно (prompt + completion)100,000 токенів400 context_limit — скоротіть історію і повторіть
Денні витрати на ключ (опційно)встановлюється вами на сторінці ключів402 key_daily_cap до 00:00 UTC

Пробні ключі (до першого поповнення): одночасних запитів — 2, запитів за хвилину — 60. Після першого поповнення ключ отримує повні ліміти: 8 і 300.

Кожна успішна відповідь містить:

ЗаголовокЗначення
X-Request-IdВкажіть його, звертаючись до підтримки; це єдине, що ми зберігаємо про запит.
X-NoTrack-Balance-USDВаш баланс до за цей запит, у доларах.
X-RateLimit-Limit-RequestsДозволена кількість запитів на хвилину для цього ключа.
X-RateLimit-Limit-ConcurrencyДозволена кількість паралельних запитів для цього ключа.
X-NoTrack-Content-FlagТільки при відмові через контент: minor_in_sexual_context або child_safety.

Помилки

Помилки — це JSON зі стабільним type; message призначений для людей і може змінюватися.

{ "error": { "type": "no_credit", "message": "no credit left on this account — top up at uncensoredaichat.ai/api-keys" } }
HTTPtypeЩо робити
400bodyНекоректний JSON або відсутній messages.
400context_limitPrompt занадто довгий для вікна 100,000 токенів. Приберіть старіші повідомлення.
400content_policy + X-NoTrack-Content-Flag: minor_in_sexual_contextСцена сприймається як сексуальна, а персонаж сприймається як неповнолітній. Зробіть персонажів безумовно дорослими і надішліть повторно; не тарифікується.
401auth, invalid_key, key_revoked, key_expiredВиправте або замініть ключ.
402no_creditБаланс нульовий. Пополніть баланс; запити відновлюються негайно.
402key_daily_capЦей ключ досяг денної стелі, яку ви встановили. Підвищте її або зачекайте до 00:00 UTC.
403content_policy + X-NoTrack-Content-Flag: child_safetyВідхилено і не тарифіковано. Див. Політика контенту.
429rate_limit, concurrencyЗменшіть частоту запитів і повторіть; дотримуйтесь обох заголовків X-RateLimit-*.
502upstreamМодель не відповіла. Повторіть із затримкою; не тарифікується.
503billing, safetyОдин із наших залежних сервісів недоступний. Повторіть за кілька секунд; не тарифікується.

Оплата

Передплачений баланс, тарифікується за токен на основі реального usage кожної відповіді: $0.25 за 1 млн вхідних токенів, $1.00 за 1 млн вихідних токенів. Вхід — це все, що ви надсилаєте (системний промт, історія, нове повідомлення); вихід — це те, що пише модель.

Персона — гола модель або персонаж Uncensored AI

Кожен ключ має стиль, який обирається на сторінці ключів і може змінюватися будь-коли:

Запит може перевизначити налаштування ключа — через поле або через суфікс назви моделі (для клієнтів, які можуть задавати лише назву моделі):

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

Назви персон: notrack (простий персонаж), concise, detailed, creative (ті ж варіанти, що пропонує чат), bare. Заголовок відповіді X-NoTrack-Persona показує, яку саме застосовано.

Політика контенту

Ми не додаємо системного промту і не запускаємо жодного фільтра тем. Дорослий фікшн, темні теми, ненормативна лексика, насильство у художньому творі — модель відповідає так, як написано. У коді закріплено одне правило, яке неможливо вимкнути: будь-що сексуального характеру за участю неповнолітнього відхиляється.

Повторювані 403 на одному ключі призводять до закриття спочатку ключа, а потім рахунку. Повний текст — у Політиці допустимого використання.

Приватність

Промти та completion-и не записуються на диск — ні шлюзом, ні серверами моделі. Що ми зберігаємо про запит — це id запиту, id ключа, кількість токенів і ціна, бо саме це рахунок. Відмови з причин безпеки логуються за категорією, без тексту. Жоден стороній провайдер моделі ніколи не бачить вашого трафіку: модель працює на наших власних GPU-серверах.

Клієнти та SDK

Сайт Uncensored AI і застосунок Uncensored AI — це наш власний чат: у них немає поля для API-ключа і ніколи не буде. Ключ призначений для інші програм: вставте його в один із клієнтів нижче або у власний код.

Python

from openai import OpenAI
client = OpenAI(base_url="https://api.uncensoredaichat.ai/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.uncensoredaichat.ai/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.uncensoredaichat.ai/v1 → Custom API Key → Connect → Model notrack-uncensored. Streaming увімкнено. Тримайте розмір контексту на рівні 100,000 токенів або нижче.

Chatbox

Settings → Model Provider → Add → Add Custom Provider, режим OpenAI API Compatible → вставте базовий URL і ключ, потім додайте notrack-uncensored як модель.

NextChat

Settings → увімкніть Custom Endpoint (сумісний з OpenAI) → базовий URL і ключ, потім введіть назву моделі в поле моделі.

Cherry Studio

Settings → Model Providers → Add Provider → введіть OpenAI → базовий URL і ключ, потім "Add model" → notrack-uncensored.

LobeChat

Settings → AI Service Provider → OpenAI → увімкніть custom API endpoint, вставте базовий URL і ключ, і додайте модель до списку моделей.

Щось інше

LangChain, LlamaIndex, Open WebUI, Continue, налаштування проксі JanitorAI, curl — будь-який клієнт із опцією "OpenAI-compatible" або "custom base URL".

Формулювання меню вище змінюється між версіями застосунку — якщо назва не збігається точно, шукайте налаштування, де згадується "custom", "OpenAI-compatible" або "base URL".

Якщо клієнт не підключається

Ключі

Питання або id запиту для перевірки: підтримку · uncensoredaichat.ai/support.