Objects

What comes back on the wire. Additive fields are not a breaking change, so parse defensively and ignore what you do not recognise.

EmbedItem

FieldTypeNotes
idstringArmenus id.
externalRefstring | nullYour identifier, if you set one.
namestring
descriptionstring | null
priceCentsintegerMinor units. Never a float.
tagsstring[]“vegan”, “signature”, …
imageUrlstring | nullFlat photo of the dish.
isAvailablebooleanWhether the kitchen is serving it.
merchantEmbedMerchantid, slug, name, currency, locale.
modelEmbedModel | nullNull when the dish has no model, or has one that is not ready yet.

EmbedModel

FieldTypeNotes
glbUrlstringAndroid inline, Scene Viewer, and every browser path.
usdzUrlstring | nulliOS inline and Quick Look. Null until conversion finishes.
usdzStatusenumpending · processing · ready · failed
posterUrlstring | nullShown while the mesh downloads, and wherever no mesh can render.
physicalSizeMnumberLongest side, in metres.
glbBytesinteger | nullSo a native client can decide about prefetching on cellular.
viewSettingsobjectCamera framing. All seven fields always present.

viewSettings

Camera framing the restaurant set per dish, so a model opens at a flattering angle rather than whatever the exporter chose. The orbit string is <model-viewer>’s format and is kept verbatim on every platform, so one setting frames the dish identically on the web, on iOS and on Android — the native SDKs parse it into the numbers their renderers want.

FieldDefault
cameraOrbit"0deg 75deg 105%"
cameraTarget"auto auto auto"
fieldOfView"auto"
exposure1
shadowIntensity1
autoRotatetrue
arScale1

arScale is a multiplier applied before AR placement, and is a different thing from physicalSizeM. All seven fields are always present, even when the restaurant has only changed one.

A full response

GET /v1/embed/items/:itemId
{
  "id": "c0dbffc2-09d1-4ef0-9699-006981a85440",
  "slug": "margherita",
  "externalRef": "SKU-1234",
  "name": "Margherita",
  "description": "San Marzano, fior di latte, basil.",
  "priceCents": 1100,
  "tags": ["vegetarian", "signature"],
  "imageUrl": "https://cdn.armenus.app/.../photo.webp",
  "isAvailable": true,
  "merchant": {
    "id": "14f37130-2d4d-4ea1-83a4-d96bbd20df75",
    "slug": "pizza-roma",
    "name": "Pizza Roma",
    "currency": "USD",
    "locale": "en-US"
  },
  "model": {
    "id": "3f727302-aa99-4ae9-9d20-32e866192190",
    "glbUrl": "https://cdn.armenus.app/.../model.glb",
    "usdzUrl": "https://cdn.armenus.app/.../model.usdz",
    "usdzStatus": "ready",
    "posterUrl": "https://cdn.armenus.app/.../poster.webp",
    "physicalSizeM": 0.28,
    "glbBytes": 157000,
    "viewSettings": {
      "cameraOrbit": "0deg 70deg 105%",
      "cameraTarget": "auto auto auto",
      "fieldOfView": "auto",
      "exposure": 1,
      "shadowIntensity": 1,
      "autoRotate": true,
      "arScale": 1
    }
  }
}