Use this endpoint to create a shareable link for a Virtual Walkthrough on a job that can be password protected.
Overview
The Job Share endpoint allows you to create shareable links for jobs that can be viewed by external users without requiring authentication. Each share generates a unique token and URL that can be used to access the job's viewer interface. Currently, only interior jobs are supported with the supported viewer_version: virtual_walkthrough. This endpoint supports jobs with multiple models.
Request
URL Parameters
id(required) - The ID of the job to share
Request Body
{
"viewer_version": "virtual_walkthrough",
"password_protected": true
}Sample Response Body
{
"id": 1234567,
"token": "zvXwgDcfjiL1q45NuScg",
"password_protected": true,
"expires_at": "2026-01-17T18:28:49.822Z",
"created_at": "2025-12-03T18:28:50.056Z",
"updated_at": "2025-12-03T18:28:50.056Z",
"url": "https://hover.to/shared/zvXwgDcfjiL1q45NuScg",
"generated_password": "12345678"
}Viewer Versions
The endpoint supports the following viewer versions:
| Viewer Version | Value | Password Protection |
|---|---|---|
| Virtual Walkthrough | virtual_walkthrough | Required |
URL Structure
Base URL Format
The returned url field follows this format:
https://hover.to/shared/{token}
Where {token} is the unique share token returned in the response.
Specifying a Model
To view a specific model within a job, append the model_id query parameter to the URL:
https://hover.to/shared/{token}?model_id={model_id}
Example:
https://hover.to/shared/zvXwgDcfjiL1q45NuScg?model_id=14305379
Behavior:
- If
model_idis provided, the viewer will display that specific model - If
model_idis omitted, the viewer will display the job's primary model (typically the first model)
Note: The model_id must belong to the job associated with the share token.
How the Shared URL Works
- Wrapper Page: The
/shared/{token}URL loads a wrapper page that handles authentication and routing - Viewer Selection: Based on the
viewer_versionspecified when creating the share, the wrapper loads the appropriate viewer in an iframe:virtual_walkthrough→ Virtual Walkthrough viewer
- Password Protection: If the share is password-protected, the viewer itself handles password validation
- Model Selection: The
model_idquery parameter (if provided) determines which model to display
Expiration
- Default Expiration: 45 days from creation
- Expired Shares: Cannot be accessed after expiration
- Expiration Date: Available in the
expires_atfield of the response
Considerations
- Password Protection: Use password protection for sensitive shares
- Access Control: Only users with read access to the job can create shares
- Password Immutability: Passwords cannot be changed after share creation
Error Handling
Common Errors
| Status Code | Error | Description |
|---|---|---|
| 401 | Unauthorized | User is not authenticated |
| 403 | Forbidden | User does not have read access to the job |
| 404 | Not Found | Job with the specified ID does not exist |
| 422 | Unprocessable Entity | Validation errors (e.g., invalid viewer_version, missing required fields) |
Notes
- The
generated_passwordfield is only included in the response whenpassword_protectedistrue - Passwords are automatically generated using a secure random hex string (minimum 8 characters)
- The share URL format is consistent across all viewer versions
- Model selection via
model_idquery parameter works for all viewer versions - The wrapper page at
/shared/{token}handles routing to the appropriate viewer based on theviewer_version
