Быстрый старт
Первое фото в Photta менее чем за пять минут.
Один аккаунт, один API-ключ, пять команд в терминале. Шаги ниже в точности соответствуют рекомендациям из документации — без лишних оберток и сложных фреймворков.
Суть
Зарегистрируйтесь на ai.photta.app, создайте API-ключ, экспортируйте его как PHOTTA_API_KEY, отправьте POST на /api/v1/tryon/apparel и опрашивайте ID генерации каждые 3 секунды до статуса completed — обычно это занимает 1.5–4 минуты.
Как это работает
Пять команд от нуля до результата
Вставляйте их в терминал по порядку. Каждый фрагмент автономен и требует только curl и jq.
- 01
Шаг 1
Создайте API-ключ
Зайдите на ai.photta.app в панель Developers. Нажмите Generate API key — ключи начинаются с photta_live_. Экспортируйте его, чтобы команды терминала могли его прочитать.
# Sign up at ai.photta.app, open the Developers dashboard, # click "Generate API key" and copy it into your env. export PHOTTA_API_KEY="photta_live_xxxxx" export PHOTTA_BASE_URL="https://ai.photta.app/api/v1" - 02
Шаг 2
Отправьте первую примерку
Вызовите /api/v1/tryon/apparel, передав URL фото, ID манекена и ID позы. API вернет 202 Accepted и ID генерации в data.id.
curl -X POST "$PHOTTA_BASE_URL/tryon/apparel" \ -H "Authorization: Bearer $PHOTTA_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "product_type": "dress", "product_images": ["https://example.com/dress.jpg"], "mannequin_id": "mnq_athena_ts", "pose_id": "pose_standing_front", "resolution": "2K", "aspect_ratio": "3:4" }' # Response: 202 Accepted + data.id (generation ID) - 03
Шаг 3
Опрашивайте до готовности
Делайте GET /api/v1/tryon/apparel/:id каждые 3 секунды. Время выполнения обычно 1.5–4 минуты. Не забудьте про лимит попыток в скрипте.
# Loop every 3 seconds until status flips to "completed". # Typical completion: 1.5–4 minutes. Max 120 attempts = 6 min. for i in $(seq 1 120); do RESULT=$(curl -s "$PHOTTA_BASE_URL/tryon/apparel/$ID" \ -H "Authorization: Bearer $PHOTTA_API_KEY") STATUS=$(echo "$RESULT" | jq -r '.data.status') [ "$STATUS" = "completed" ] && break [ "$STATUS" = "failed" ] && echo "Job failed" && exit 1 sleep 3 done - 04
Шаг 4
Сохраните результат
Когда статус станет completed, в data.output_url будет ссылка на фото. Скачайте его в свое хранилище, чтобы не зависеть от CDN Photta.
# Pull the final URL out of the response and save the bytes. OUTPUT_URL=$(echo "$RESULT" | jq -r '.data.output_url') curl -sO "$OUTPUT_URL" echo "Saved $(basename "$OUTPUT_URL")" - 05
Шаг 5
Учитывайте возможные ошибки
Проверяйте HTTP-код: 402 — пополните баланс, 429 — подождите (Retry-After), 5xx — повторите позже. Каждая ошибка содержит машиночитаемый error.code.
# Surface the common failure modes honestly. case "$STATUS_CODE" in 402) echo "Out of credits — top up at ai.photta.app" ;; 429) echo "Rate limited — honour Retry-After header" ;; 4??) echo "Client error: $(echo "$BODY" | jq '.error.message')" ;; 5??) echo "Server error — retry with backoff" ;; esac
Вопросы других разработчиков
Вопросы по началу работы
Сколько времени занимает быстрый старт?+
Около пяти минут на регистрацию и запуск первой команды. Сама генерация идет 1.5–4 минуты, так что на всё про всё уйдет около десяти минут.
Нужна ли кредитная карта для теста?+
Новые аккаунты получают пробные кредиты бесплатно. Карта потребуется только при переходе на платный тариф с более высокими лимитами.
Какой эндпоинт попробовать первым?+
Примерку одежды (/api/v1/tryon/apparel) — это самый популярный метод с самой подробной документацией. Все остальные эндпоинты работают по тому же принципу async + poll.
Можно ли вызывать API из браузера?+
Нет. Ваш API-ключ должен оставаться на сервере. Его передача в браузер — это утечка ключа. Используйте прокси на вашем бэкенде (Next.js route, Express, Flask, Lambda).