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