Build anything with the 3Syxty API
A comprehensive REST API covering every resource and operation in the platform. Programmatically create tours, manage assets, trigger publishing, and integrate with your existing tools.
Authentication
All API requests require authentication via a Bearer token in the Authorization header. Three token types are supported:
API Keys
Scoped, rotatable keys with per-key permission sets. Ideal for server-to-server integrations. Created in Studio → Settings → API Tokens.
Personal Access Tokens
User-scoped tokens for CLI tools and scripting. Inherit the user's workspace permissions.
OAuth2 (Authorization Code)
Standard OAuth2 authorization code flow for third-party applications accessing user data on their behalf.
curl https://api.3syxty.com/v1/projects \ -H "Authorization: Bearer sk_live_your_api_key_here" \ -H "Content-Type: application/json" \ -H "Accept: application/json"
Response Format
All responses are JSON with a consistent envelope structure. Successful responses include a data field. Paginated responses include a pagination object.
{
"success": true,
"data": {
"id": "proj_8kF2x9mN",
"name": "Luxury Villa Tour",
"scenes_count": 24,
"status": "published"
},
"meta": {
"request_id": "req_a1b2c3d4",
"timestamp": "2026-03-03T20:00:00Z"
}
}
{
"success": false,
"message": "Tour not found.",
"error": {
"code": "RESOURCE_NOT_FOUND",
"details": []
},
"meta": {
"request_id": "req_e5f6g7h8"
}
}
{
"success": true,
"data": [ ... ],
"pagination": {
"page": 1,
"per_page": 25,
"total": 142,
"total_pages": 6
}
}
Rate Limits
Rate limits are applied per API key. Limits are returned in response headers.
| Plan | Requests/minute | Requests/day |
|---|---|---|
| Pro | 60 | 10,000 |
| Studio | 120 | 100,000 |
| Enterprise | Custom | Custom |
X-RateLimit-Limit: 60 X-RateLimit-Remaining: 58 X-RateLimit-Reset: 1709497260
Workspaces
Manage workspaces, members, and usage.
| Method | Endpoint |
|---|---|
| GET |
/v1/workspaces
|
| GET |
/v1/workspaces/{id}
|
| PUT |
/v1/workspaces/{id}
|
| GET |
/v1/workspaces/{id}/members
|
| POST |
/v1/workspaces/{id}/members
|
| DELETE |
/v1/workspaces/{id}/members/{user_id}
|
| GET |
/v1/workspaces/{id}/usage
|
Projects
Create, read, update, and delete virtual tour projects.
| Method | Endpoint |
|---|---|
| GET |
/v1/projects
|
| POST |
/v1/projects
|
| GET |
/v1/projects/{id}
|
| PUT |
/v1/projects/{id}
|
| DELETE |
/v1/projects/{id}
|
| POST |
/v1/projects/{id}/duplicate
|
| GET |
/v1/projects/{id}/versions
|
| POST |
/v1/projects/{id}/versions/{vid}/restore
|
| POST |
/v1/projects/{id}/export
|
| GET |
/v1/projects/{id}/activity
|
curl https://api.3syxty.com/v1/projects \
-H "Authorization: Bearer sk_live_..." \
-X POST \
-d '{"name": "Beach Resort Tour", "description": "Virtual walkthrough of the resort"}'
{
"success": true,
"data": {
"id": "proj_nR4kW8vP",
"name": "Beach Resort Tour",
"description": "Virtual walkthrough of the resort",
"scenes_count": 0,
"status": "draft",
"created_at": "2026-03-03T20:15:00Z"
}
}
Scenes
Manage scenes (panoramas) within a project.
| Method | Endpoint |
|---|---|
| GET |
/v1/projects/{id}/scenes
|
| POST |
/v1/projects/{id}/scenes
|
| GET |
/v1/scenes/{id}
|
| PUT |
/v1/scenes/{id}
|
| DELETE |
/v1/scenes/{id}
|
| PUT |
/v1/projects/{id}/scenes/reorder
|
Hotspots
Create and manage interactive hotspots within scenes.
| Method | Endpoint |
|---|---|
| GET |
/v1/scenes/{id}/hotspots
|
| POST |
/v1/scenes/{id}/hotspots
|
| GET |
/v1/hotspots/{id}
|
| PUT |
/v1/hotspots/{id}
|
| DELETE |
/v1/hotspots/{id}
|
| POST |
/v1/scenes/{id}/hotspots/reorder
|
Assets
Upload and manage media assets (images, video, audio, 3D models).
| Method | Endpoint |
|---|---|
| GET |
/v1/projects/{id}/assets
|
| POST |
/v1/projects/{id}/assets
|
| GET |
/v1/assets/{id}
|
| DELETE |
/v1/assets/{id}
|
Publishing
Publish, unpublish, and check the status of tour deployments.
| Method | Endpoint |
|---|---|
| POST |
/v1/projects/{id}/publish
|
| GET |
/v1/projects/{id}/publish/status
|
| POST |
/v1/projects/{id}/unpublish
|
| GET |
/v1/projects/{id}/embed-codes
|
Analytics
Retrieve engagement analytics, heatmaps, and export data.
| Method | Endpoint |
|---|---|
| GET |
/v1/projects/{id}/analytics
|
| GET |
/v1/projects/{id}/analytics/heatmaps
|
| GET |
/v1/projects/{id}/analytics/export
|
AI Services
Access AI-powered tools: scene analysis, generative fill, virtual staging, narration, and more.
| Method | Endpoint |
|---|---|
| POST |
/v1/ai/analyze-scene/{scene_id}
|
| POST |
/v1/ai/auto-connect/{project_id}
|
| POST |
/v1/ai/narration/{scene_id}
|
| POST |
/v1/ai/generative-fill
|
| POST |
/v1/ai/virtual-stage/{scene_id}
|
| POST |
/v1/ai/remove-tripod/{scene_id}
|
| POST |
/v1/ai/dollhouse/{project_id}
|
| POST |
/v1/ai/quality-check/{project_id}
|
| POST |
/v1/ai/translate/{project_id}
|
| POST |
/v1/ai/chat
|
Webhooks
Register webhook endpoints to receive real-time event notifications.
| Method | Endpoint |
|---|---|
| GET |
/v1/webhooks
|
| POST |
/v1/webhooks
|
| PUT |
/v1/webhooks/{id}
|
| DELETE |
/v1/webhooks/{id}
|
| GET |
/v1/webhooks/{id}/deliveries
|
| POST |
/v1/webhooks/{id}/test
|
Leads
Manage lead submissions captured from tour contact forms.
| Method | Endpoint |
|---|---|
| GET |
/v1/leads
|
| PUT |
/v1/leads/{id}
|
| GET |
/v1/leads/export
|
Templates & Marketplace
Browse, create, and use tour templates from the marketplace.
| Method | Endpoint |
|---|---|
| GET |
/v1/templates
|
| GET |
/v1/templates/{id}
|
| POST |
/v1/templates
|
| POST |
/v1/templates/{id}/use
|
Integrations
Connect third-party services: CRM, MLS, analytics, and more.
| Method | Endpoint |
|---|---|
| GET |
/v1/integrations
|
| POST |
/v1/integrations
|
| PUT |
/v1/integrations/{id}
|
| DELETE |
/v1/integrations/{id}
|
| POST |
/v1/integrations/{id}/test
|
Quizzes & E-Learning
Manage quizzes, questions, and learner progress.
| Method | Endpoint |
|---|---|
| GET |
/v1/projects/{id}/quizzes
|
| POST |
/v1/projects/{id}/quizzes
|
| PUT |
/v1/quizzes/{id}
|
| DELETE |
/v1/quizzes/{id}
|
| GET |
/v1/quizzes/{id}/questions
|
| POST |
/v1/quizzes/{id}/questions
|
| GET |
/v1/projects/{id}/leaderboard
|
| GET |
/v1/projects/{id}/progress/{learner_id}
|
| GET |
/v1/projects/{id}/scorm-export
|
Search
Global search across projects, scenes, and assets.
| Method | Endpoint |
|---|---|
| GET |
/v1/search?q={query}
|
API Tokens
Manage API keys programmatically.
| Method | Endpoint |
|---|---|
| GET |
/v1/tokens
|
| POST |
/v1/tokens
|
| DELETE |
/v1/tokens/{id}
|
Error Codes
The API uses standard HTTP status codes. Error responses include a machine-readable code field for programmatic handling.
| HTTP Status | Error Code | Description |
|---|---|---|
| 400 |
VALIDATION_ERROR
|
Request body or parameters failed validation |
| 401 |
UNAUTHORIZED
|
Missing or invalid authentication token |
| 403 |
FORBIDDEN
|
Authenticated but insufficient permissions |
| 404 |
RESOURCE_NOT_FOUND
|
The requested resource does not exist |
| 409 |
CONFLICT
|
Resource state conflict (e.g. duplicate name) |
| 422 |
UNPROCESSABLE_ENTITY
|
Request understood but cannot be processed |
| 429 |
RATE_LIMIT_EXCEEDED
|
Too many requests — slow down |
| 500 |
INTERNAL_ERROR
|
Unexpected server error — contact support |
API Versioning
The API is versioned via the URL path (/v1/). We follow semantic versioning principles:
- → Additive changes (new fields, new endpoints) are non-breaking and do not require a version bump
-
→
Breaking changes (removed fields, changed behaviour) result in a new version (
/v2/) - → Deprecated versions receive at least 12 months of support after a successor is released
Comments
Manage collaborative review comments on projects.
/v1/projects/{id}/comments/v1/projects/{id}/comments/v1/comments/{type}/{entity_id}/v1/comments/{id}/resolve/v1/comments/{id}