Import Frames — file format

Import Frames is a recovery tool for support cases — for example, restoring a frame library after a device loss when no iCloud backup exists. It is hidden by default: the entry appears in Settings → Backup only after Frame support enables it for your account. If you think you need it, contact us at [email protected] first.

Folder layout

The importer asks you to pick a folder containing one manifest file and the photos it references:

My Frames/
├── frames.json
├── rayban-aviator.jpg
├── rayban-aviator-sticker.jpg
└── persol-649.jpg

Photos can also sit in one nested subfolder — the importer resolves bare filenames one level deep.

frames.json

{
  "version": 1,
  "frames": [
    {
      "client_id": "5D2A7C1E-4B9F-4E2A-8C3D-1F6E9A0B2C4D",
      "name": "Ray-Ban Aviator",
      "image": "rayban-aviator.jpg",
      "sticker_image": "rayban-aviator-sticker.jpg",
      "brand": "Ray-Ban",
      "model": "RB3025",
      "shape": "aviator",
      "is_favorite": true,
      "price_amount": 161.0,
      "price_currency": "USD",
      "product_url": "https://example.com/rb3025",
      "created_at": "2026-05-01T10:00:00Z"
    },
    {
      "client_id": "0A1B2C3D-4E5F-6789-ABCD-EF0123456789",
      "name": "Persol 649",
      "image": "persol-649.jpg"
    }
  ]
}

Fields

FieldRequiredNotes
client_idyesUUID string. Duplicates of frames already on the device are skipped, never overwritten.
nameyesDisplay name of the frame.
imagerecommendedRelative path to the main product photo (JPEG/PNG). A missing file is tolerated — the frame imports without a photo.
sticker_image, additional_image_1, additional_image_2noExtra photos, same path rules as image.
brand, model, shape, size, material, color_variantnoFree-form strings.
lens_width, bridge_width, temple_lengthnoMillimeters, numbers.
is_favoritenoBoolean, defaults to false.
price_amount, price_currency, original_price_amount, product_urlnoPricing metadata.
created_atnoISO 8601 timestamp; defaults to import time.
A bare JSON array of frame records (without the {"version", "frames"} wrapper) is also accepted as a legacy alias.

How the import behaves