Документация API
Токен авторизации передается в заголовке Authorization HTTP запроса.
Заблокированный аккаунт получает HTTP 403: {"type":"access error","detail":"Пользователь заблокирован"}. Явно переданный copies должен быть целым числом от 1 до 1000; иначе HTTP 400. Месячного потолка запросов нет.
Эффекты новой формы
Для обоих методов уникализации передайте необязательный query-параметр effects_v1 как URL-encoded JSON-объект. Без него алгоритм и старые параметры не меняются; async по умолчанию создаёт 10 копий каждого файла, sync возвращает один JPEG. Каждый эффект выключен, пока его не включили явно. Формат диапазона: {"enabled":true,"min":0.25,"max":0.4}. Если при включении не передать min/max, применятся безопасные значения новой формы из таблицы. seed - необязательное целое int64 для повторяемых тестов. Неизвестное поле, неверный тип, JSON или диапазон дают HTTP 400 с detail до создания задания.
| Группа | Поля и допустимые значения | Значения при включении без min/max |
|---|---|---|
| Геометрия | perspective 0...2 %; frame_shift 0...3 %; edge_fields 0...20 px | 0.25...0.4; 0.45...0.6; 1...3 |
| Цвет | hue, temperature -100...100; gamma 0.90...1.10; rgb_shift -10...10; grayscale boolean | -3...3; -1.5...1.5; 0.985...1.015; -1...1; false |
| Свет | vignette, light_strip 0...100; light_strip.probability 0...100 | 6...11; 6...9, probability 25 |
| Детали и шум | noise 1...100, mode random/uniform/gaussian/impulse/laplace; microblur 0...1; sharpen 0...30 | 6...7, random; 0.04...0.07; 4...6 |
| Изменить качество | jpeg_rebuild 70...100 (JPEG) | 92...94 |
exif остаётся отдельным старым параметром для async-архива: 0 - не добавлять камерные данные, 1 - схожие данные, 2 - случайные. При 0 служебный APP1/EXIF-блок JPEG может оставаться, как в v3. Sync, как и прежде, не применяет этот параметр и возвращает один JPEG. self_exif_id сейчас не используется. report:true возвращает 400: файл изменений отключён в новой web-форме, архив содержит только результаты обработки. Например: {"status":"error","detail":"effects_v1.gamma: min and max must be within 0.9..1.1, min <= max"}.
Sync:
curl -X POST 'https://imgfactory.ru/api/v1/sync/single/unique' \
--header 'Authorization: YOUR_API_KEY' \
--url-query 'effects_v1={"gamma":{"enabled":true},"jpeg_rebuild":{"enabled":true},"seed":42}' \
--form 'image=@synthetic.jpg' --output unique.jpg
Async и получение статуса:
curl -X POST 'https://imgfactory.ru/api/v1/async/unique?copies=10&exif=2' \
--header 'Authorization: YOUR_API_KEY' \
--url-query 'effects_v1={"perspective":{"enabled":true},"hue":{"enabled":true},"noise":{"enabled":true},"seed":42}' \
--form 'images[]=@synthetic.jpg'
curl 'https://imgfactory.ru/api/v1/tasks?task_id=TASK_ID_FROM_RESPONSE' \
--header 'Authorization: YOUR_API_KEY'
Уникализовать изображения
| POST | /async/unique |
| Request body - multipart/form-data | |
images[]*required array |
Изображения string($binary) |
| Query параметры | |
| Имя | Описание |
copies int |
Количество копий каждого изображения По умолчанию: 10 |
names int |
Имена файлов
Возможные значения:
По умолчанию: 0
|
folders int |
Расположение файлов
Возможные значения:
По умолчанию: 0
|
rotate json |
Поворот изображения. Лучше совершать на 1-2 градуса
По умолчанию:
{ "enable": true, "min": 0, "max": 2 } |
crop json |
Обрезка изображения. Не рекомендуется обрезать картинку больше, чем на 5-15 процентов.
Например:
{ "enable": true, "side": 1, "min": 1, "max": 5 }
Возможные значения side:
По умолчанию: null
|
saturation json |
Насыщенность. Рекомендуется устанавливать значения больше 50 и меньше 150
По умолчанию:
{ "enable": true, "min": 90, "max": 110 } |
brightness json |
Яркость. Рекомендуется устанавливать значения больше 80 и меньше 130
По умолчанию:
{ "enable": true, "min": 90, "max": 110 } |
contrast json |
Контраст. Не рекомендуется устанавливать значение больше 20
По умолчанию:
{ "enable": true, "min": 1, "max": 15 } |
flip int |
Отражение
Возможные значения:
По умолчанию: 0
|
exif int |
Exif данные
Возможные значения:
По умолчанию: 0
|
self_exif_id int |
Сейчас не используется: API принимает значения EXIF 0-2.
По умолчанию: 0
|
| Responses | |
| code | Content-Type: application/json |
| 200 | {"type":"success","task_id":"d4ea7250-a1ea-11ec-9001-8bb6308e00c9"} |
| 400 | {"type":"validation error","detail":{"images":["Поле images обязательно для заполнения."]}} |
| 401 | {"type":"auth error","detail":"Authorization required"} |
| 401 | {"type":"auth error","detail":"Invalid token"} |
| 402 | {"type":"payment error","detail":"API не оплачено"} |
| Пример curl | |
curl --location --request POST 'https://imgfactory.ru/api/v1/async/unique?copies=1' \
|
|
Уникализовать одно изображение
| POST | /sync/single/unique |
| Request body - multipart/form-data | |
image*required string($binary) |
Изображение для уникализации |
| Query параметры | |
| Имя | Описание |
copies int |
Количество копий каждого изображения По умолчанию: 10 |
names int |
Имена файлов
Возможные значения:
По умолчанию: 0
|
folders int |
Расположение файлов
Возможные значения:
По умолчанию: 0
|
rotate json |
Поворот изображения. Лучше совершать на 1-2 градуса
По умолчанию:
{ "enable": true, "min": 0, "max": 2 } |
crop json |
Обрезка изображения. Не рекомендуется обрезать картинку больше, чем на 5-15 процентов.
Например:
{ "enable": true, "side": 1, "min": 1, "max": 5 }
Возможные значения side:
По умолчанию: null
|
saturation json |
Насыщенность. Рекомендуется устанавливать значения больше 50 и меньше 150
По умолчанию:
{ "enable": true, "min": 90, "max": 110 } |
brightness json |
Яркость. Рекомендуется устанавливать значения больше 80 и меньше 130
По умолчанию:
{ "enable": true, "min": 90, "max": 110 } |
contrast json |
Контраст. Не рекомендуется устанавливать значение больше 20
По умолчанию:
{ "enable": true, "min": 1, "max": 15 } |
flip int |
Отражение
Возможные значения:
По умолчанию: 0
|
exif int |
Exif данные
Возможные значения:
По умолчанию: 0
|
self_exif_id int |
Сейчас не используется: API принимает значения EXIF 0-2.
По умолчанию: 0
|
| Responses | |
| code | Content-Type: image/jpeg |
| 200 | JPG Byte code |
| code | Content-Type: application/json |
| 400 | {"type":"validation error","detail":{"image":["Поле image обязательно для заполнения."]}} |
| 401 | {"type":"auth error","detail":"Authorization required"} |
| 401 | {"type":"auth error","detail":"Invalid token"} |
| 402 | {"type":"payment error","detail":"API не оплачено"} |
| Пример curl | |
curl --location --request POST 'https://imgfactory.ru/api/v1/sync/single/unique' \
|
|
Получить детали задачи или список задач
| GET | /tasks |
| Query параметры | |
| Имя | Описание |
task_id string |
ID задачи. Например: 41572e60-a1e5-11ec-84ce-cb7091c1043d |
| Responses | |
| code | Content-Type: application/json |
| 200 |
{
Внимание! Ссылка на скачивание остается доступной в течении 24 часов |
| 200 |
{
Внимание! Ссылка на скачивание остается доступной в течении 24 часов |
| 400 | {"type":"search error","detail":"Task not found"} |
| 400 | {"type":"validation error","detail":{"task_id":["validation.uuid"]}} |
| 401 | {"type":"auth error","detail":"Authorization required"} |
| 401 | {"type":"auth error","detail":"Invalid token"} |
| 402 | {"type":"payment error","detail":"API не оплачено"} |
| Пример curl | |
curl --location --request GET 'https://imgfactory.ru/api/v1/tasks?task_id=41572e60-a1e5-11ec-84ce-cb7091c1043d' \
|
|