API нейросети ТекстБот: документация

Чтобы использовать API нейросети, нужно подключить платные запросы. За раз в нейросеть можно отправить до 10 000 символов текста (лишнее будет автоматически обрезано). Цена одной генерации ответа через API — 2 запроса.

Запросы API обрабатываются моделью нейросети GPT-4o, поэтому в качестве генерации можно не сомневаться.





Запросить генерацию ответа

POST
/api/generate_response

Request body

{
    "input_text": "Расскажи три шутки",
    "mode": "article",
    "key": "5668ds-1122-44432-2211-88799d932"
}

Описание

input_text текст запроса к нейросети.
mode режим нейросети.
key ключ доступа к API — получить на https://textbot.ru/account.


Response body

{
    "request_id": 59877,
    "status": "processing",
    "balance": 596
}

Описание

request_id ID запроса для последующего получения ответа нейросети.
status Статус ответа нейросети. Может быть "processing" или "failed".
error_message (опционально) Сообщение об ошибке.
balance Баланс. Проверить: /api/balance или на https://textbot.ru/account в графе "Оплаченные запросы".



Загрузка...
import json
import requests
HOST_URL = 'https://textbot.ru/api/'


def post_request(endpoint, payload):
    url = f"{HOST_URL}{endpoint}"
    response = requests.post(url, data=json.dumps(payload))
    return response.json()


def generate_response(api_key, input_text, mode):
    payload = {'input_text': input_text, 'mode': mode, 'key': api_key}
    return post_request('generate_response', payload)
HTTP [200]
{
    "request_id": 59877,
    "status": "processing",
    "balance": 596
}
HTTP [403]
{
    "status": "failed",
    "error_message": "Недостаточно запросов для генерации. Баланс: 1. Нужно: 2. Оплатить запросы: https://textbot.ru/price",
    "balance": 1
}
HTTP [400]
{
    "status": "failed",
    "error_message": "Отсутствуют необходимые параметры: key"
}

Получить результат

POST
/api/status
Цена: 0

Request body

{
    "request_id": 59877,
    "key": "5668ds-1122-44432-2211-88799d932"
}

Описание

request_id ID запроса, который получен в методе /api/generate_response.
key ключ доступа к API — получить на https://textbot.ru/account.


Response body

{
    "request_id": 59877,
    "status": "processing"
}

Описание

status Статус ответа нейросети. Может быть "processing", "failed" или "completed".
result Ответ нейросети.
error_message (опционально) Сообщение об ошибке.



import json
import requests
HOST_URL = 'https://textbot.ru/api/'


def post_request(endpoint, payload):
    url = f"{HOST_URL}{endpoint}"
    response = requests.post(url, data=json.dumps(payload))
    return response.json()


def get_status(api_key, request_id):
    payload = {'request_id': request_id, 'key': api_key}
    return post_request('status', payload)
HTTP [200]
(Ответ успешно сгенерирован)
{
    "request_id": 59877,
    "status": "completed",
    "result": "Древний мир — это период возникновения цивилизаций, искусства и философии до начала средневековья."
}
HTTP [200]
(Ответ в процессе генерации)
{
    "request_id": 59877,
    "status": "processing"
}
HTTP [404]
{
    "status": "failed",
    "error_message": "Запрос с таким ID не найден"
}

Проверить баланс

POST
/api/balance
Цена: 0

Request body

{
    "key": "5668ds-1122-44432-2211-88799d932"
}

Описание

key ключ доступа к API — получить на https://textbot.ru/account.


Response body

{
    "balance": 596
}

Описание

balance Баланс. Также виден на https://textbot.ru/account в графе "Оплаченные запросы".
error_message (опционально) Сообщение об ошибке.



import json
import requests
HOST_URL = 'https://textbot.ru/api/'


def post_request(endpoint, payload):
    url = f"{HOST_URL}{endpoint}"
    response = requests.post(url, data=json.dumps(payload))
    return response.json()


def check_balance(api_key):
    payload = {'key': api_key}
    return post_request('balance', payload)
HTTP [200]
{
    "balance": 596
}
HTTP [403]
{
    "error_message": "Некорректный API ключ. Получить можно на https://textbot.ru/account"
}

ChatGPT-совместимый API (OpenAI)

TextBot.ru предоставляет эндпоинт, полностью совместимый с API OpenAI. Это позволяет использовать привычные библиотеки и инструменты (например, openai-python), просто изменив базовый URL.

POST
/v1/chat/completions

Описание

Для работы необходимо в настройках вашего клиента указать:

base_url: https://textbot.ru/v1
api_key: Ваш ключ доступа к API от TextBot.ru. Получить его можно в личном кабинете.

Параметр model является обязательным для совместимости с библиотекой OpenAI, но на данный момент он игнорируется, так как все запросы обрабатываются моделью GPT-4o.


Пример на Python с библиотекой OpenAI

from openai import OpenAI

# Укажите ваш API-ключ от textbot.ru
api_key = "5668ds-1122-44432-2211-88799d932"

client = OpenAI(
    api_key=api_key,
    base_url="https://textbot.ru/v1"
)

chat_completion = client.chat.completions.create(
    messages=[
        {
            "role": "user",
            "content": "Расскажи три шутки",
        }
    ],
    model="gpt-4o"
)

print(chat_completion.choices[0].message.content)

Пример на JavaScript


// Этот код можно выполнить прямо в браузере.

async function getCompletion() {
  // ВАЖНО: Не размещайте реальный API-ключ в коде на стороне клиента в продакшене!
  const apiKey = "5668ds-1122-44432-2211-88799d932";
  const url = "https://textbot.ru/v1/chat/completions";

  const data = {
    model: "gpt-4o",
    messages: [
      {
        role: "user",
        content: "Расскажи три шутки"
      }
    ]
  };

  try {
    const response = await fetch(url, {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json',
        'Authorization': `Bearer ${apiKey}`
      },
      body: JSON.stringify(data)
    });

    if (!response.ok) {
      const errorBody = await response.text();
      throw new Error(`HTTP error! status: ${response.status}, body: ${errorBody}`);
    }

    const result = await response.json();

    // Проверяем, что ответ содержит ожидаемые данные
    if (result.choices && result.choices.length > 0 && result.choices[0].message) {
      // Возвращаем только текст ответа
      return result.choices[0].message.content;
    } else {
      throw new Error("Получен некорректный формат ответа от API.");
    }

  } catch (error) {
    console.error("Ошибка внутри getCompletion:", error);
    // Пробрасываем ошибку дальше, чтобы ее можно было отловить снаружи
    throw error;
  }
}

// --- Основная логика ---
// Создаем главную async-функцию для вызова getCompletion
async function main() {
  try {
    console.log("Запрашиваем ответ...");
    // Здесь мы `await` самого метода getCompletion
    const completionText = await getCompletion();
    // А здесь печатаем полученный ответ в консоль
    console.log("Ответ от нейросети:", completionText);
  } catch (error) {
    console.error("Не удалось получить ответ от нейросети.");
  }
}

// Вызываем главную функцию, чтобы запустить весь процесс
main();

Реализация на Python (стандартное API)

import time
import json
import requests

HOST_URL = 'https://textbot.ru/api/'


def post_request(endpoint, payload):
    url = f"{HOST_URL}{endpoint}"
    response = requests.post(url, data=json.dumps(payload))
    return response.json()


def generate_response(api_key, input_text, mode):
    payload = {'input_text': input_text, 'mode': mode, 'key': api_key}
    return post_request('generate_response', payload)


def get_status(api_key, request_id):
    payload = {'request_id': request_id, 'key': api_key}
    return post_request('status', payload)


def check_balance(api_key):
    payload = {'key': api_key}
    return post_request('balance', payload)


def wait_for_completion(api_key, request_id, max_attempts=80, sleep_time=2):
    for _ in range(max_attempts):
        time.sleep(sleep_time)
        status_info = get_status(api_key, request_id)

        if status_info.get('status') == 'completed':
            return status_info['result']
        if status_info.get('status') == 'failed':
            print(f"Не удалось получить результат. Ошибка: {status_info.get('error_message', 'Неизвестная ошибка')}.")
            return None

    print("Истекло время ожидания результата.")
    return None


def solve(api_key, mode, input_text):
    response_info = generate_response(api_key, input_text, mode)

    if response_info.get('status') != 'processing':
        print(f"Не удалось запросить генерацию. Ошибка: {response_info.get('error_message', 'Неизвестная ошибка')}.")
        return None

    request_id = response_info['request_id']
    print(f"Создан запрос с id {request_id}.")

    return wait_for_completion(api_key, request_id)


if __name__ == '__main__':
    api_key = 'ВАШ_API_КЛЮЧ'
    mode = 'article'  # Режим нейросети
    input_text = 'Расскажи три шутки'
    print("Результат:\n", solve(api_key, mode, input_text))