Гайд · Миграция
Миграция с FASHN на Photta что меняется, а что нет
В двух словах
Перенос try-on интеграции на Photta означает новый bearer-токен, новое тело запроса и новый путь статуса. Сама схема интеграции — отправка, polling, скачивание, сохранение — не меняется.
- Типичное время: 1.5–4 min
- Кредиты: 5 credits при 2K · 6 credits при 4K
- Обработка: async, polling
Все показатели на этой странице взяты из документации API Photta · проверено
Коротко
Команды меняют try-on API по стандартным причинам: результат лучше подходит под их каталог, цена за изображение выгоднее на их объемах или требуется функциональность, которой нет у текущего провайдера — пакетный ghost mannequin, крупные планы деталей, переиспользование сгенерированных моделей в рамках сезона.
Три вещи: креды, тело запроса и путь статуса. Photta аутентифицирует по bearer-токену на каждом вызове, использует собственные имена полей и возвращает статус задачи на отдельном статусном эндпоинте под каждую функциональность. Каждое значение, отправляемое вашим кодом, задокументировано как enum или id, который можно предварительно запросить списком.
Архитектура. Оба API асинхронные (отправка и polling), поэтому ваша очередь, воркер, логика повторов (retry policy) и хранилище продолжают работать. На практике миграция сводится к новому клиентскому модулю и новому набору имен полей, а не к переписыванию всего пайплайна.
Эндпоинт, на который вы переходите
Взято напрямую из документации Photta API, без ручных правок.
Коротко о главном
- Эндпоинт
- POST /api/v1/tryon/apparel
- Аутентификация
- API-ключ Bearer
- Обработка
- Асинхронно — опрашивайте эндпоинт статуса
- Типичное время
- 1.5–4 min
- Кредиты
- 5 credits при 2K · 6 credits при 4K
- Соотношения сторон
- 3:4 · 1:1 · 4:3 · 9:16 · 16:9
- Ограничения на входные данные
- До 10 МБ на изображение; JPEG, PNG, WebP
- Идемпотентность
- Нет
Четыре вещи, которые действительно меняются
Аутентификация
Один Bearer-токен для каждого endpoint, созданный в вашей панели управления Photta. Без разделения на scopes по эндпоинтам и без шага обмена токенов.
Тело запроса
Photta принимает поля в snake_case с задокументированными enum, а также идентификаторы модели, позы и фона, которые вы получаете из ресурсных endpoints и кэшируете.
Polling
Опрашивайте statusEndpoint нужной функции каждые 3 секунды, пока он не вернет completed или failed. Вебхуков нет, поэтому вам не нужно открывать наружу новые публичные адреса.
Списание средств
Credits за каждый вызов — 5 при 2K и 6 при 4K для try-on одежды — списываются при старте задачи и автоматически возвращаются при сбое.
Новый запрос
Один и тот же вызов на cURL, Node.js и Python.
RESPONSE=$(curl -s -X POST https://api.photta.app/api/v1/tryon/apparel \
-H "Authorization: Bearer $PHOTTA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"product_type": "top",
"product_images": [
"https://cdn.yourstore.com/products/shirt-front.jpg"
],
"product_back_image": "https://cdn.yourstore.com/products/shirt-back.jpg",
"product_category": "t_shirt",
"mannequin_id": "mnk_f3a9b1",
"pose_id": "pose_c2d4e5",
"background": "https://cdn.yourstore.com/backgrounds/studio-loft.jpg",
"lock_background": true,
"resolution": "2K",
"aspect_ratio": "3:4",
"body_size": "M",
"expression": "neutral",
"user_instruction": "Keep the collar pattern crisp and centered."
}')
ID=$(echo "$RESPONSE" | jq -r '.data.id')const res = await fetch("https://api.photta.app/api/v1/tryon/apparel", {
method: "POST",
headers: { Authorization: `Bearer ${process.env.PHOTTA_API_KEY}`, "Content-Type": "application/json" },
body: JSON.stringify({
"product_type": "top",
"product_images": [
"https://cdn.yourstore.com/products/shirt-front.jpg"
],
"product_back_image": "https://cdn.yourstore.com/products/shirt-back.jpg",
"product_category": "t_shirt",
"mannequin_id": "mnk_f3a9b1",
"pose_id": "pose_c2d4e5",
"background": "https://cdn.yourstore.com/backgrounds/studio-loft.jpg",
"lock_background": true,
"resolution": "2K",
"aspect_ratio": "3:4",
"body_size": "M",
"expression": "neutral",
"user_instruction": "Keep the collar pattern crisp and centered."
}),
});
const { data } = await res.json(); // data.id, data.statusimport os, requests
res = requests.post(
"https://api.photta.app/api/v1/tryon/apparel",
headers={"Authorization": f"Bearer {os.environ['PHOTTA_API_KEY']}"},
json={
"product_type": "top",
"product_images": [
"https://cdn.yourstore.com/products/shirt-front.jpg"
],
"product_back_image": "https://cdn.yourstore.com/products/shirt-back.jpg",
"product_category": "t_shirt",
"mannequin_id": "mnk_f3a9b1",
"pose_id": "pose_c2d4e5",
"background": "https://cdn.yourstore.com/backgrounds/studio-loft.jpg",
"lock_background": True,
"resolution": "2K",
"aspect_ratio": "3:4",
"body_size": "M",
"expression": "neutral",
"user_instruction": "Keep the collar pattern crisp and centered."
},
)
data = res.json()["data"] # data["id"], data["status"]Вопросы о миграции
Сколько времени занимает миграция?
Это всего один клиентский модуль: новый ключ, новые имена полей, новый путь проверки статуса. Если ваш воркер уже отправляет задачи и делает polling, окружающий код менять не придется.
Нужно ли менять очередь задач?
Нет. Оба API асинхронны, поэтому используемый стек — будь то Celery, BullMQ, Inngest или cron — сохраняет свою структуру. Меняются только вызовы внутри самой задачи.
Что будет с уже сгенерированными изображениями?
Это обычные файлы в вашем хранилище, с ними ничего не произойдет. Миграция влияет только на последующие генерации, но не на то, что уже опубликовано.
Как сопоставить цены?
На странице сравнения стоимость вызова в credits у Photta сопоставляется с тарифами на странице цен FASHN с указанием даты фиксации каждой цифры. Итоговая выгода зависит от ваших объемов.
Можно ли использовать оба сервиса одновременно?
Да, и это самый безопасный способ миграции. Направьте часть каталога через новый endpoint, оцените результат на реальных товарах и затем переводите остальное.
Читать далее
Возможности
API виртуального try-on для одежды
REST API, примеряющий одежду на AI-манекены. Асинхронно, генерация за 1.5–4 минуты, 5 credits для 2K, 6 для 4K. Примеры для cURL, Node.js и Python.
ЧитатьСравнение
Photta против FASHN — прямое сравнение fashion AI API
Сравнение Photta и FASHN: эндпоинты, цены в credits, тарифные планы, лимиты параллельных запросов. Данные собраны с официальных страниц с тарифами обеих компаний на 2026-04-19. Никаких выдуманных цифр.
ЧитатьСправочник
Тарифы Photta API
Сколько стоит каждый endpoint Photta API в credits при 2K и 4K, как устроены списания и возвраты, и какие эндпоинты бесплатны. Никаких цен в деньгах за изображение.
ЧитатьСправочник
Rate limits в Photta API
Rate limit Photta API, его окно, заголовок Retry-After, интервал polling и ограничения параллелизма по планам — прямо из документации API.
ЧитатьБыстрый старт
Первое изображение в Photta менее чем за 5 минут.
Зарегистрируйтесь, сгенерируйте API-ключ, выполните первый вызов cURL, опрашивайте статус до завершения, сохраните результат. 5 шагов с полным описанием.
Читать
Все показатели на этой странице взяты из документации API Photta · проверено
Запустите параллельно, затем переключайте
Направьте копию вашей очереди на новый эндпоинт и сравните результат самостоятельно.
- 1.5–4 min
- 5 credits при 2K · 6 credits при 4K
- async, polling