terminal For Platforms & Developers

Add 360° Photo-to-Video Rendering to Your Platform

One REST API turns your users' 360° panoramas into branded MP4 and WebM videos — rendered on our servers.

Virtual tour platforms, listing portals, and photography services use the API to generate video from the same equirectangular photos they already host — programmatic camera motion, transitions, overlays, and your branding, with no video pipeline to build or maintain.

Render server-side, output anywhere

REST + JSON ASYNC QUEUE MP4 / WEBM UP TO 8K
POST /convert
# Queue a render, then poll for the result
curl -X POST https://api.360photo-to-video.com/convert \
  -H "X-API-Key: $API_KEY" \
  -F "images=@living-room.jpg" \
  -F 'settings={"frameRate":30,"outputWidth":1080,
      "outputHeight":1920,"outputFormat":"mp4"}' \
  -F 'convert=[{"image":0,"paths":[
      {"yaw":-90,"pitch":0,"fov":100,"stillTime":1},
      {"yaw":90,"pitch":0,"fov":100,"transitionTime":4,
       "transitionType":"easeInOutSine"}]}]'

# → { "status": "queue", "task": "1716923000000" }
curl https://api.360photo-to-video.com/status/1716923000000 \
  -H "X-API-Key: $API_KEY"
# → { "status": "done", "url": "/video/1716923000000.mp4" }

Built for products that already work with 360° photos

Virtual Tour Platforms Proptech & Listing Portals Real Estate Photography Services Marketplaces & MLS Tools

A simple async render flow

Submit a job, let our workers render it with FFmpeg, then fetch the file. No video processing runs on your servers or your users' devices.

1

Submit

POST /convert with your panoramas and a JSON settings + convert body as multipart. You get back a task id.

2

Render

The job is queued and rendered server-side with FFmpeg — equirectangular frames are projected to flat video and composited with your overlays.

3

Poll

GET /status/:task returns queue, processing, or done, plus timing and the result url.

4

Download

Fetch the finished MP4 or WebM from GET /video/:task. Need to abort? DELETE /cancel/:task.

What you can render

Everything in the editor is available programmatically through the same render engine.

view_in_ar

Programmatic camera paths

Define keyframes with yaw, pitch, and field of view, plus still and transition times and a wide range of easing curves — full control over how the camera moves through each panorama.

animation

Multi-scene sequences

Combine several panoramas into one video and join them with dozens of transition effects — fades, wipes, slides, zooms, and more.

label

Overlays & labels

Pin text or image markers to points on the source panorama — room names, prices, hotspots — with timed show and hide on the timeline.

branding_watermark

Your own branding

Burn in text or image watermarks — your logo or your customer's — anchored to any of nine positions or exact pixels, with optional fade in and out.

music_note

Audio tracks

Mix MP3 tracks onto the timeline with start and end times, source offsets, per-track volume, and fade in and out.

high_quality

High-resolution output

Render MP4 or WebM at output sizes up to 7680×4320 and frame rates up to 120 fps, with optional sepia or grayscale filters.

Endpoints

Four endpoints cover the whole lifecycle. Full schema and try-it docs live at /api-docs.

Method & path Purpose Auth
POST /convertQueue a render from uploaded panoramas; returns a task idAPI key / Bearer
GET /status/:taskJob status (queue / processing / done / error) and result urlAPI key / Bearer
GET /video/:videoDownload the rendered MP4 or WebMPublic
DELETE /cancel/:taskCancel a queued jobAPI key / Bearer
key

Authentication

Send an X-API-Key header, or a Firebase ID token as Authorization: Bearer <token>.

input

Inputs

Equirectangular 360° photos (JPG/PNG), optional image assets for overlays, and optional MP3 audio — all as multipart fields.

Frequently Asked Questions

How do I authenticate with the API?

Send your API key in an X-API-Key header, or a Firebase ID token as a Bearer token in the Authorization header. Both are accepted on the protected endpoints; downloading a finished video is public.

How do platforms get API access?

API access is available on the Pro plan. Get in touch and we will help set up your access. See pricing for plan details.

What inputs does the API accept?

One or more equirectangular 360° photos in JPG or PNG, plus optional image assets for overlays and MP3 audio files for the soundtrack.

What output can it produce?

MP4 or WebM, at output sizes up to 7680×4320 and frame rates up to 120 fps, with your camera motion, scene transitions, overlays, and branding rendered in.

Is rendering synchronous?

No. It is an asynchronous queue: POST /convert returns a task id, you poll GET /status/:task for queue, processing, or done, then download from GET /video. Queued jobs can be cancelled with DELETE /cancel/:task.

Can we add our own branding to the videos?

Yes. Pass text or image watermarks — for example your logo — positioned anywhere on the frame, with optional timed fade in and out.

Are there SDKs?

It is a standard REST API using multipart upload and JSON, so it works from any language or HTTP client. Full OpenAPI documentation is available at the /api-docs endpoint.

Build 360° video into your product

Skip the FFmpeg pipeline. Send panoramas, get back finished video.