Developer Integration

Open media in GizmoVR Lite from your website

Last updated:

Two integration options — deep links to open individual media, or collections to host your own VR library. Works on iOS & Android.

Collections

A collection is a JSON file you host on your own server. Link it via a gizmovr://open deep link and the app loads it as a browsable media library on the home screen. Use it for playlists, themed content, or any grouping of VR media.

Root schema

The top-level JSON envelope.

{
  "message": "OK",
  "data": {
    "title": "My VR Collection",
    "items": [ ... ]
  }
}
FieldTypeDescription
message RequiredstringAlways "OK" on success.
data RequiredobjectContainer for collection data.
data.title OptionalstringCollection title shown in the app.
data.items RequiredarrayArray of Item objects.

Item schema

Each entry in data.items represents a single video or image.

FieldTypeDescription
id RequiredstringUnique identifier. URL-safe characters only (a-z, A-Z, 0-9, -, _). Max 128 chars.
title RequiredstringDisplay title. Max 100 characters.
type Required"video" | "image"Media type.
thumb RequiredstringThumbnail URL (HTTPS). JPEG or PNG, max 1024px, under 200 KB.
format RequiredobjectVR projection and stereo packing. See Format object.
duration Videos onlyintegerDuration in seconds. Required for videos, ignored for images.
sources ConditionalarrayDirect media URLs. Required for images. Videos: use this OR metaUrl.
metaUrl ConditionalstringHTTPS URL to a JSON endpoint that returns video sources at runtime. Videos only.
description OptionalstringLong description shown in the app. Max 500 characters.
tags Optionalstring[]Categorisation tags. Lowercase, max 10 tags, max 30 chars each.

Format object

Tells the app how to decode and display the media.

{ "projection": "360", "stereo": "mono" }
FieldValuesDescription
projection Required"flat"Standard 2D / flat media.
"180"180° equirectangular (VR180).
"360"360° equirectangular (full sphere).
stereo Required"mono"Monoscopic — no stereo packing.
"tb"Top-bottom stereo packing.
"sbs"Side-by-side stereo packing.

Source object

A single media file URL, with optional quality metadata.

FieldTypeDescription
url RequiredstringDirect HTTPS URL to the media file.
title OptionalstringQuality label shown in the UI. E.g. "4K", "1080p", "Original".
width OptionalintegerWidth in pixels.
height OptionalintegerHeight in pixels.
codec OptionalstringVideo codec. E.g. "h264", "h265", "vp9".
bitrate OptionalstringBitrate in bps.
size OptionalstringFile size, human-readable or in bytes.
audioUrl OptionalstringSeparate audio track URL (for videos with split audio).

Full example

A complete collection with two items — one video using metaUrl and one image with inline sources.

{
  "message": "OK",
  "data": {
    "title": "My VR Collection",
    "items": [
      {
        "id": "bayview-pool",
        "title": "Bayview Pool Area",
        "description": "Relaxing 360° view of a pool area at sunset.",
        "type": "video",
        "duration": 238,
        "thumb": "https://media.example.com/thumbs/bayview-pool.jpg",
        "metaUrl": "https://api.example.com/video/bayview-pool",
        "sources": [],
        "tags": ["relaxing", "nature"],
        "format": {
          "projection": "360",
          "stereo": "mono"
        }
      },
      {
        "id": "dragon-ride",
        "title": "Riding a Dragon",
        "description": "POV: soaring past floating islands on the back of a dragon.",
        "type": "image",
        "thumb": "https://media.example.com/thumbs/dragon-ride.jpg",
        "tags": ["fantasy", "adventure"],
        "sources": [
          {
            "title": "4K",
            "url": "https://media.example.com/images/dragon-ride-4k.jpg",
            "width": 4096,
            "height": 2048
          }
        ],
        "format": {
          "projection": "360",
          "stereo": "mono"
        }
      }
    ]
  }
}

Validation checklist

  • All URLs (thumb, sources[].url, metaUrl) must be HTTPS.
  • Item id must be URL-safe: a-z, A-Z, 0-9, -, _ only. Max 128 characters. Must be unique within the collection.
  • Thumbnails: JPEG or PNG (JPEG preferred), max 1024px on the longest side, under 200 KB. Aspect ratio should match the media.
  • Videos must include duration (integer seconds, > 0) and either sources or metaUrl (or both).
  • Images must include a sources array with at least one entry.
  • Tags must be lowercase, alphanumeric + hyphens only, max 30 characters each, max 10 tags per item.
  • title max 100 characters; description max 500 characters.
  • Serve your JSON with Content-Type: application/json and CORS headers if needed.