TEXTAGRAM.ru API
Документация API для генерации описания товара по фотографии
Вы можете интегрировать функциональность TEXTAGRAM в свои системы и приложения с помощью нашего API. Для этого нужно зарегистрироваться в TEXTAGRAM.ru и получить API KEY в профиле.
Для всех запросов необходимо передавать API KEY в HTTP-заголовке Authorization:
Authorization: Bearer <API_KEY>
Запрос: генерация текстов по фото
POST /api/text/product
Вызов генерирует карточку товара и возвращает сгенерированные тексты (описание, заголовки и др.).
Параметры запроса (JSON)
| Поле | Тип | Обяз. | Описание |
|---|---|---|---|
image_url |
string | Да | Ссылка на изображение товара ИЛИ строка data:image/...;base64,... ИЛИ «чистая» base64-строка. |
short_description |
string (max: 500) | Да | Краткое описание товара. |
style |
string | Да | Стиль оформления описания (допустимые значения: 'standard','playful','marketing','friendly','storytelling'). |
length |
integer | Нет | Желаемая длина описания. Если не задано — 350. |
Ответ (200 OK)
{
"success": true,
"error": null,
"data": {
"uid": "01JABCDEFGH...",
"created_at": "2025-08-23T12:34:56.000000Z",
"style": "standard",
"style_name": "Стандартный",
"description": "...сгенерированный текст...",
"description_length": 234,
"features": ["..."],
"headers": ["..."]
}
}
В случае ошибки возвращается { success: false, error: "..." } с кодом 400.
Примеры вызова
PHP (Guzzle)
<?php
require __DIR__ . '/vendor/autoload.php';
use GuzzleHttp\Client;
$baseUrl = 'http://textagram.loc';
$token = '1|YOUR_TOKEN_HERE';
// Варианты image_url: обычный URL, data:image/...;base64,... или «чистая» base64-строка
$imageUrl = 'https://via.placeholder.com/300';
$client = new Client(['base_uri' => $baseUrl, 'timeout' => 30, 'http_errors' => false]);
$payload = [
'image_url' => $imageUrl,
'short_description' => 'Краткое описание товара',
'style' => 'modern',
// 'creativity' => 'balanced',
// 'length' => 200,
];
$response = $client->post('/api/text/product', [
'headers' => [
'Authorization' => 'Bearer ' . $token,
'Accept' => 'application/json',
'Content-Type' => 'application/json',
],
'json' => $payload,
]);
echo $response->getStatusCode() . "\n";
echo (string) $response->getBody() . "\n";
Python (requests)
import requests
base_url = 'http://textagram.loc'
token = '1|YOUR_TOKEN_HERE'
headers = {
'Authorization': f'Bearer {token}',
'Accept': 'application/json',
'Content-Type': 'application/json',
}
payload = {
'image_url': 'https://via.placeholder.com/300',
'short_description': 'Краткое описание товара',
'style': 'modern',
# 'creativity': 'balanced',
# 'length': 200,
}
r = requests.post(base_url + '/api/text/product', json=payload, headers=headers, timeout=30)
print(r.status_code)
print(r.text)
Node.js (axios)
import axios from 'axios';
const baseUrl = 'http://textagram.loc';
const token = '1|YOUR_TOKEN_HERE';
const payload = {
image_url: 'https://via.placeholder.com/300',
short_description: 'Краткое описание товара',
style: 'modern',
// creativity: 'balanced',
// length: 200,
};
axios.post(baseUrl + '/api/text/product', payload, {
headers: {
Authorization: `Bearer ${token}`,
Accept: 'application/json',
'Content-Type': 'application/json',
},
timeout: 30000,
}).then(res => {
console.log(res.status);
console.log(res.data);
}).catch(err => {
if (err.response) {
console.error(err.response.status, err.response.data);
} else {
console.error(err.message);
}
});