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. |
stream | true для 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т | Значення | При перевищенні |
|---|---|---|
| Одночасних запитів на ключ | 8 | 429 concurrency |
| Запитів на хвилину на ключ | 300 | 429 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" } }
| HTTP | type | Що робити |
|---|---|---|
| 400 | body | Некоректний JSON або відсутній messages. |
| 400 | context_limit | Prompt занадто довгий для вікна 100,000 токенів. Приберіть старіші повідомлення. |
| 400 | content_policy + X-NoTrack-Content-Flag: minor_in_sexual_context | Сцена сприймається як сексуальна, а персонаж сприймається як неповнолітній. Зробіть персонажів безумовно дорослими і надішліть повторно; не тарифікується. |
| 401 | auth, invalid_key, key_revoked, key_expired | Виправте або замініть ключ. |
| 402 | no_credit | Баланс нульовий. Пополніть баланс; запити відновлюються негайно. |
| 402 | key_daily_cap | Цей ключ досяг денної стелі, яку ви встановили. Підвищте її або зачекайте до 00:00 UTC. |
| 403 | content_policy + X-NoTrack-Content-Flag: child_safety | Відхилено і не тарифіковано. Див. Політика контенту. |
| 429 | rate_limit, concurrency | Зменшіть частоту запитів і повторіть; дотримуйтесь обох заголовків X-RateLimit-*. |
| 502 | upstream | Модель не відповіла. Повторіть із затримкою; не тарифікується. |
| 503 | billing, safety | Один із наших залежних сервісів недоступний. Повторіть за кілька секунд; не тарифікується. |
Оплата
Передплачений баланс, тарифікується за токен на основі реального usage кожної відповіді: $0.25 за 1 млн вхідних токенів, $1.00 за 1 млн вихідних токенів. Вхід — це все, що ви надсилаєте (системний промт, історія, нове повідомлення); вихід — це те, що пише модель.
- Ваш перший ключ надходить з $0.50 безкоштовного балансу, дійсного 7 днів — достатньо для інтеграції та тестування. Для ключа потрібна підтверджена електронна пошта (саме туди приходить повідомлення "баланс закінчується"). Оплачений баланс не має терміну дії.
- Баланс не має терміну дії, немає підписки, і нічого не продовжується автоматично. Поповнюйте баланс карткою або в USDT/USDC на сторінці ключів.
- За відхилені запити (
4xx) або невдалі (5xx) нічого не стягується. Запит тарифікується один раз, після відповіді, на основі йогоX-Request-Id. - Коли баланс закінчується →
402 no_credit, поки ви не пополните його. Встановіть денну стелю для кожного ключа, щоб витік ключа не спустошив рахунок. - Кредити не повертаються, за винятком випадку, коли ми не можемо надати нашу послугу; вони не згорають і можуть бути зараховані в рахунок підписки. Дивіться Кредити та повернення коштів.
Персона — гола модель або персонаж Uncensored AI
Кожен ключ має стиль, який обирається на сторінці ключів і може змінюватися будь-коли:
- Чиста (за умовчанням) — ваш системний промт становить увесь промт. Ми додаємо один рядок ідентифікації і нічого більше.
- Персона Uncensored AI — персонаж і стиль чату на uncensoredaichat.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 child_safety— запит шукав сексуальний контент за участю дитини. Відхилено, не тарифіковано, зафіксовано як подію безпеки.400 minor_in_sexual_context— сцена сексуальна, а персонаж сприймається як молодший 18 років (вказаний вік, шкільна обстановка, формулювання "дівчинка/хлопчик"). Це не заборона: зробіть вік і формулювання безумовно дорослими і надішліть повторно.
Повторювані 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".
Якщо клієнт не підключається
- 401 / "invalid API key" — ключ узагалі не дійшов. Переконайтеся, що клієнт надсилає
Authorization: Bearer sk-…з повним ключем, включно з префіксом. - 404 / невідомий ендпоінт — клієнти по-різному вирішують, чи додавати
/v1самостійно. Якщоhttps://api.uncensoredaichat.ai/v1дає 404, спробуйтеhttps://api.uncensoredaichat.aiяк базовий URL замість нього (або навпаки). - "The Responses API is not supported yet" — деякі новіші клієнти за умовчанням використовують Responses API від OpenAI. Ми підтримуємо тільки Chat Completions; перемкніть клієнта в цей режим.
- Порожній список моделей — деякі клієнти заповнюють його лише після перевірки дійсного ключа. Введіть
notrack-uncensoredвручну. - Нічого не відбувається у клієнті Ollama / llama.cpp — вони використовують власний протокол, не сумісний з OpenAI. Скористайтеся одним із клієнтів вище замість цього.
Ключі
- До 20 активних ключів на рахунок. Дайте кожному застосунку свій ключ і свою денну стелю.
- Опційна дата закінчення дії; відкликання ключа зупиняє його негайно і не може бути скасовано — натомість видайте новий.
- Сторінка ключів показує витрати за кожним ключем, останнє використання і 30-денні підсумки рахунку.
Питання або id запиту для перевірки: підтримку · uncensoredaichat.ai/support.