Быстрый старт для пользователей OpenRouter NSFW
Интегрируйте наше API LLM без цензуры в существующую кодовую базу, обновив базовый URL и API-ключ. Это руководство охватывает стандартные эндпоинты, совместимые с OpenAI, потоковую передачу и обработку ограничений для прямого использования разработчиками.
Базовый URL и аутентификация
Замените базовый URL вашего текущего провайдера на https://api.openrouternsfw.com/v1. Аутентификация использует стандартный заголовок Authorization: Bearer <key>. Вы получаете ключ сразу после входа через Google или email на странице Получить API-ключ. Номер телефона не требуется, а ключ отображается только один раз, поэтому скопируйте его, прежде чем покинуть страницу.
Наш сервис — это независимое API, а не перепродавец моделей других вендоров. Идентификатор модели, который вы указываете в запросах, — uncensored, и он работает на наших собственных серверах. Он настроен на ответы без отказов по контенту для законного использования взрослыми, но это не GPT, Claude или какая-либо другая модель конкретного вендора.
Убедитесь, что ваша библиотека клиентских запросов настроена на использование этого нового базового URL. Все запросы должны содержать действительный API-ключ в заголовке. Если ключ отсутствует или недействителен, сервер возвращает ошибку 401. Если у вас нет предоплаченного баланса, вы получите ошибку 402. Это стандартные коды состояния HTTP, указывающие на проблемы аутентификации или оплаты, а не ошибки сервера.
Эндпоинт завершения чата
Основная функциональность предоставляется через эндпоинт POST /v1/chat/completions. Этот эндпоинт принимает тело в формате JSON, содержащее имя модели, массив сообщений и необязательные параметры. Он возвращает объект JSON с сгенерированным текстом, статистикой использования токенов и причиной завершения. Эта структура совместима с официальными SDK OpenAI и большинством клиентских библиотек, совместимых с OpenAI.
Вам не нужно писать собственные HTTP-клиенты, если вы предпочитаете использовать SDK. Однако вы должны обновить конфигурацию, указав наш базовый URL. Следующий пример демонстрирует стандартный запрос завершения с помощью cURL. Этот запрос отправляет промпт модели без цензуры и ожидает текстовый ответ.
curl https://api.openrouternsfw.com/v1/chat/completions \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "uncensored",
"messages": [{"role": "user", "content": "Write a blunt product review of a cheap VPN."}]
}'Помните, что это API обслуживает только текст. Нет эндпоинтов для эмбеддингов, изображений, аудио или видео. Если вашему приложению требуются мультимодальные входные или выходные данные, вам нужно обрабатывать их отдельно. Наш сервис сосредоточен исключительно на генерации высококачественного текста с использованием модели без цензуры.
Интеграция Python SDK
Использование Python SDK упрощает процесс интеграции. Инициализируйте клиент, указав правильный базовый URL и ваш API-ключ. Библиотека обрабатывает HTTP-запросы и парсинг JSON за вас. Вы можете указать идентификатор модели как uncensored, чтобы убедиться, что используете именно нашу модель.
from openai import OpenAI
client = OpenAI(base_url="https://api.openrouternsfw.com/v1", api_key="YOUR_KEY")
resp = client.chat.completions.create(
model="uncensored",
messages=[{"role": "user", "content": "Summarise this thread without softening it."}],
)
print(resp.choices[0].message.content)Этот фрагмент кода показывает, как отправить сообщение и получить ответ. Клиент автоматически обрабатывает подключение и отчеты об ошибках. Если сервер возвращает ошибку, SDK вызывает исключение. Вам следует обрабатывать эти исключения в логике вашего приложения, чтобы улучшить пользовательский опыт.
Python SDK — это лишь один из вариантов. Вы можете использовать любой язык, поддерживающий HTTP-запросы. Структура эндпоинта остается неизменной независимо от выбранного клиента. Эта гибкость позволяет интегрировать модель без цензуры в любой существующий рабочий процесс без значительных изменений в коде.
Использование Node SDK
Node SDK работает аналогично версии для Python. Настройте клиент, указав базовый URL и API-ключ, затем вызовите метод завершения чата. Этот подход идеален для серверных приложений или бэкенд-сервисов, которым требуется асинхронная генерация текста.
import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://api.openrouternsfw.com/v1", apiKey: process.env.API_KEY });
const resp = await client.chat.completions.create({
model: "uncensored",
messages: [{ role: "user", content: "Draft a villain monologue for my game." }],
});
console.log(resp.choices[0].message.content);Разработчики Node.js могут легко интегрировать это API в свои существующие проекты. SDK обрабатывает сериализацию и десериализацию данных JSON. Вы также можете указать дополнительные параметры, такие как temperature или top_p, чтобы контролировать случайность вывода.
Убедитесь, что правильно обрабатываете асинхронную природу запросов. Используйте async/await или цепочки промисов для обработки данных ответа. Это позволяет вашему приложению оставаться отзывчивым во время ожидания генерации текста моделью. Node SDK — надёжный выбор для создания масштабируемых сервисов генерации текста.
Потоковые ответы
Включите потоковую передачу, установив параметр stream в значение true в вашем запросе. Сервер будет отправлять серию событий Server-Sent Events (SSE) вместо одного JSON-ответа. Каждое событие содержит частичный фрагмент сгенерированного текста.
stream = client.chat.completions.create(
model="uncensored",
messages=[{"role": "user", "content": "Tell the story in second person."}],
stream=True,
)
for chunk in stream:
if chunk.choices and chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="", flush=True)Потоковая передача полезна для приложений реального времени, где вы хотите отображать вывод по мере его генерации. Последний фрагмент потока содержит общее использование токенов для запроса. Это позволяет точно отслеживать расходы, не дожидаясь завершения всего ответа.
Внимательно обрабатывайте события потока, чтобы убедиться, что текст собран правильно. Соединяйте фрагменты в порядке их получения. Сервер гарантирует, что фрагменты отправляются последовательно. Если соединение прервано, вам может потребоваться повторить запрос. Потоковая передача — это мощная функция, которая улучшает пользовательский опыт при задачах генерации текста.
Лимиты запросов и контекстное окно
Каждый API-ключ ограничен 300 запросами в минуту и 8 параллельными запросами. Размер тела запроса ограничен 8 МБ. Если вы превысите эти лимиты, сервер вернёт статус 429. Это стандартный код HTTP, означающий, что вы отправили слишком много запросов за определённый промежуток времени. В клиенте следует реализовать экспоненциальный backoff для корректной обработки таких ошибок.
Контекстное окно поддерживает до 100,000 токенов для объединённых промпта и завершения. Отдельного ограничения на длину вывода нет. Если вы не укажете параметр max_tokens, ответ может занять весь доступный контекст. Вы можете ограничить длину вывода, установив max_tokens на меньшее значение.
Отслеживайте использование токенов, чтобы эффективно управлять предоплаченным балансом. Ошибки и отказы не потребляют токены, поэтому вы не платите за неудачные запросы. Это гарантирует, что вы платите только за успешную генерацию текста. Следите за лимитами запросов, чтобы избежать прерывания сервиса.
Технические характеристики
Все реальные лимиты и возможности API в одном месте — сверьте их до пополнения.
| Параметр | Значение |
|---|---|
| Формат API | совместим с OpenAI: любой OpenAI SDK работает — замените base URL и ключ |
| Авторизация | Authorization: Bearer YOUR_KEY |
| Эндпоинты | POST /v1/chat/completions · GET /v1/models |
| Base URL | https://api.openrouternsfw.com/v1 |
| ID модели | uncensored |
| JSON-режим | response_format: {"type": "json_object"} |
| Максимум ответа | до остатка окна в 100 000 токенов; max_tokens необязателен (отдельного лимита нет) |
| Контекстное окно | 100 000 токенов (вход и ответ вместе) |
| Параметры | temperature, top_p, stop, seed, presence_penalty, frequency_penalty |
| Вызов функций | да — tools, tool_choice; ответ содержит tool_calls, в том числе в потоке; результат — сообщением role: tool |
| Потоковая передача | да — server-sent events, последний фрагмент содержит расход токенов |
| Заголовки ответа | X-Request-Id, X-Balance-USD, X-RateLimit-Limit-Requests, X-RateLimit-Limit-Concurrency |
| Размер запроса | до 8 МБ |
| Параллельные запросы | до 8 одновременно на ключ |
| Лимит запросов | 300 запросов в минуту на ключ |
| Пополнение | USDT (TRC20) или USDC (Base), любая целая сумма от $20 до $500 |
| Срок действия | оплаченный баланс не сгорает, без подписки |
| Оплата | предоплаченный баланс по фактическому расходу; ошибки и отказы бесплатны |
| Пробный баланс | $0,50 на 7 дней, без карты · Пробный ключ: 2 параллельных запроса, 60 в минуту; полные лимиты (8 и 300) после первого пополнения |
| Бонус | +5% от $50, +10% от $100, +15% от $200 |
| Цена | $0,15 за 1 млн входных токенов · $0,50 за 1 млн выходных |
| Контент | контент для взрослых разрешён; сексуальный контент с несовершеннолетними запрещён |
| Вход | Google или e-mail и пароль |
| Ключи | один активный ключ на аккаунт; новый заменяет старый |
Коды ошибок
Ошибки приходят в JSON с постоянным type; неудачные и отклонённые запросы не оплачиваются.
| Код | Тип | Что значит |
|---|---|---|
400 | bad_request | неверный JSON, пустые сообщения, неверный параметр или превышено окно контекста |
401 | missing_key · invalid_key · key_revoked | нет ключа, ключ неверный или заменён новым |
402 | no_credit | баланс пуст — пополните, работа продолжится сразу |
403 | content_blocked | сексуальный контент с несовершеннолетними — отказ, без оплаты |
404 | not_found | неизвестный эндпоинт |
413 | request_too_large | тело запроса больше 8 МБ |
429 | rate_limited · concurrency | больше 300/мин или 8 параллельно — подождите и повторите |
503 | upstream_busy | модель занята — повторите через несколько секунд |
Вопросы и ответы
Чем модель без цензуры отличается от других поставщиков?
Наша модель — это модель с открытыми весами, работающая на наших собственных серверах, настроенная на ответы без отказов по контенту для законного использования взрослыми. Это не GPT, Claude, Gemini, Grok, DeepSeek, Qwen, Llama и не какая-либо другая модель вендора. Мы не маршрутизируем запросы между вендорами; мы обслуживаем один эндпоинт без цензуры.
Что произойдёт, если я превышу лимит запросов?
Если вы превысите лимит в 300 запросов в минуту или 8 параллельных запросов на ключ, сервер вернет статус 429. Это стандартный код состояния HTTP, указывающий на то, что вы отправили слишком много запросов за определенный промежуток времени. Вам следует реализовать логику отката в клиенте для обработки этих ошибок.
Поддерживает ли API вызов функций и JSON-режим?
Да, API поддерживает вызов функций (tools, tool_choice) и JSON-режим (response_format json_object). Вы также можете указать параметры, такие как temperature, top_p, stop, seed, presence_penalty и frequency_penalty, чтобы контролировать вывод.
Ваш ключ — всего в одной форме
Создайте аккаунт, скопируйте ключ, измените базовый URL. Это вся настройка.
Получить API-ключ