API Endpoints

Complete reference for all vid2scene API endpoints.

🏢 Enterprise API

All endpoints require Enterprise subscription and API key authentication. You can only access your own jobs.

Jobs

Manage your video processing jobs.

GET List Jobs

GET /api/v1/jobs/

Retrieve a list of your video processing jobs.

Example Request
curl -H "Authorization: Api-Key YOUR_API_KEY" \
     "https://vid2scene.com/api/v1/jobs/"
Example Response
[
  {
    "job_id": "123e4567-e89b-12d3-a456-426614174000",
    "title": "My awesome video",
    "status": "Finished",
    "percent_complete": 100,
    "uploaded_at": "2024-01-15T10:30:00Z",
    "public": false,
    "reconstruction_method": "glomap",
    "training_max_num_gaussians": 30000,
    "training_num_steps": 7000,
    "has_ply": true,
    "has_spz": false,
    "camera_data": {
      "position": {"x": 0.0, "y": 0.0, "z": 5.0},
      "lookAt": {"x": 0.0, "y": 0.0, "z": 0.0},
      "up": {"x": 0.0, "y": 1.0, "z": 0.0},
      "cameraType": "orbital"
    }
  }
]

GET Get Job Status

GET /api/v1/jobs/{job_id}/

Get the current processing status and progress of a job. This endpoint returns detailed information about the job including its current status, progress, and configuration.

Status Values

The status field can have the following values:

  • Queued - Waiting to start processing
  • Queued - position: X - Waiting in queue at position X
  • Processing video - Currently processing the video
  • Generating 3D scene - Creating the 3D reconstruction
  • Finished - Completed successfully
  • Failed - Processing failed
  • Not found - Job not found in queue

The percent_complete field shows progress during 3D scene generation (0-100), or null if not yet started.

Example Response
{
  "job_id": "123e4567-e89b-12d3-a456-426614174000",
  "title": "My awesome video",
  "status": "Generating 3D scene",
  "percent_complete": 75,
  "uploaded_at": "2024-01-15T10:30:00Z",
  "public": false,
  "reconstruction_method": "glomap",
  "training_max_num_gaussians": 30000,
  "training_num_steps": 7000,
  "has_ply": false,
  "has_spz": false,
  "camera_data": {
    "position": {"x": 0.0, "y": 0.0, "z": 5.0},
    "lookAt": {"x": 0.0, "y": 0.0, "z": 0.0},
    "up": {"x": 0.0, "y": 1.0, "z": 0.0},
    "cameraType": "orbital"
  }
}

PATCH Update Job

PATCH /api/v1/jobs/{job_id}/

Update job properties like title, public status, or camera data.

Request Body
Field Type Description
title string Job title
public boolean Whether the job is publicly visible
camera_data object Camera configuration data
Example Request
curl -X PATCH \
     -H "Authorization: Api-Key YOUR_API_KEY" \
     -H "Content-Type: application/json" \
     -d '{"title": "Updated title", "public": true}' \
     "https://vid2scene.com/api/v1/jobs/123e4567-e89b-12d3-a456-426614174000/"

DELETE Delete Job

DELETE /api/v1/jobs/{job_id}/

Delete a job and all associated files. This action cannot be undone.

Example Request
curl -X DELETE \
     -H "Authorization: Api-Key YOUR_API_KEY" \
     "https://vid2scene.com/api/v1/jobs/123e4567-e89b-12d3-a456-426614174000/"

GET Get Download URL (Redirect)

GET /api/v1/jobs/{job_id}/download/{file_type}/

Returns a 302 redirect to a secure, time-limited download URL for the specified file type. URLs expire in 15 minutes.

Path Parameters
Parameter Type Description
job_id UUID The unique identifier of the job
file_type string File type to download: ply or spz
Example Request
# Follow redirects to download the file
curl -H "Authorization: Api-Key YOUR_API_KEY" \
     -L "https://vid2scene.com/api/v1/jobs/123e4567-e89b-12d3-a456-426614174000/download/ply/" \
     -o scene.ply --fail --show-error
Response

Returns a 302 Found redirect to the secure download URL. The file will be downloaded directly from cloud storage.

💡 Usage: Use -L to follow redirects and -o to save the file. No additional authentication required for the redirected URL.

GET Get Preview Image (Redirect)

GET /api/v1/jobs/{job_id}/preview/

Returns a 302 redirect to a secure, time-limited URL for the preview image. URLs expire in 15 minutes.

Example Request
curl -H "Authorization: Api-Key YOUR_API_KEY" \
     -L "https://vid2scene.com/api/v1/jobs/123e4567-e89b-12d3-a456-426614174000/preview/" \
     -o preview.jpg --fail --show-error
💡 Tip: Use -L to follow redirects and -o to save the image to a file.

Upload

Upload videos for processing.

POST Generate Upload URL

POST /api/v1/generate-upload-url/

Generate a secure upload URL for video files. This returns a time-limited URL that you can use to upload your video directly to our storage.

Request Body
Field Type Required Description
file_extension string Yes File extension only (e.g., mp4, mov)
Example Request
curl -X POST \
     -H "Authorization: Api-Key YOUR_API_KEY" \
     -H "Content-Type: application/json" \
     -d '{"file_extension": "mp4"}' \
     "https://vid2scene.com/api/v1/generate-upload-url/"
Example Response
{
  "url": "https://storage.blob.core.windows.net/container/videos/uuid.mp4?sv=...",
  "blob_name": "videos/uuid.mp4"
}

POST Create Processing Job

POST /api/v1/submit-job/

Create and start a new video processing job after uploading your video file.

Request Body
Field Type Required Description
blob_name string Yes Blob name from upload response
title string No Job title (defaults to filename)
public boolean No Make job publicly visible (default: false)
reconstruction_method string No Processing method (default: "glomap")
camera_data object No Camera view data (position, lookAt, up, cameraType)
Example Request
curl -X POST \
     -H "Authorization: Api-Key YOUR_API_KEY" \
     -H "Content-Type: application/json" \
     -d '{"blob_name": "videos/uuid.mp4", "title": "My awesome video", "public": false, "reconstruction_method": "glomap"}' \
     "https://vid2scene.com/api/v1/submit-job/"
Example Response
{
  "success": true,
  "job_id": "123e4567-e89b-12d3-a456-426614174000",
  "title": "My awesome video",
  "status": "queued",
  "uploaded_at": "2024-01-15T10:30:00Z",
  "public": false,
  "reconstruction_method": "glomap",
  "training_max_num_gaussians": 30000,
  "training_num_steps": 7000,
  "camera_data": {
    "position": {"x": 0.0, "y": 0.0, "z": 5.0},
    "lookAt": {"x": 0.0, "y": 0.0, "z": 0.0},
    "up": {"x": 0.0, "y": 1.0, "z": 0.0},
    "cameraType": "orbital"
  }
}

Error Responses

All error responses include an error message and appropriate HTTP status code.

Status Code Description Example Response
400 Bad Request {"error": "Invalid file format"}
401 Unauthorized {"error": "Invalid API key"}
403 Forbidden {"error": "Insufficient permissions"}
404 Not Found {"error": "Job not found"}
429 Rate Limited {"error": "Rate limit exceeded"}
500 Server Error {"error": "Internal server error"}