API нейросети онлайн
Для доступа к API нейросети оплатите запросы. Вы можете отправить в нейросеть до 10 000 символов текста за один раз (лишнее будет автоматически обрезано). Генерация ответа через API стоит 2 запроса.
Обработка запросов API производится на модели GPT-4o, поэтому ответы будут на уровне.
Совместимый с OpenAI Chat GPT API
Наш API полностью совместим с форматом OpenAI Chat GPT API. Просто замените базовый URL на наш домен и используйте стандартные запросы и любые стандартные библиотеки для работы с ChatGPT. Также подойдут совместимые плагины на WordPress и других CMS.
Request body
{
"model": "gpt-4o",
"messages": [
{
"role": "user",
"content": "Напиши сказку на ночь"
}
]
}
Описание
model можно указать любое значение (параметр игнорируется).messages массив сообщений в стандартном формате OpenAI.
Authorization заголовок: Bearer ваш_api_ключ (получить на https://textplus.ru/account).
Примеры использования
cURL
curl https://textplus.ru/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ваш_api_ключ" \
-d '{
"model": "gpt-4o",
"messages": [
{
"role": "user",
"content": "Напиши короткую сказку"
}
]
}'
Python
import requests
import json
url = "https://textplus.ru/v1/chat/completions"
headers = {
"Content-Type": "application/json",
"Authorization": "Bearer ваш_api_ключ"
}
data = {
"model": "gpt-4o",
"messages": [
{
"role": "user",
"content": "Напиши короткую сказку"
}
]
}
response = requests.post(url, headers=headers, json=data)
result = response.json()
print(result)
JavaScript
const url = 'https://textplus.ru/v1/chat/completions';
const headers = {
'Content-Type': 'application/json',
'Authorization': 'Bearer ваш_api_ключ'
};
const data = {
model: 'gpt-4o',
messages: [
{
role: 'user',
content: 'Напиши короткую сказку'
}
]
};
fetch(url, {
method: 'POST',
headers: headers,
body: JSON.stringify(data)
})
.then(response => {
if (!response.ok) {
throw new Error(`HTTP error! status: ${response.status}`);
}
return response.json();
})
.then(result => {
console.log(result);
// Обработка результата
})
.catch(error => {
console.error('Ошибка:', error);
});
Java
import java.io.IOException;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
public class TextPlusAPI {
public static void main(String[] args) throws IOException, InterruptedException {
String url = "https://textplus.ru/v1/chat/completions";
String jsonBody = """
{
"model": "gpt-4o",
"messages": [
{
"role": "user",
"content": "Напиши короткую сказку"
}
]
}
""";
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(url))
.header("Content-Type", "application/json")
.header("Authorization", "Bearer ваш_api_ключ")
.POST(HttpRequest.BodyPublishers.ofString(jsonBody))
.build();
HttpResponse<String> response = client.send(request,
HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}
PHP
<?php
$url = 'https://textplus.ru/v1/chat/completions';
$data = array(
'model' => 'gpt-4o',
'messages' => array(
array(
'role' => 'user',
'content' => 'Напиши короткую сказку'
)
)
);
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS => json_encode($data),
CURLOPT_HTTPHEADER => array(
'Content-Type: application/json',
'Authorization: Bearer ваш_api_ключ'
),
));
$response = curl_exec($curl);
$httpCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
if (curl_error($curl)) {
echo 'Ошибка cURL: ' . curl_error($curl);
} elseif ($httpCode >= 400) {
echo 'HTTP ошибка: ' . $httpCode;
} else {
$result = json_decode($response, true);
print_r($result);
}
curl_close($curl);
?>
Внутренний API TextPlus
Наш внутренний API предоставляет более детальный контроль над процессом генерации текста. В отличие от совместимого API, здесь используется асинхронная модель работы: вы создаете запрос, получаете ID и затем периодически проверяете статус выполнения.
Запросить генерацию ответа
Request body
{
"input_text": "Сказка на ночь",
"mode": "essay",
"key": "sx3sf-43xx-32g65-s65781"
}
Описание
input_text текст запроса к нейросети.mode режим работы нейросети.
key ключ доступа к API — можно получить на https://textplus.ru/account.
Response body
{
"request_id": 124551,
"status": "processing",
"balance": 356
}
Описание
request_id ID запроса для последующего получения ответа нейросети.status Статус ответа нейросети. Может быть "processing" или "failed".
error_message (опционально) Сообщение об ошибке.
balance Баланс. Проверить: /api/balance или на https://textplus.ru/account в графе "Оплаченные запросы".
import json
import requests
HOST_URL = 'https://textplus.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)
{
"request_id": 124551,
"status": "processing",
"balance": 356
}
{
"status": "failed",
"error_message": "Недостаточно запросов для генерации. Баланс: 2. Нужно: 4. Оплатить запросы: https://textplus.ru/price",
"balance": 3
}
{
"status": "failed",
"error_message": "Отсутствуют необходимые параметры: input_text"
}
Получить результат
Request body
{
"request_id": 124551,
"key": "sx3sf-43xx-32g65-s65781"
}
Описание
request_id ID запроса, который получен в методе /api/generate_response.key ключ доступа к API — получить на https://textplus.ru/account.
Response body
{
"request_id": 124551,
"status": "processing"
}
Описание
status Статус ответа нейросети. Может быть "processing", "failed" или "completed".result Ответ нейросети.
error_message (опционально) Сообщение об ошибке.
import json
import requests
HOST_URL = 'https://textplus.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)
{
"request_id": 124551,
"status": "completed",
"result": "Жили-были в далёком-далёком лесу маленькие, но очень дружные зверята. Каждый день они собирались у старого дуба, и их весёлый гомон разносился по всей округе. В этом лесу жили зайчонок Зефирка, бельчонок Рыжик, ёжик Колючка и лисенок Рыжик. Все они были самыми верными друзьями и обожали проводить время вместе.\n\nОднажды, когда наступил вечер, зверята собрались у большого костра. Ночь была тёплой, и звёзды ярко светили на небе. Они решили рассказать друг другу сказки на ночь, чтобы всем было хорошо и уютно.\n\nПервым начал свой рассказ зайчонок Зефирка:\n\n— Далеко-далеко в зачарованном лесу жил добрый волшебник. Он умел разговаривать с деревьями и животными, знал все тайны лесных троп и каждый день помогал всем жителям леса. Однажды к нему пришёл маленький утерянный птенец и попросил помочь найти дорогу домой...\n\nЗефирка вещал о приключениях доброго волшебника, о его невероятных подвигах и добрых делах, пока бельчонок Рыжик не успел уснуть на мягкой хвое, завернувшись в свой пушистый хвост.\n\nТеперь очередь была за ёжиком Колючкой. Он начал свою историю:\n\n— В старинном лесу стоял огромный замок, в котором жили храбрые рыцари и прекрасные принцессы. Одна из принцесс, по имени Аурелия, мечтала отправиться в дальние страны и увидеть мир. Однажды ей в руки попала старая карта, на которой был отмечен тайный путь к загадочному острову. Аурелия решилась отправиться в путешествие...\n\nКолючка рассказал о приключениях Аурелии, её смелости и находчивости. Лисенок Рыжик затаил дыхание от увлечения, слушая, как Аурелия преодолевала испытания и находила новых друзей на своём пути.\n\nКогда Колючка закончил, Лисенок Рыжик был готов поделиться своей сказкой:\n\n— На далеком острове, окружённом бирюзовыми водами, жил маленький дракончик Ато. Все думали, что драконы грозные и опасные, но Ато был добрым и дружелюбным. Однажды он нашёл волшебный кристалл, который мог исполнять желания...\n\nЛисенок фантазировал о приключениях Ато и его новых друзей, о том, как они вместе спасали остров от злых волков.\n\nВдруг поднялся лёгкий ветерок, заставивший огоньки костра задрожать, и ёжик Колючка заметил, что уже сильно светает. Костер догорел, а звездное небо начало бледнеть под приближающимися лучами солнца.\n\nДрузья посмотрели друг на друга и улыбнулись. Настала пора отдыхать. Зверята уснули там же, у костра, потянувшись в своих тёплых гнёздышках под открытым небом.\n\nИ как только последние звёзды исчезли с неба, наш лес снова окутала утренняя тишина. Их детские сны были полны сказок и чудес, а утро обещало новые приключения.\n\nТак и закончился этот волшебный вечер в лесу, полный доброты и любви, который зверята запомнят надолго. Спокойной ночи и вам, читайте добрые сказки и никогда не переставайте верить в чудеса."
}
{
"request_id": 124551,
"status": "processing"
}
{
"status": "failed",
"error_message": "Запрос с таким ID не найден"
}
Проверить баланс
Request body
{
"key": "sx3sf-43xx-32g65-s65781"
}
Описание
key ключ доступа к API — получить на https://textplus.ru/account.Response body
{
"balance": 356
}
Описание
balance Баланс. Также виден на https://textplus.ru/account в графе "Оплаченные запросы".error_message (опционально) Сообщение об ошибке.
import json
import requests
HOST_URL = 'https://textplus.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)
{
"balance": 356
}
{
"error_message": "Некорректный API ключ. Получить можно на https://textplus.ru/account"
}
Реализация на Python
import time
import json
import requests
HOST_URL = 'https://textplus.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 = 'essay' # Режим нейросети
input_text = 'Сказка на ночь'
print("Результат:\n", solve(api_key, mode, input_text))