Разработка · No-code автоматизация
Автоматизация каталога без написания кода
В двух словах
При запуске без кода отправляется пачка фотографий товаров через одну HTTP-ноду, выдерживается пауза в 3 секунды, опрашивается статус пакета, и процесс повторяется до завершения, после чего URL-адреса записываются обратно в таблицу.
- Кредиты: 4 credits при 2K · 5 credits при 4K
- Типичное время: 1.5–4 min per image
- Обработка: async, polling
Все показатели на этой странице взяты из документации API Photta · проверено
HTTP-нода, нода ожидания и условие. n8n, Make или любой инструмент с поддержкой HTTP может прогнать весь каталог через batch endpoint.
RESPONSE=$(curl -s -X POST https://api.photta.app/api/v1/ghost-mannequin/batch \
-H "Authorization: Bearer $PHOTTA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"product_images": [
{
"image": "https://cdn.yourstore.com/products/jacket-front.jpg",
"back_image": "https://cdn.yourstore.com/products/jacket-back.jpg",
"image_side": "front"
},
{
"image": "https://cdn.yourstore.com/products/shirt-front.jpg",
"image_side": "front"
},
{
"image": "https://cdn.yourstore.com/products/trousers-front.jpg",
"image_side": "front"
}
],
"style": "3d",
"background_color": "white",
"resolution": "2K",
"aspect_ratio": "3:4",
"user_instruction": "closed front, buttoned up",
"brand_label_id": "7cc9f988-068b-44cd-8004-22f486b10e67"
}')
ID=$(echo "$RESPONSE" | jq -r '.data.id')const res = await fetch("https://api.photta.app/api/v1/ghost-mannequin/batch", {
method: "POST",
headers: { Authorization: `Bearer ${process.env.PHOTTA_API_KEY}`, "Content-Type": "application/json" },
body: JSON.stringify({
"product_images": [
{
"image": "https://cdn.yourstore.com/products/jacket-front.jpg",
"back_image": "https://cdn.yourstore.com/products/jacket-back.jpg",
"image_side": "front"
},
{
"image": "https://cdn.yourstore.com/products/shirt-front.jpg",
"image_side": "front"
},
{
"image": "https://cdn.yourstore.com/products/trousers-front.jpg",
"image_side": "front"
}
],
"style": "3d",
"background_color": "white",
"resolution": "2K",
"aspect_ratio": "3:4",
"user_instruction": "closed front, buttoned up",
"brand_label_id": "7cc9f988-068b-44cd-8004-22f486b10e67"
}),
});
const { data } = await res.json(); // data.id, data.statusimport os, requests
res = requests.post(
"https://api.photta.app/api/v1/ghost-mannequin/batch",
headers={"Authorization": f"Bearer {os.environ['PHOTTA_API_KEY']}"},
json={
"product_images": [
{
"image": "https://cdn.yourstore.com/products/jacket-front.jpg",
"back_image": "https://cdn.yourstore.com/products/jacket-back.jpg",
"image_side": "front"
},
{
"image": "https://cdn.yourstore.com/products/shirt-front.jpg",
"image_side": "front"
},
{
"image": "https://cdn.yourstore.com/products/trousers-front.jpg",
"image_side": "front"
}
],
"style": "3d",
"background_color": "white",
"resolution": "2K",
"aspect_ratio": "3:4",
"user_instruction": "closed front, buttoned up",
"brand_label_id": "7cc9f988-068b-44cd-8004-22f486b10e67"
},
)
data = res.json()["data"] # data["id"], data["status"]Как это работает
Таблица на входе, папка с изображениями на выходе
Экспортируйте каталог, настройте одну HTTP-ноду, зациклите с паузами, запишите URL-адреса обратно.
Шаг 1
Экспорт каталога
Одна строка на предмет одежды с публичным URL изображения. Эта колонка — единственные входные данные, которые требуются для batch endpoint.
Шаг 2
Получение API-ключа Photta
Сохраните его в хранилище учетных данных вашего инструмента автоматизации, а не в теле ноды, чтобы экспортированные воркфлоу не содержали секретов.
Шаг 3
Настройка HTTP-ноды
POST, заголовок Bearer и тело JSON, показанное здесь. Каждый элемент в массиве — один предмет одежды; поля стилизации применяются ко всем элементам сразу.
Шаг 4
Цикл с паузами
Подождите 3 секунды, запросите статус пакета, проверьте, завершен ли он, и повторите при необходимости. Этот интервал рекомендован в документации.
Шаг 5
Соблюдайте лимиты
Ограничение на размер пакета и лимит параллельных пакетов зависят от вашего тарифного плана. Отправьте один пакет, дождитесь завершения, затем отправляйте следующий.
Шаг 6
Запись URL-адресов обратно
Когда пакет завершен, каждый элемент содержит свой собственный output URL. Запишите их в таблицу и скачайте файлы в рамках того же прогона.
Ноды и их содержимое
Тело запроса берется прямо из примеров в документации API; цикл использует документированный интервал polling.
{
"product_images": [
{
"image": "https://cdn.yourstore.com/products/jacket-front.jpg",
"back_image": "https://cdn.yourstore.com/products/jacket-back.jpg",
"image_side": "front"
},
{
"image": "https://cdn.yourstore.com/products/shirt-front.jpg",
"image_side": "front"
},
{
"image": "https://cdn.yourstore.com/products/trousers-front.jpg",
"image_side": "front"
}
],
"style": "3d",
"background_color": "white",
"resolution": "2K",
"aspect_ratio": "3:4",
"user_instruction": "closed front, buttoned up",
"brand_label_id": "7cc9f988-068b-44cd-8004-22f486b10e67"
}RESPONSE=$(curl -s -X POST https://api.photta.app/api/v1/ghost-mannequin/batch \
-H "Authorization: Bearer $PHOTTA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"product_images": [
{
"image": "https://cdn.yourstore.com/products/jacket-front.jpg",
"back_image": "https://cdn.yourstore.com/products/jacket-back.jpg",
"image_side": "front"
},
{
"image": "https://cdn.yourstore.com/products/shirt-front.jpg",
"image_side": "front"
},
{
"image": "https://cdn.yourstore.com/products/trousers-front.jpg",
"image_side": "front"
}
],
"style": "3d",
"background_color": "white",
"resolution": "2K",
"aspect_ratio": "3:4",
"user_instruction": "closed front, buttoned up",
"brand_label_id": "7cc9f988-068b-44cd-8004-22f486b10e67"
}')
ID=$(echo "$RESPONSE" | jq -r '.data.id'){
"nodes": [
{
"name": "Wait",
"type": "n8n-nodes-base.wait",
"parameters": {
"amount": 3,
"unit": "seconds"
}
},
{
"name": "Read batch",
"type": "n8n-nodes-base.httpRequest",
"parameters": {
"method": "GET",
"url": "https://api.photta.app/api/v1/ghost-mannequin/batch/{{ $json.data.batch_id }}"
}
},
{
"name": "Done?",
"type": "n8n-nodes-base.if",
"parameters": {
"conditions": {
"string": [
{
"value1": "={{ $json.data.status }}",
"value2": "completed"
}
]
}
}
}
]
}# 600 requests per minute per key, fixed window.
# One batch submission plus one poll every 3 seconds is ~21 requests per minute
# per batch in flight, so the concurrency cap binds long before the rate limit.
# On a 429, wait the Retry-After seconds (30 by default) before the next node runs.Частые вопросы разработчиков
Вопросы о сценариях без кода
Нужно ли писать код?
Нет. Здесь всё представляет собой HTTP-запрос с телом JSON, который умеет отправлять любой инструмент автоматизации. Единственный текст, который вы вводите, — это тело запроса, приведенное на этой странице.
Сколько изображений помещается в один прогон?
Лимит API на пакет составляет 5 изображений на тарифах Free и Hobby, 10 на Seller, 25 на Brand и 50 на Studio. Каталоги большего объема запускаются несколькими пакетами один за другим.
Что произойдет, если обработка одного изображения завершится ошибкой?
Остальная часть пакета продолжит выполняться. В теле ответа пакета указано, сколько задач завершилось со статусом completed, а сколько — со статусом failed, при этом credits за неудачные элементы возвращаются.
Можно ли запускать это по расписанию?
Да. Запускайте воркфлоу каждую ночь и обрабатывайте строки, в которых еще нет изображений. Цикл polling работает одинаково вне зависимости от того, запускает ли его человек или планировщик.
Работает ли это в Make или Zapier?
В любом сервисе, где можно отправить HTTP-запрос с заголовком и телом JSON, а также настроить ожидание между шагами. Названия нод могут отличаться, но сами три шага остаются прежними.
Связанные страницы
Материалы по теме
Возможности
Пакетный ghost mannequin API для каталогов целиком
Отправляйте множество фотографий одежды в одном запросе ghost mannequin. Отдельные id для каждого элемента, общий polling и предварительное резервирование credits. 4 credits за изображение в 2K.
ЧитатьБыстрый старт
Первое изображение в Photta менее чем за 5 минут.
Зарегистрируйтесь, сгенерируйте API-ключ, выполните первый вызов cURL, опрашивайте статус до завершения, сохраните результат. 5 шагов с полным описанием.
ЧитатьRate limits
ЧитатьPricing
Читать
Все показатели на этой странице взяты из документации API Photta · проверено
Каталог без участия разработчика
Одна HTTP-нода и ожидание. Тело запроса на этой странице взято прямо из документации.