Upload and display a 360 capture
Send a walkthrough to the 360 ingest API, then render the panorama interactively.
360 walkthroughs are organised by project, floor and date. You upload captures to the ingest API, and the processed panoramas come back as assets you can render.
Ingest authentication is not enforced server-side
The 360 specification declares bearer authentication and the service does not enforce it server-side. Send the header on every request, and do not treat it as an access control.
From capture to panorama
Upload a capture
Uploads capture files for a project. Sent as multipart form data.
curl -X POST "https://ingest.evercam.io/360/$PROJECT_ID/upload" \
-H "Authorization: Bearer $EVERCAM_TOKEN" \
-F "file=@walkthrough.jpg"Note the base URL already includes /360, so the project path appends to it.
List the processed assets
The 360 assets belonging to a project.
Assets for one floor on one date.
curl -H "Authorization: Bearer $EVERCAM_TOKEN" \
"https://ingest.evercam.io/360/assets/$PROJECT_ID"Floors are managed separately, which is what lets a walkthrough be organised by level:
The floors defined for a project.
Display the panorama
A 360 capture is an equirectangular image: a single frame where the horizontal axis spans a full 360°. Rendering it means mapping a slice of that image to the viewport and moving the slice as the user drags.
// The whole panorama is one wide image; show a window onto it and pan.
const sliceWidth = image.width / 4
context.drawImage(
image,
yaw % image.width, 0, sliceWidth, image.height,
0, 0, canvas.width, canvas.height,
)The portal's own viewer does exactly this on a 2D canvas, with no 3D engine required. Drag to look around:
Bring your own asset
The viewer takes any equirectangular image URL, so you can point it at a processed 360 asset from the endpoints above.
Next
Send data to the BIM or drone ingest APIs — the same upload shape, different payloads.