Используйте spicyapi/object-eraser-v1/edit с image_url и коротким prompt, mask_url либо обоими полями сразу. В маске белый цвет означает «удалить», чёрный — «оставить», а размеры в пикселях должны совпадать с исходным изображением. Цена — 0,03 $ за выходное изображение, сколько бы объектов ни удалял запрос. Результат сохраняет исходный размер холста, а выделенная область заполняется содержимым окружающей сцены.
Выберите prompt или маску
Если объект хорошо заметен и вокруг него есть свободное место, начните с короткого описания:
белый бумажный стаканчик на полу рядом с передней правой ножкой стула
Укажите существительное, видимый цвет или материал и положение. Фраза «сделай сцену чистой и премиальной» не определяет, что должно исчезнуть. Prompt может содержать от 1 до 1000 символов, но более длинное описание не делает выбор точнее.
| Ситуация | Что использовать |
|---|---|
| Один однозначный стаканчик на свободном полу | prompt с названием этого стаканчика |
| Два похожих стаканчика, нужно убрать только один | mask_url поверх нужного стаканчика |
| Тонкий кабель или объект у края кадра | mask_url; описания такие объекты часто упускают |
| Описание может указать на не тот объект | Отправьте оба поля: опишите и отметьте одну и ту же цель |
| Нужна вырезка стула на прозрачном фоне | Удаление фона |
| Нужно больше места вокруг фото | Outpainting после очистки |
Если описание ни с чем не совпало, изображение возвращается без изменений, а задача всё равно завершается успешно. Сравните результат с исходником, прежде чем считать его удалением.

Иллюстрация с возможными выделениями. Все отмеченные объекты на месте; это не результат API.
Сначала попробуйте в Playground
- Откройте страницу Object Eraser, оставайтесь на вкладке Playground в режиме Form и войдите в аккаунт с пополненным балансом, чтобы запустить задачу.
- Добавьте фото в поле Input image (JPG, PNG или WebP, до 10 МБ). Перетащите файл, вставьте ссылку через Asset URL и Add URL или выберите файл на диске.
- Опишите цель в поле Prompt, либо добавьте чёрно-белое изображение в поле Mask, либо заполните оба. Форме нужно хотя бы одно из двух.
- Оставьте Output format на PNG (JPEG и WebP дают файлы меньше) и запустите. Цена — 0,03 $ за изображение.
- Откройте результат рядом с оригиналом и маской; если что-то осталось, воспользуйтесь таблицей сбоев ниже.
Панель Request body показывает тот же JSON, который принимает API, поэтому prompt или маску, сработавшие здесь, можно скопировать прямо в код. Если здесь не получается, исправьте prompt или маску, прежде чем писать код.
Делайте маску по тому изображению, которое отправите
Если область уже известна (рамка детектора или выделение в интерфейсе), сгенерируйте маску в коде. Её размер берётся из исходника, поэтому всегда совпадает:
from PIL import Image, ImageDraw
src = Image.open("source.jpg") # apply EXIF rotation and crop first
mask = Image.new("L", src.size, 0) # black = keep
bbox = (src.width // 4, src.height // 3, src.width // 2, src.height // 2)
# Example coordinates only: adjust this box to the unwanted object in your photo.
ImageDraw.Draw(mask).rectangle(bbox, fill=255) # white = remove
mask.save("mask.png")Для фигур неправильной формы на исходнике 2400×1600 подготовьте в графическом редакторе маску 2400×1600:
- Сначала завершите поворот и кадрирование исходника и сохраните это рабочее изображение.
- Добавьте чёрный слой на весь холст и снизьте его непрозрачность на время рисования, чтобы цель оставалась видна.
- Закрасьте стаканчик белым, включая его нежелательный край и контактную тень, с небольшим запасом там, где есть место. Ножка стула остаётся чёрной.
- Верните слою полную непрозрачность и экспортируйте его отдельно как непрозрачный чёрно-белый PNG, а не затемнённое фото и не цветные пометки.
- Наложите экспортированную маску на рабочий исходник и проверьте белую область.
Одинаковых пропорций недостаточно: у обоих файлов должны совпадать ширина, высота, кадрирование и ориентация. Чуть более широкая форма подходит там, где рядом нет ничего другого. Примерная маска на странице модели для стеллажа у края кадра — это чёрный холст размером с фото с одним простым белым прямоугольником поверх стеллажа.
Тени и отражения могут выходить за силуэт объекта. Нежелательное отражение закрасьте как отдельную белую область. Там, где тень стаканчика перекрывается с опорной тенью стула, не закрашивайте белым всё тёмное пятно, иначе стул может «повиснуть» в воздухе. Маска отмечает, что удалить; она не даёт скрытый пол или геометрию товара.
Крупные или перекрывающиеся удаления выполняйте отдельными проходами, строя каждую маску на принятом предыдущем результате. Два небольших объекта в одном запросе стоят 0,03 $; два отдельных запроса стоят 0,06 $. Держите имена файлов маски и изображения парными, чтобы старое выделение не изменило молча более новое фото.
Затем запустите из кода
Установите Python SDK (pip install spicyapi), задайте SPICY_API_KEY в окружении сервера и выполните запрос ниже. Он использует пример фото со страницы модели, поэтому работает как есть. Файлы с вашего компьютера загружаются через client.upload_file и возвращаются адресом spicy://. Для маски добавьте "mask_url" со своим файлом тех же размеров в пикселях, что и фото.
import uuid
from spicyapi import SpicyClient, output_assets
client = SpicyClient() # reads SPICY_API_KEY from the environment
task = client.create_task(
model="spicyapi/object-eraser-v1/edit",
input_data={
"image_url": "https://cdn.spicyapi.ai/models/examples/inputs/fbc8d531c80e6d0d.jpeg",
"prompt": "the wooden ladle lying across the sauna stones at the left",
"output_format": "png",
},
idempotency_key=str(uuid.uuid4()),
)
final = client.wait_for_terminal(task["taskId"])
if final["state"] != "succeeded":
raise RuntimeError(f"{task['taskId']} ended as {final['state']}: {final.get('errorCode')}")
print(output_assets(final)[0]["url"]) # copy the image to your own storage nowЗагрузка файлов, создание, ожидание, скачивание, повторные попытки и коды ошибок описаны в руководстве по задачам и справочнике Python SDK. Созданные файлы хранятся не более 14 дней, поэтому скопируйте результат в собственное хранилище.
Или поручите запуск агенту
Когда правку должен выполнить ассистент, все три официальных инструмента показывают цену и спрашивают подтверждение перед платным вызовом.
- CLI. Загрузите фото и маску, затем создайте задачу:
``bash spicyapi files upload photo.jpg spicyapi tasks create --model spicyapi/object-eraser-v1/edit --input-file input.json --wait ``
Подставьте возвращённые адреса spicy:// в input.json как image_url и mask_url. См. документацию CLI; npx @spicyapi/cli работает без установки.
- MCP-сервер. Добавьте MCP-сервер в ассистента и попросите: «Удали белый бумажный стаканчик с этого фото через Object Eraser; файл лежит в /path/to/photo.jpg». Он загрузит файл через
spicyapi_upload_file, вызоветspicyapi_task_create, который остановится для подтверждения цены, а затемspicyapi_task_wait. - Skill.
npx skills add spicyapi-ai/spicy-skillустанавливает Agent Skill: ассистент для программирования читает актуальную схему модели, а не угадывает поля.
Исправьте конкретный сбой, который видите
Откройте erased.png рядом с оригиналом и маской. Сначала проверьте, где выделение граничит с сохранённым содержимым, затем центр заливки.
| Результат | Что изменить |
|---|---|
| Стаканчик остался после запроса только с prompt | Перейдите на маску поверх этого стаканчика. |
| Кабель остался у края | Закрасьте белым всю его видимую длину на маске в полном разрешении. |
| Остался слабый контур | Слегка расширьте выделение за край объекта, не закрывая соседние края товара. |
| Стаканчика нет, но остался тёмный овал | Добавьте в маску контактную тень стаканчика отдельно от тени стула. |
| Часть ножки стула восстановлена неверно | Уменьшите маску там, где она закрывает ножку. Если стаканчик сам скрывает ножку, возьмите другое исходное фото. |
| Проверка разницы показывает изменение всей картинки | Сначала выровняйте поворот и размер; один лишь шум сжатия — не правка. Сверьте неподвижные ориентиры. |
| Запрос возвращает 400 | Проверьте, нет ли пропущенных prompt и маски либо полей, которых у модели нет, например strength, mask_blur или transparent_background. За отклонённый запрос ничего не списывается. |

Иллюстрация: проверка теней и отражений. Она не показывает завершённое удаление.
Модель восстанавливает скрытый фон; она не может показать, что на самом деле было за объектом. В карточке товара не принимайте выдуманное соединение стула или изменённый шов обивки только потому, что пол стал выглядеть чище. Переснимите, если удалённый объект скрывал деталь, которую карточка должна показывать точно.
SpicyAPI не запускает для этой модели проверку безопасности; что вернуть, решает сама модель.
Храните исходник и маску вместе с принятым результатом и добавляйте ещё один проход только для конкретного оставшегося объекта. Вкладка Examples на странице модели показывает реальные результаты «до» и «после».






