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
# 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
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.
Submit
POST /convert with your panoramas and a JSON settings + convert body as multipart. You get back a task id.
Render
The job is queued and rendered server-side with FFmpeg — equirectangular frames are projected to flat video and composited with your overlays.
Poll
GET /status/:task returns queue, processing, or done, plus timing and the result url.
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.
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.
Multi-scene sequences
Combine several panoramas into one video and join them with dozens of transition effects — fades, wipes, slides, zooms, and more.
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.
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.
Audio tracks
Mix MP3 tracks onto the timeline with start and end times, source offsets, per-track volume, and fade in and out.
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 /convert | Queue a render from uploaded panoramas; returns a task id | API key / Bearer |
| GET /status/:task | Job status (queue / processing / done / error) and result url | API key / Bearer |
| GET /video/:video | Download the rendered MP4 or WebM | Public |
| DELETE /cancel/:task | Cancel a queued job | API key / Bearer |
Authentication
Send an X-API-Key header, or a Firebase ID token as Authorization: Bearer <token>.
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.