Гайд · Миграция

Миграция с 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')

Вопросы о миграции

Сколько времени занимает миграция?

Это всего один клиентский модуль: новый ключ, новые имена полей, новый путь проверки статуса. Если ваш воркер уже отправляет задачи и делает polling, окружающий код менять не придется.

Нужно ли менять очередь задач?

Нет. Оба API асинхронны, поэтому используемый стек — будь то Celery, BullMQ, Inngest или cron — сохраняет свою структуру. Меняются только вызовы внутри самой задачи.

Что будет с уже сгенерированными изображениями?

Это обычные файлы в вашем хранилище, с ними ничего не произойдет. Миграция влияет только на последующие генерации, но не на то, что уже опубликовано.

Как сопоставить цены?

На странице сравнения стоимость вызова в credits у Photta сопоставляется с тарифами на странице цен FASHN с указанием даты фиксации каждой цифры. Итоговая выгода зависит от ваших объемов.

Можно ли использовать оба сервиса одновременно?

Да, и это самый безопасный способ миграции. Направьте часть каталога через новый endpoint, оцените результат на реальных товарах и затем переводите остальное.

Читать далее

Все показатели на этой странице взяты из документации API Photta · проверено

Запустите параллельно, затем переключайте

Направьте копию вашей очереди на новый эндпоинт и сравните результат самостоятельно.

  • 1.5–4 min
  • 5 credits при 2K · 6 credits при 4K
  • async, polling