Як вбудувати API генерації зображень у процеси агенції: ключі, облік і архів

Автор: The Fellowi Team · · 8 хв читання

Порожній робочий стіл продакшн-відділу агентства в сутінках, де широкий монітор світиться сіткою мініатюр зображень поруч із темним вікном термінала, а поруч зовнішній жорсткий диск і відкритий блокнот із намальованою від руки схемою з прямокутників і стрілок, усе м'яко освітлено світінням екрана та згасаючим денним світлом.

Довідник з API пояснює, як зробити одну картинку. В агенції задача інша: тисячі картинок, десяток клієнтів, троє людей, які натискають кнопки, і один фінансист, який наприкінці місяця питає, хто скільки витратив. Нічого складного тут немає, але помилитися в будь-якій частині легко вже за перший тиждень. Нижче шість правил, і кожне взяте з того, як API поводиться насправді, а не з того, як нам хотілося б. Якщо ви ще не надіслали жодного запиту, почніть із вступу до API.

Правило 1: один ключ на клієнта, один гаманець за ними

Ключі створюються в API Console, кожен має назву, а повний ключ показується рівно один раз. Називайте їх за клієнтами. Ключ, що витік, або ключ клієнта, з яким закінчився договір, відкликається окремо, а решта працює далі. Чого ключі не роблять, так це не розділяють гроші: усі ключі акаунта витрачають один і той самий баланс монет. Якщо двом клієнтам у жодному разі не можна ділити баланс, потрібні два акаунти, а перенести монети між акаунтами потім не можна.

Правило 2: ваш облік, прив’язаний до вашого id завдання

Ендпоінт списку повертає весь акаунт, разом із картинками зі студії, а не роботу одного ключа. Тому ведіть власний облік: клієнт, завдання, id генерації, списані монети. Найзручніше пов’язати їх заголовком Idempotency-Key. Складайте його з власного id завдання, і повторний запит після обриву з’єднання поверне вже наявну генерацію, а не спише оплату вдруге. Додайте до нього префікс, унікальний для вашої агенції, вистачить випадкового рядка, бо ключ перевіряється в межах усього сервісу, а не лише вашого акаунта.

POST /v1/api/images
Authorization: Bearer fk_live_key_for_client_a
Idempotency-Key: 7f1c2b90-client-a-deck-0042

{
  "prompt": "a linen shirt on a wooden hanger, soft window light",
  "quality": "standard",
  "aspectRatio": "4:5"
}

У відповідь приходить 202 з id генерації та coinsCharged; запишіть обидва значення в облік раніше, ніж зробите щось інше.

Правило 3: опитуйте, а не чекайте

Генерація стає в чергу й виконується у фоні. Опитуйте її статус із розумним інтервалом (поки вона в черзі, відповідь містить оцінку в etaMs) і запускайте кілька завдань одразу, а не одне за одним: API дозволяє на акаунт більше паралельних завдань, ніж студія, бо для нього це звичайний режим роботи.

GET /v1/api/images/{id}          -> "queued", "generating", then "succeeded",
                                    or "failed" / "refunded" with refunded: true
GET /v1/api/images/{id}/content  -> the bytes, until the retention window ends
                                    (after that: 410 BYTES_EXPIRED)

Правило 4: помилка - це дані

Невдала генерація автоматично повертає монети й повідомляє про це в полі refunded. Її failureCode береться з короткого фіксованого списку: TIMEOUT і VENDOR_ERROR варто один раз повторити пізніше, MODERATION_REJECTED означає, що промпт треба переписати, а не повторювати, а UNKNOWN охоплює все інше. Записуйте код в облік; клієнт, чий бриф раз у раз упирається в модерацію, потребує розмови, а не циклу повторів. Економіку повторів розібрано в статті про ціни та збої.

Правило 5: архівуйте одразу після успіху

API не медіатека. Готові файли видаляються, коли закінчується строк зберігання, зазначений на сторінці продукту, і після цього запит вмісту відповідає 410 BYTES_EXPIRED. Завантажуйте кожне успішне зображення у своє сховище одразу, під клієнтом і завданням із вашого обліку, а якщо клієнт не хоче, щоб його картинки взагалі зберігалися в нас, видаліть їх через API після архівування.

Правило 6: перевіряйте ліміти з коду й ставте людину перед здачею

Кожен ключ має ліміт запитів, а акаунт має денний ліміт зображень. Обидва повертаються одним викликом, тож пакетне завдання може перевірити їх до старту, а не впасти на півдорозі:

GET /v1/api/me
-> { "keyName": "client-a", "coins": ..., "rateLimitPerMin": ..., "dailyImagesRemaining": ... }

Самі цифри вказано на сторінці продукту. І перш ніж щось потрапить до клієнта, на це має подивитися людина. Модель може намалювати шість пальців на руці чи не те слово на вивісці, а автоматичний конвеєр доставить це так само швидко, як і гарну картинку.

Чого API не зробить для агенції

У ньому немає субакаунтів, балансів за клієнтами та звіту про витрати за ключами: ця бухгалтерія на вас. Немає угоди про рівень сервісу й гарантованого часу виконання, тож не обіцяйте клієнту хвилин, які ви не виміряли. Згенерована картинка не стає вашою в сенсі авторського права, як пояснює стаття кому належать ШІ-зображення, хоча комерційне використання дозволене і ми не беремо жодної частки. І для обличчя реальної людини, як і раніше, потрібен її дозвіл, хоч би яким шляхом прийшов запит.

Як планувати бюджет монет на все це, розповідає стаття скільки насправді витрачає команда, а студія для картинок, які робляться вручну, це Fellowi Images.

Питання, на які відповідає стаття

Чи може в кожного клієнта бути свій баланс?

Ні. Усі ключі одного акаунта витрачають спільний баланс монет, тож окремі баланси означають окремі акаунти. Більшість агенцій тримають один акаунт, видають кожному клієнту свій ключ і ведуть облік за клієнтами у власній таблиці.

Як не заплатити двічі за повторний запит?

Передавайте заголовок Idempotency-Key, складений з ідентифікатора вашого завдання. Запит із тим самим ключем поверне вже наявну генерацію, а не запустить і не оплатить нову.

Скільки часу можна завантажувати готове зображення?

Поки не закінчиться строк зберігання, зазначений на сторінці продукту; після цього запит вмісту відповідає 410 BYTES_EXPIRED. Завантажуйте кожне готове зображення у своє сховище одразу після успішної генерації.

Спробуйте самі

Теплий приватний ші-компаньйон: 7 днів безкоштовно і 30 повідомлень, без картки.

Ціни та ліміти

Читати далі

М'яке денне світло освітлює дерев'яний стіл у майстерні невеликого магазину, де на ноутбуку видно злегка розмиту сітку фотографій товарів, а поруч стоять свічки ручної роботи, крафтова упаковка і висить мудборд із зразками кольорів.

Обличчя бренду без бюджету на модель: ШІ-аватари для невеликих магазинів

Свічкова крамниця, пекарня, майстерня однієї людини: постійне обличчя робить стрічку маленького бренду живою. Де ШІ-ведуча допомагає, де шкодить і як зберегти її однаковою.

8 жовтня 2026 р. · 7 хв читанняЧитати