Nordic Layers — это REST API по HTTPS на https://app.layers.nordicbyte.co.uk. Проект — JSON-документ со слоями; вы меняете его операциями и экспортируете как изображение. Браузерный редактор использует тот же API.
Аутентификация
Создайте ключ API в личном кабинете и отправляйте его с каждым запросом /v1. Ключи начинаются с nl_key_.
Authorization: Bearer nl_key_…
Обычный порядок работы
Загрузите каждое изображение через POST /v1/assets, передав файл как тело запроса (PNG, JPEG, WebP, GIF, BMP или TIFF). В ответе будет его id.
Создайте проект через POST /v1/projects с width, height и background. Первые steps можно передать в том же вызове.
Редактируйте через POST /v1/projects/{id}/run: одна операция в виде {"op": …} или несколько в виде {"steps": [...]}. Смотрите результат через GET /v1/projects/{id}/preview, это бесплатно.
Экспортируйте через POST /v1/projects/{id}/export. В ответе будет URL файла или само изображение при "response": "image".
Первый запрос
Создайте проект 1080×1080 с градиентом и заголовком, затем экспортируйте его в WebP:
Список ваших изображений и признак использования в проекте
DELETE
/v1/assets/{id}
Удаление изображения
POST
/v1/projects
Создание проекта (холст или целый документ, плюс необязательные шаги)
GET
/v1/projects
Список ваших проектов
GET
/v1/projects/{id}
Один проект с его документом
PUT
/v1/projects/{id}/document
Замена всего документа
POST
/v1/projects/{id}/run
Применение одной операции или списка шагов
POST
/v1/projects/{id}/undo
Отмена последнего изменения
POST
/v1/projects/{id}/redo
Возврат отменённого
GET
/v1/projects/{id}/preview?size=1024
Бесплатный предпросмотр PNG, длинная сторона до size px
POST
/v1/projects/{id}/export
Экспорт PNG, JPEG или WebP; необязательные шаги только для этого файла
POST
/v1/render
Рендер целого документа без состояния
GET
/v1/exports
Список ваших экспортов
GET
/v1/exports/{id}/file
Скачивание экспорта
DELETE
/v1/projects/{id}
Удаление проекта
Операции
Каждая операция — объект с op и её параметрами. На слои ссылаются по id или по имени; без layer используется активный слой. Имена не зависят от регистра и пробелов, поэтому "Linear Dodge (Add)" и "linearDodge" — один и тот же режим наложения. С steps они выполняются по порядку и останавливаются на первой ошибке (если не задано "stopOnError": false); предыдущие шаги остаются применёнными.
Передайте steps в вызов экспорта, и они применятся к копии проекта только для этого файла. Один шаблон, много файлов: меняйте текст через text.set, а фото через layer.setImage, который сохраняет рамку слоя.
POST /v1/render принимает целый document (в том виде, как он возвращается в project.document), необязательные steps и параметры экспорта, и не сохраняет проект. При "response": "image" ответом будет файл изображения.
Ошибки возвращаются в JSON со стабильным code и сообщением detail на языке вашего аккаунта. Неудавшийся шаг сообщает, какой параметр был неверным. Когда рендеры тарифа закончились, API отвечает 402 с quota_renders.
Лимиты
Загрузки до 50 MB и 12,000 px по стороне.
Холст до 20,000 px по стороне, в пределах мегапикселей вашего тарифа.
До 200 шагов за вызов.
Предпросмотры до 2,048 px по длинной стороне.
Мегапиксели, слои, проекты, хранилище и рендеры в месяц зависят от тарифа: см. «Цены».