O Nordic Layers é uma API REST sobre HTTPS em https://app.layers.nordicbyte.co.uk. Um projeto é um documento JSON de camadas; você o altera com operações e o exporta como imagem. O editor do navegador usa a mesma API.
Autenticação
Crie uma chave de API no painel da sua conta e envie-a em toda requisição a /v1. As chaves começam com nl_key_.
Authorization: Bearer nl_key_…
O fluxo habitual
Envie cada imagem com POST /v1/assets e o arquivo como corpo bruto da requisição (PNG, JPEG, WebP, GIF, BMP ou TIFF). A resposta traz o id dela.
Crie um projeto com POST /v1/projects e um width, height e background. Você pode passar os primeiros steps na mesma chamada.
Edite com POST /v1/projects/{id}/run: uma operação como {"op": …} ou várias como {"steps": [...]}. Confira com GET /v1/projects/{id}/preview, que é gratuito.
Exporte com POST /v1/projects/{id}/export. A resposta traz a URL do arquivo, ou a própria imagem com "response": "image".
Uma primeira requisição
Crie um projeto de 1080×1080 com um degradê e um título, e exporte-o como WebP:
Catálogo de todas as operações e seus parâmetros (público)
POST
/v1/assets?name=photo.jpg
Envia uma imagem; o corpo é o arquivo
GET
/v1/assets
Lista suas imagens e se algum projeto as usa
DELETE
/v1/assets/{id}
Exclui uma imagem
POST
/v1/projects
Cria um projeto (tela, ou um documento completo, mais passos opcionais)
GET
/v1/projects
Lista seus projetos
GET
/v1/projects/{id}
Um projeto com seu documento
PUT
/v1/projects/{id}/document
Substitui o documento inteiro
POST
/v1/projects/{id}/run
Aplica uma operação ou uma lista de passos
POST
/v1/projects/{id}/undo
Desfaz a última mudança
POST
/v1/projects/{id}/redo
Refaz
GET
/v1/projects/{id}/preview?size=1024
Prévia PNG gratuita, lado maior de até size px
POST
/v1/projects/{id}/export
Exporta PNG, JPEG ou WebP; passos opcionais só para este arquivo
POST
/v1/render
Render sem estado de um documento inteiro
GET
/v1/exports
Lista suas exportações
GET
/v1/exports/{id}/file
Baixa uma exportação
DELETE
/v1/projects/{id}
Exclui um projeto
Operações
Toda operação é um objeto com op e seus parâmetros. As camadas são referenciadas por id ou por nome; sem layer, usa-se a camada ativa. Os nomes ignoram maiúsculas e espaços, então "Linear Dodge (Add)" e "linearDodge" são o mesmo modo de mesclagem. Com steps, eles rodam em ordem e param no primeiro erro (a não ser que "stopOnError": false); os passos anteriores continuam aplicados.
Passe steps para a chamada de exportação e eles são aplicados a uma cópia do projeto só para aquele arquivo. Um modelo, muitos arquivos: mude o texto com text.set e a foto com layer.setImage, que mantém a caixa da camada.
POST /v1/render recebe um document inteiro (como devolvido em project.document), steps opcionais e as opções de exportação, e não salva um projeto. Com "response": "image" a resposta é o arquivo de imagem.
Os erros voltam como JSON com um code estável e uma mensagem detail no idioma da sua conta. Um passo que falha informa qual parâmetro estava errado. Quando os renders de um plano acabam, a API responde 402 com quota_renders.
Limites
Uploads de até 50 MB e 12,000 px por lado.
Tela de até 20,000 px por lado, dentro dos megapixels do seu plano.
Até 200 passos por chamada.
Prévias de até 2,048 px no lado maior.
Megapixels, camadas, projetos, armazenamento e renders por mês dependem do plano: veja Preços.