Nordic Layers · Nordic Byte

API دستاویزات

Nordic Layers HTTPS پر https://app.layers.nordicbyte.co.uk کی REST API ہے۔ پروجیکٹ لیئرز کی JSON دستاویز ہے؛ آپ اسے آپریشنز سے بدلتے ہیں اور تصویر کے طور پر ایکسپورٹ کرتے ہیں۔ براؤزر ایڈیٹر یہی API استعمال کرتا ہے۔

تصدیق

اپنے اکاؤنٹ پینل میں API کلید بنائیں اور ہر /v1 ریکوئسٹ کے ساتھ بھیجیں۔ کلیدیں nl_key_ سے شروع ہوتی ہیں۔

Authorization: Bearer nl_key_…

معمول کا طریقہ

  1. ہر تصویر POST /v1/assets سے اپ لوڈ کریں، فائل کو خام ریکوئسٹ باڈی کے طور پر (PNG، JPEG، WebP، GIF، BMP یا TIFF)۔ جواب میں اس کی id ہوتی ہے۔
  2. POST /v1/projects سے width، height اور background کے ساتھ پروجیکٹ بنائیں۔ پہلے steps اسی کال میں دے سکتے ہیں۔
  3. POST /v1/projects/{id}/run سے ایڈٹ کریں: ایک آپریشن {"op": …} کی شکل میں یا کئی {"steps": [...]} کی شکل میں۔ GET /v1/projects/{id}/preview سے دیکھیں، جو مفت ہے۔
  4. POST /v1/projects/{id}/export سے ایکسپورٹ کریں۔ جواب میں فائل کا URL ہوتا ہے، یا "response": "image" کے ساتھ خود تصویر۔

پہلی ریکوئسٹ

گریڈیئنٹ اور عنوان کے ساتھ 1080×1080 کا پروجیکٹ بنائیں، پھر اسے WebP میں ایکسپورٹ کریں:

curl -X POST https://app.layers.nordicbyte.co.uk/v1/projects \
  -H "Authorization: Bearer $NL_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "First post",
    "width": 1080,
    "height": 1080,
    "steps": [
      {"op": "layer.addFill", "gradient": {"colors": ["#1E3A5F", "#64B5F6"], "angle": 135}},
      {"op": "text.add", "content": "Hello, layers", "fontName": "Segoe UI", "fontSize": 110, "bold": true, "color": "#FFFFFF"},
      {"op": "effects.set", "shadow": {"opacity": 0.4, "distance": 12, "size": 24}}
    ]
  }'

# → {"project": {"id": "…", …}}

curl -X POST https://app.layers.nordicbyte.co.uk/v1/projects/$PROJECT_ID/export \
  -H "Authorization: Bearer $NL_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "format": "webp",
    "quality": 90
  }'

اینڈ پوائنٹس

میتھڈپاتھیہ کیا کرتا ہے
GET/healthسروس کی حالت
GET/v1/opsہر آپریشن اور اس کے پیرامیٹرز کا کیٹلاگ (عوامی)
POST/v1/assets?name=photo.jpgتصویر اپ لوڈ کریں؛ باڈی فائل ہے
GET/v1/assetsاپنی تصاویر کی فہرست اور یہ کہ کوئی پروجیکٹ انہیں استعمال کرتا ہے یا نہیں
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آخری تبدیلی undo کریں
POST/v1/projects/{id}/redoRedo
GET/v1/projects/{id}/preview?size=1024مفت PNG پری ویو، لمبا کنارہ size px تک
POST/v1/projects/{id}/exportPNG، 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 نہ ہو)؛ اس سے پہلے کے مراحل لاگو رہتے ہیں۔

لیئرز

آپریشنپیرامیٹرزیہ کیا کرتا ہے
layer.addcolor, nameAlias of layer.addFill (the web has no empty pixel layers).
layer.addFillcolor | gradient {colors: [..], angle, type: linear|radial}, name, above, atBottomA colour or gradient layer the size of the canvas.
layer.addImageasset_id | color, name, rect | origin | center, width, height, fit (stretch|contain|cover), fitCanvas (contain|cover), above, atBottom, opacity, blendModeAdd an uploaded image (asset_id) or a solid colour (color).
layer.cliplayerClip a layer to the one below it (clipping mask).
layer.deletelayer | layersDelete layers.
layer.duplicatelayer, nameCopy a layer above itself.
layer.getlayerOne layer with all its settings.
layer.list—Layers from bottom to top.
layer.movelayer, above | below (layer), toTop, atBottom, index, offsetReorder a layer.
layer.renamelayer, nameRename a layer.
layer.selectlayerMake a layer the active one.
layer.setBlendModelayer | layers, blendMode (normal, darken, multiply, colorBurn, linearBurn, lighten, screen, colorDodge, linearDodge, overlay, softLight, hardLight, difference, exclusion, subtract, divide, hue, saturation, color, luminosity)Blend mode.
layer.setFilllayer, color | gradientChange a fill layer's colour or gradient.
layer.setImagelayer, asset_id, fit (stretch|contain|cover)Replace a layer's image and keep its box (templates).
layer.setOpacitylayer | layers, opacityLayer opacity, 0 to 1.
layer.setVisiblelayer | layers, visibleShow or hide layers.
layer.uncliplayerRelease a clipping mask.

متن

آپریشنپیرامیٹرزیہ کیا کرتا ہے
text.addcontent, fontName, fontSize, color, alignment, leading, bold, italic, boxWidth, origin | center, nameAdd a text layer.
text.defaults—Fonts on the server and whether complex scripts are shaped.
text.setlayer, content, fontName, fontSize, color, alignment, leading, bold, italic, boxWidthChange a text layer.

شکلیں

آپریشنپیرامیٹرزیہ کیا کرتا ہے
shape.addshape, rect | from+to, color, cornerRadius, lineWidth, nameAdd a rectangle, ellipse or line.
shape.setlayer, color, cornerRadius, lineWidthChange a shape layer.

ٹرانسفارم

آپریشنپیرامیٹرزیہ کیا کرتا ہے
transform.fliplayer | layers, axis (horizontal|vertical)Flip horizontally or vertically.
transform.movelayer | layers, dx, dy | to [x, y]Move by dx/dy or to a point.
transform.rotatelayer | layers, angleRotate by an angle (degrees, clockwise).
transform.scalelayer | layers, factor | percent | width | heightScale around each layer's centre.
transform.setlayer | layers, x, y, width, height, rotation, flipX, flipYBox, rotation and flips.

لیئر پر ایڈجسٹمنٹس

آپریشنپیرامیٹرزیہ کیا کرتا ہے
adjust.blackWhitelayer | layers, reds, yellows, greens, cyans, blues, magentas, tint, tintHue, tintSaturationNon-destructive blackWhite on a layer (adds it or updates it).
adjust.brightnessContrastlayer | layers, brightness, contrastNon-destructive brightnessContrast on a layer (adds it or updates it).
adjust.clearlayer | layersRemove every adjustment and filter from a layer.
adjust.colorBalancelayer | layers, shadows, midtones, highlights, preserveLuminosityNon-destructive colorBalance on a layer (adds it or updates it).
adjust.curveslayer | layers, rgb, red, green, blueNon-destructive curves on a layer (adds it or updates it).
adjust.exposurelayer | layers, exposure, offset, gammaNon-destructive exposure on a layer (adds it or updates it).
adjust.gradientMaplayer | layers, shadows, highlights, reversedNon-destructive gradientMap on a layer (adds it or updates it).
adjust.grainlayer | layers, amount, size, seedNon-destructive grain on a layer (adds it or updates it).
adjust.hueSaturationlayer | layers, hue, saturation, lightness, colorizeNon-destructive hueSaturation on a layer (adds it or updates it).
adjust.invertlayer | layers, no settingsNon-destructive invert on a layer (adds it or updates it).
adjust.levelslayer | layers, black, white, gamma, outputBlack, outputWhiteNon-destructive levels on a layer (adds it or updates it).
adjust.removelayer | layers, kindRemove one adjustment or filter from a layer.

فلٹرز

آپریشنپیرامیٹرزیہ کیا کرتا ہے
filter.addNoiselayer | layers, amount, gaussian, monochromatic, seedNon-destructive addNoise on a layer (adds it or updates it).
filter.gaussianBlurlayer | layers, radiusNon-destructive gaussianBlur on a layer (adds it or updates it).
filter.motionBlurlayer | layers, angle, distanceNon-destructive motionBlur on a layer (adds it or updates it).
filter.pixelatelayer | layers, sizeNon-destructive pixelate on a layer (adds it or updates it).
filter.sharpenlayer | layers, amount, radius, thresholdNon-destructive sharpen on a layer (adds it or updates it).
filter.vignettelayer | layers, amount, midpoint, roundness, feather, colorNon-destructive vignette on a layer (adds it or updates it).

ایڈجسٹمنٹ لیئرز

آپریشنپیرامیٹرزیہ کیا کرتا ہے
adjustmentLayer.addkind, settings…, name, aboveAn adjustment layer: changes everything below it.
adjustmentLayer.getlayerAn adjustment layer's settings.
adjustmentLayer.setlayer, settings…Change an adjustment layer (partial).

لیئر ماسک

آپریشنپیرامیٹرزیہ کیا کرتا ہے
mask.addlayer, reveal | hide | rect | ellipse (rect) | gradient (from, to) | asset_id (+ rect), feather, invert, cornerRadiusAdd or replace a layer mask.
mask.blurlayer, radiusFeather the layer mask.
mask.deletelayerRemove the layer mask.
mask.invertlayerInvert the layer mask.
mask.setEnabledlayer, enabledTurn the layer mask on or off.

لیئر ایفیکٹس

آپریشنپیرامیٹرزیہ کیا کرتا ہے
effects.copyfrom, layer | layersCopy effects from one layer to others.
effects.getlayerA layer's effects.
effects.removelayer | layers, kindsRemove effects (all, or the ones named).
effects.setlayer | layers, shadow {…}, stroke {…}, outerGlow {…}, colorOverlay {…}Set effects (partial): shadow, outerGlow, stroke, colorOverlay.
effects.setEnabledlayer, kind, enabledTurn one effect on or off.

کینوس

آپریشنپیرامیٹرزیہ کیا کرتا ہے
canvas.croprect [x, y, width, height]Crop the canvas to a rectangle.
canvas.imageSizewidth and/or height, or percentScale the whole document.
canvas.setBackgroundcolorBackground colour, or null for transparent.
canvas.sizewidth, height, anchor (topLeft…bottomRight, default center)Change the canvas without scaling layers.

پروجیکٹ

آپریشنپیرامیٹرزیہ کیا کرتا ہے
project.state—The whole document.

بلینڈ موڈز

فونٹ فیملیز

ٹیمپلیٹس

ایکسپورٹ کال میں steps دیں تو وہ پروجیکٹ کی ایک کاپی پر صرف اس فائل کے لیے لاگو ہوتے ہیں۔ ایک ٹیمپلیٹ، بہت سی فائلیں: متن text.set سے بدلیں اور تصویر layer.setImage سے، جو لیئر کا باکس برقرار رکھتا ہے۔

curl -X POST https://app.layers.nordicbyte.co.uk/v1/projects/$TEMPLATE_ID/export \
  -H "Authorization: Bearer $NL_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "format": "png",
    "steps": [
      {"op": "text.set", "layer": "Title", "content": "Nueva colección"},
      {"op": "layer.setImage", "layer": "Photo", "asset_id": "photo_dunes"}
    ]
  }'

اسٹیٹ لیس رینڈر

POST /v1/render ایک پوری document (جیسی project.document میں لوٹتی ہے)، اختیاری steps اور ایکسپورٹ کے اختیارات لیتا ہے، اور پروجیکٹ محفوظ نہیں کرتا۔ "response": "image" کے ساتھ جواب تصویر کی فائل ہوتا ہے۔

curl -X POST https://app.layers.nordicbyte.co.uk/v1/render \
  -H "Authorization: Bearer $NL_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "document": {"width": 1200, "height": 630, "background": "#1E3A5F", "layers": ["…"]},
    "format": "png",
    "response": "image"
  }' \
  -o card.png

غلطیاں

غلطیاں JSON میں ایک مستقل code اور آپ کے اکاؤنٹ کی زبان میں detail پیغام کے ساتھ آتی ہیں۔ ناکام مرحلہ بتاتا ہے کہ کون سا پیرامیٹر غلط تھا۔ جب پلان کے رینڈرز ختم ہو جائیں تو API 402 اور quota_renders کے ساتھ جواب دیتی ہے۔

حدود