Lab Flask
← root/

OPENSTRATE_RECON_API

HTTPS endpoints on openstrate.com to upload video, run volumetric reconstruction, poll job state, and open the resulting mesh in the browser viewer. CORS is open for browser use; no API key is required for the public upload and status flow described here.

00_BASE_URL

https://openstrate.com

All paths below are rooted here. JSON bodies use Content-Type: application/json unless noted.

01_TYPICAL_FLOW

  1. Upload a video with POST /api/upload (multipart). For .mp4, .webm, etc., the API stores the file and starts reconstruction automatically, returning a job_id.
  2. Poll GET /api/reconstruct/status/{job_id} until status is complete or failed.
  3. Open view_url from the job (or use GET /view/{id}.glb once you have the asset id).

If you already host the video at a public URL OpenStrate can fetch, you can skip multipart upload and call POST /api/reconstruct with video_url instead.

02_POST_API_UPLOAD

Multipart upload for 3D assets and video. Video uploads trigger reconstruction in the same response.

POST /api/upload
Content-Type: multipart/form-data
Field Description
file Single file field.

Allowed types include .glb, .ply, .bin, .omxl, .stl, and video: .mp4, .mov, .avi, .mkv, .webm. Max size: 500 MB.

curl -X POST https://openstrate.com/api/upload \
  -F "file=@walkthrough.mp4"

Response 200 (mesh upload — no video):

{
  "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "filename": "scene.glb",
  "url": "https://openstrate.com/api/files/a1b2c3d4-e5f6-7890-abcd-ef1234567890.glb",
  "view": "https://openstrate.com/view/a1b2c3d4-e5f6-7890-abcd-ef1234567890.glb",
  "size": 2048576
}

Response 200 (video — reconstruction started): same fields plus:

  • job_id — use with status endpoint
  • reconstruction_started — boolean
  • reconstruction_error — present if the pipeline could not be reached (e.g. maintenance)

03_POST_API_RECONSTRUCT

Start a job when the input video is already available at a downloadable HTTPS URL (e.g. the url from a prior upload).

POST /api/reconstruct
Content-Type: application/json

{
  "video_url": "https://openstrate.com/api/files/{uuid}.mp4",
  "filename": "optional-original-name.mp4"
}
Field Required Description
video_url Yes URL OpenStrate’s reconstruction worker can fetch.
filename No Label for logs / job metadata.

Response 200

{ "job_id": "…", "status": "processing" }

Response 503 — worker unavailable; body may include job_id and error.

04_GET_RECONSTRUCT_STATUS

GET /api/reconstruct/status/{job_id}

Returns the persisted job document. Poll every few seconds while status is pending or processing.

Common fields

Field Meaning
status pending, processing, complete, failed
current_frame / total_frames Progress hints when the pipeline reports them
view_url Interactive viewer link when complete
mesh_viewer_url, glb_asset_url, … Optional extra links depending on export settings
mission_id, relay_base Present for progressive / live viewer flows
error Human-readable failure when failed
curl -s https://openstrate.com/api/reconstruct/status/YOUR_JOB_ID | jq .

05_PIPELINE_CALLBACKS

Endpoints such as POST /api/reconstruct/progress/{job_id}, POST /api/reconstruct/complete/{job_id}, and POST /api/reconstruct/session/{job_id} are invoked by the OpenStrate reconstruction service, not by end-user apps. Integrators only need upload + status + viewer URLs above.

06_MESH_DOWNLOAD_VIEWER

After reconstruction (or direct mesh upload):

  • Download: GET /api/files/{id}.{ext}
  • Viewer: GET /view/{id}.{ext} — WebGL viewer, orbit / zoom / pan
  • Preview PNG (for link unfurls): GET /api/preview/{id}.{ext}

Upload, download, and preview error semantics match the OpenStrate file host contract (multipart field file, GET /api/files/…, GET /api/preview/…).

07_ERRORS

HTTP Typical cause
400 Missing file, invalid type, or missing video_url on reconstruct
404 Unknown job_id or file id
503 Reconstruction worker unreachable
500 Storage or internal error

08_RELATED

Sensing-as-a-service positioning · embed viewers on your site

/cloud/ /spatialembedding/

Contact SiL →