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

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

Запросы 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": "Недостаточно запросов для генерации. Баланс: 3. Нужно: 4. Оплатить запросы: https://textbot.ru/price",
    "balance": 3
}
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"
}

Реализация на Python

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))