Last updated:
Two integration options — deep links to open individual media, or collections to host your own VR library. Works on iOS & Android.
GizmoVR Lite registers the gizmovr:// custom URL scheme on iOS and Android.
A link with this scheme will launch the app (or wake it from the background) and immediately open your media or collection.
Links work from web pages, emails, native apps, and QR codes.
gizmovr://play?url=https%3A%2F%2Fexample.com%2Fvideo.mp4
Opens a video or image directly in the player. Optionally enters VR mode after loading.
| Parameter | Type | Description |
|---|---|---|
url Required |
string |
Media URL. Must be URL-encoded. Supports HTTPS, HTTP, and local file paths. |
type Optional |
video | image |
Media type. If omitted, inferred from the URL filename and any embedded format hints. |
vr Optional |
true | false |
Enter VR (Cardboard) mode immediately after opening. Default: false. |
gizmovr://play?url=https%3A%2F%2Fexample.com%2Fvideo.mp4
gizmovr://play?url=https%3A%2F%2Fexample.com%2Fvideo_360.mp4&vr=true
gizmovr://play?url=https%3A%2F%2Fexample.com%2Fimage.jpg&type=image
Loads a remote collection JSON and displays it on the app's home screen. See Collections for the JSON format.
| Parameter | Type | Description |
|---|---|---|
url Required |
string |
HTTPS URL to a collection JSON file. Must be URL-encoded. Must conform to the Collection Specification. |
gizmovr://open?url=https%3A%2F%2Fexample.com%2Fcollection.json
type is omitted from a play link, the app checks the URL for format hints first (e.g. query params projection=360&stereo=sbs), then the filename (e.g. video_360_sbs.mp4 → 360°, side-by-side stereo). Falls back to flat projection, mono if no hints are found.
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.
The top-level JSON envelope.
{
"message": "OK",
"data": {
"title": "My VR Collection",
"items": [ ... ]
}
}
| Field | Type | Description |
|---|---|---|
message Required | string | Always "OK" on success. |
data Required | object | Container for collection data. |
data.title Optional | string | Collection title shown in the app. |
data.items Required | array | Array of Item objects. |
Each entry in data.items represents a single video or image.
| Field | Type | Description |
|---|---|---|
id Required | string | Unique identifier. URL-safe characters only (a-z, A-Z, 0-9, -, _). Max 128 chars. |
title Required | string | Display title. Max 100 characters. |
type Required | "video" | "image" | Media type. |
thumb Required | string | Thumbnail URL (HTTPS). JPEG or PNG, max 1024px, under 200 KB. |
format Required | object | VR projection and stereo packing. See Format object. |
duration Videos only | integer | Duration in seconds. Required for videos, ignored for images. |
sources Conditional | array | Direct media URLs. Required for images. Videos: use this OR metaUrl. |
metaUrl Conditional | string | HTTPS URL to a JSON endpoint that returns video sources at runtime. Videos only. |
description Optional | string | Long description shown in the app. Max 500 characters. |
tags Optional | string[] | Categorisation tags. Lowercase, max 10 tags, max 30 chars each. |
Tells the app how to decode and display the media.
{ "projection": "360", "stereo": "mono" }
| Field | Values | Description |
|---|---|---|
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. |
A single media file URL, with optional quality metadata.
| Field | Type | Description |
|---|---|---|
url Required | string | Direct HTTPS URL to the media file. |
title Optional | string | Quality label shown in the UI. E.g. "4K", "1080p", "Original". |
width Optional | integer | Width in pixels. |
height Optional | integer | Height in pixels. |
codec Optional | string | Video codec. E.g. "h264", "h265", "vp9". |
bitrate Optional | string | Bitrate in bps. |
size Optional | string | File size, human-readable or in bytes. |
audioUrl Optional | string | Separate audio track URL (for videos with split audio). |
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"
}
}
]
}
}
thumb, sources[].url, metaUrl) must be HTTPS.id must be URL-safe: a-z, A-Z, 0-9, -, _ only. Max 128 characters. Must be unique within the collection.duration (integer seconds, > 0) and either sources or metaUrl (or both).sources array with at least one entry.title max 100 characters; description max 500 characters.Content-Type: application/json and CORS headers if needed.