PlanRadar Site View API
Manage site view runs, points, and attachments
Manage site view runs, points, and attachments
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/planradar:planradar-site-view-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: PlanRadar's API Documentation Site View API
version: '2.0'
description: Welcome to PlanRadar's API documentation, here you can find all the details about our APIs as well as test them online.
servers:
- url: /
tags:
- name: Site View
description: Manage site view runs, points, and attachments
paths:
/api/v2/{customer_id}/projects/{project_id}/components/{component_id}/site_view/runs:
get:
summary: Retrieve all runs
tags:
- Site View
security:
- apiKey: []
parameters:
- name: customer_id
in: path
required: true
schema:
type: string
- name: project_id
in: path
required: true
schema:
type: string
- name: component_id
in: path
required: true
schema:
type: string
- name: filter[name]
in: query
schema:
type: string
- name: filter[path]
in: query
schema:
type: string
- name: filter[resolution]
in: query
schema:
type: string
- name: filter[fps]
in: query
schema:
type: string
- name: filter[state]
in: query
description: 'Available values : queued, running, success, failed, bad'
schema:
type: string
- name: filter[stage]
in: query
schema:
type: string
- name: filter[meta]
in: query
schema:
type: string
- name: filter[start_point]
in: query
schema:
type: string
- name: filter[start_ts]
in: query
schema:
type: string
- name: filter[start_angle_rad]
in: query
schema:
type: string
- name: filter[id]
in: query
schema:
type: string
- name: filter[is_valid]
in: query
schema:
type: boolean
- name: filter[is_outdoor]
in: query
schema:
type: boolean
- name: last_sync_date
in: query
schema:
type: string
- name: include
in: query
example: layer,trajectories
description: "\n Available includes:\n * layer\n * trajectories"
schema:
type: string
- name: page
in: query
schema:
type: integer
- name: pagesize
in: query
description: Maximum is 500, default is 100
schema:
type: integer
- name: sort
in: query
description: 'Example: `name` is name ascending `-name` is name decending'
schema:
type: string
responses:
'404':
description: Runs Not Found
operationId: getApiV2ByCustomerIdProjectsByProjectIdComponentsByComponentIdSiteViewRuns
x-operation-id-source: derived
post:
summary: Create Run
tags:
- Site View
security:
- apiKey: []
parameters:
- name: customer_id
in: path
required: true
schema:
type: string
- name: project_id
in: path
required: true
schema:
type: string
- name: component_id
in: path
required: true
schema:
type: string
responses:
'404':
description: Component Not found
requestBody:
content:
application/json:
schema:
type: object
properties:
data[attributes][name]:
type: string
description: is required
data[attributes][path]:
type: string
data[attributes][resolution]:
type: array
items:
type: number
data[attributes][start_point]:
type: array
items:
type: number
description: is required
data[attributes][fps]:
type: number
data[attributes][is_outdoor]:
type: boolean
data[attributes][is_single_frame]:
type: boolean
data[attributes][video_duration]:
type: number
data[attributes][telemetry_file]:
type: string
format: binary
data[attributes][site_view_image]:
type: string
format: binary
data[attributes][mobile_meta_info]:
type: string
description: is not required
operationId: postApiV2ByCustomerIdProjectsByProjectIdComponentsByComponentIdSiteViewRuns
x-operation-id-source: derived
/api/v2/{customer_id}/projects/{project_id}/components/{component_id}/site_view/runs/{id}:
get:
summary: Retrieve run
tags:
- Site View
security:
- apiKey: []
parameters:
- name: customer_id
in: path
required: true
schema:
type: string
- name: project_id
in: path
required: true
schema:
type: string
- name: component_id
in: path
required: true
schema:
type: string
- name: id
in: path
required: true
schema:
type: string
- name: include
in: query
example: layer,trajectories
description: "\n Available includes:\n layer\n trajectories"
schema:
type: string
responses:
'404':
description: Run Not Found
operationId: getApiV2ByCustomerIdProjectsByProjectIdComponentsByComponentIdSiteViewRunsById
x-operation-id-source: derived
delete:
summary: Deletes specific run
tags:
- Site View
description: This API is used for deleting a specific run based on its uuid.
security:
- apiKey: []
parameters:
- name: customer_id
in: path
required: true
schema:
type: string
- name: project_id
in: path
required: true
schema:
type: string
- name: component_id
in: path
required: true
schema:
type: string
- name: id
in: path
required: true
schema:
type: string
responses:
'404':
description: Run Not Found
operationId: deleteApiV2ByCustomerIdProjectsByProjectIdComponentsByComponentIdSiteViewRunsById
x-operation-id-source: derived
put:
summary: Updates specific run
tags:
- Site View
description: This API is used for updating a specific run based on its uuid.
security:
- apiKey: []
parameters:
- name: customer_id
in: path
required: true
schema:
type: string
- name: project_id
in: path
required: true
schema:
type: string
- name: component_id
in: path
required: true
schema:
type: string
- name: id
in: path
required: true
schema:
type: string
responses:
'404':
description: Run Not Found
requestBody:
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
attributes:
type: object
properties:
name:
type: string
start_point:
type: array
items:
type: number
default:
- 0.1
- 0.2
is_valid:
type: boolean
is_outdoor:
type: boolean
is_single_frame:
type: boolean
operationId: putApiV2ByCustomerIdProjectsByProjectIdComponentsByComponentIdSiteViewRunsById
x-operation-id-source: derived
/api/v2/{customer_id}/projects/{project_id}/components/{component_id}/site_view/points:
get:
summary: Retrieve all points
tags:
- Site View
security:
- apiKey: []
parameters:
- name: customer_id
in: path
required: true
schema:
type: string
- name: project_id
in: path
required: true
schema:
type: string
- name: component_id
in: path
required: true
schema:
type: string
- name: filter[trajectory_id]
in: query
schema:
type: string
- name: filter[traj_type]
in: query
schema:
type: string
- name: filter[x]
in: query
schema:
type: string
- name: filter[y]
in: query
schema:
type: string
- name: filter[angle_rad]
in: query
schema:
type: string
- name: filter[idx]
in: query
schema:
type: string
- name: filter[id]
in: query
schema:
type: string
- name: filter[capture_id]
in: query
schema:
type: string
- name: filter[single_frame_date_group]
in: query
schema:
type: string
- name: filter[capture_name]
in: query
schema:
type: string
- name: filter[created_at]
in: query
schema:
type: string
- name: filter[updated_at]
in: query
schema:
type: string
- name: filter
in: query
schema:
type: string
- name: page
in: query
schema:
type: integer
- name: pagesize
in: query
description: Maximum is 500, default is 100
schema:
type: integer
- name: sort
in: query
description: 'Example: `name` is name ascending `-name` is name decending'
schema:
type: string
responses:
'404':
description: Points Not Found
operationId: getApiV2ByCustomerIdProjectsByProjectIdComponentsByComponentIdSiteViewPoints
x-operation-id-source: derived
/api/v2/{customer_id}/projects/{project_id}/components/{component_id}/site_view/points/{id}:
get:
summary: Retrieve one point
tags:
- Site View
security:
- apiKey: []
parameters:
- name: customer_id
in: path
required: true
schema:
type: string
- name: project_id
in: path
required: true
schema:
type: string
- name: component_id
in: path
required: true
schema:
type: string
- name: id
in: path
required: true
schema:
type: string
- name: include
in: query
example: timecell,trajectory
description: "\n Available includes:\n timecell\n trajectory"
schema:
type: string
responses:
'404':
description: Point Not Found
operationId: getApiV2ByCustomerIdProjectsByProjectIdComponentsByComponentIdSiteViewPointsById
x-operation-id-source: derived
/api/v2/{customer_id}/projects/{project_id}/components/{component_id}/site_view/points/{point_id}/point_history:
get:
summary: Retrieve point history
tags:
- Site View
security:
- apiKey: []
parameters:
- name: customer_id
in: path
required: true
schema:
type: string
- name: project_id
in: path
required: true
schema:
type: string
- name: component_id
in: path
required: true
schema:
type: string
- name: point_id
in: path
required: true
schema:
type: string
responses:
'404':
description: Points Not Found
operationId: getApiV2ByCustomerIdProjectsByProjectIdComponentsByComponentIdSiteViewPointsByPointIdPointHistory
x-operation-id-source: derived
/api/v2/{customer_id}/projects/{project_id}/components/{component_id}/site_view/attachments:
get:
summary: Retrieve all runs attachments
tags:
- Site View
security:
- apiKey: []
parameters:
- name: customer_id
in: path
required: true
schema:
type: string
- name: project_id
in: path
required: true
schema:
type: string
- name: component_id
in: path
required: true
schema:
type: string
- name: run_id
in: query
schema:
type: string
- name: trajectory_id
in: query
schema:
type: string
- name: point_id
in: query
schema:
type: string
- name: page
in: query
schema:
type: integer
- name: pagesize
in: query
description: Maximum is 500, default is 100
schema:
type: integer
- name: sort
in: query
description: 'Example: `name` is name ascending `-name` is name decending'
schema:
type: string
responses:
'404':
description: Runs Not Found
operationId: getApiV2ByCustomerIdProjectsByProjectIdComponentsByComponentIdSiteViewAttachments
x-operation-id-source: derived
post:
summary: Create Run attachments
tags:
- Site View
security:
- apiKey: []
parameters:
- name: customer_id
in: path
required: true
schema:
type: string
- name: project_id
in: path
required: true
schema:
type: string
- name: component_id
in: path
required: true
schema:
type: string
x-websocket-response:
description: Broadcast when attachable_type is Ticket. Sends the generated 360° thumbnail image URL.
channel: customer_{customerId}
message_type: ticket_360_thumbnail
payload:
type: object
properties:
ticket_image_360:
type: string
description: Presigned URL of the generated 360° thumbnail (small size)
ticket_uuid:
type: string
description: UUID of the ticket associated with the attachment
example:
ticket_image_360: https://s3.eu-central-1.amazonaws.com/bucket/ticket_360_thumb.jpg?X-Amz-Signature=...
ticket_uuid: a1b2c3d4-e5f6-7890-abcd-ef1234567890
responses:
'404':
description: Component Not found
requestBody:
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
attributes:
type: object
properties:
run_id:
type: string
trajectory_id:
type: string
point_id:
type: string
attachable_type:
type: string
attachable_id:
type: string
position_2d:
type: object
example:
plan_x: 0.1
plan_y: 0.2
position_3d:
type: object
example:
yaw: 0.1
pitch: 0.2
angle_2d:
type: number
metadata:
type: object
required:
- run_id
- trajectory_id
- point_id
- attachable_type
- attachable_id
- position_3d
- angle_2d
operationId: postApiV2ByCustomerIdProjectsByProjectIdComponentsByComponentIdSiteViewAttachments
x-operation-id-source: derived
/api/v2/{customer_id}/projects/{project_id}/components/{component_id}/site_view/attachments/{id}:
get:
summary: Retrieve Runs Attachments
tags:
- Site View
security:
- apiKey: []
parameters:
- name: customer_id
in: path
required: true
schema:
type: string
- name: project_id
in: path
required: true
schema:
type: string
- name: component_id
in: path
required: true
schema:
type: string
- name: id
in: path
required: true
schema:
type: string
responses:
'404':
description: Run Not Found
operationId: getApiV2ByCustomerIdProjectsByProjectIdComponentsByComponentIdSiteViewAttachmentsById
x-operation-id-source: derived
put:
summary: Updates specific run attachment
tags:
- Site View
description: This API is used for updating a specific run attachment based on its id.
security:
- apiKey: []
parameters:
- name: customer_id
in: path
required: true
schema:
type: string
- name: project_id
in: path
required: true
schema:
type: string
- name: component_id
in: path
required: true
schema:
type: string
- name: id
in: path
required: true
schema:
type: string
x-websocket-response:
description: Broadcast when attachable_type is Ticket and position_3d is updated. Sends the regenerated 360° thumbnail image URL.
channel: customer_{customerId}
message_type: ticket_360_thumbnail
payload:
type: object
properties:
ticket_image_360:
type: string
description: Presigned URL of the regenerated 360° thumbnail (small size)
ticket_uuid:
type: string
description: UUID of the ticket associated with the attachment
example:
ticket_image_360: https://s3.eu-central-1.amazonaws.com/bucket/ticket_360_thumb.jpg?X-Amz-Signature=...
ticket_uuid: a1b2c3d4-e5f6-7890-abcd-ef1234567890
responses:
'404':
description: Run attachment Not Found
requestBody:
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
attributes:
type: object
properties:
position_3d:
type: object
angle_2d:
type: number
operationId: putApiV2ByCustomerIdProjectsByProjectIdComponentsByComponentIdSiteViewAttachmentsById
x-operation-id-source: derived
delete:
summary: Deletes specific run attachment
tags:
- Site View
description: This API is used for deleting a specific run attachments based on its id.
security:
- apiKey: []
parameters:
- name: customer_id
in: path
required: true
schema:
type: string
- name: project_id
in: path
required: true
schema:
type: string
- name: component_id
in: path
required: true
schema:
type: string
- name: id
in: path
required: true
schema:
type: string
responses:
'404':
description: Run Attachments Not Found
operationId: deleteApiV2ByCustomerIdProjectsByProjectIdComponentsByComponentIdSiteViewAttachmentsById
x-operation-id-source: derived
/api/v2/{customer_id}/projects/{project_id}/components/{component_id}/site_view/attachments/highlight_points:
get:
summary: Retrieve all point ids that have attachments
tags:
- Site View
security:
- apiKey: []
parameters:
- name: customer_id
in: path
required: true
schema:
type: string
- name: project_id
in: path
required: true
schema:
type: string
- name: component_id
in: path
required: true
schema:
type: string
- name: run_id
in: query
schema:
type: string
responses:
'404':
description: Point IDs Not Found
operationId: getApiV2ByCustomerIdProjectsByProjectIdComponentsByComponentIdSiteViewAttachmentsHighlightPoints
x-operation-id-source: derived
/api/v2/{customer_id}/site_view_licenses_info:
get:
summary: Retrieve Site View licenses info
tags:
- Site View
security:
- apiKey: []
parameters:
- name: customer_id
in: path
required: true
schema:
type: string
responses:
'404':
description: Licenses info Not Found
operationId: getApiV2ByCustomerIdSiteViewLicensesInfo
x-operation-id-source: derived
/api/v2/{customer_id}/site_view_access_request:
post:
summary: request site view access
tags:
- Site View
security:
- apiKey: []
parameters:
- name: customer_id
in: path
required: true
schema:
type: string
responses:
'404':
description: site view access request Not found
requestBody:
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
attributes:
type: object
properties:
status:
type: integer
operationId: postApiV2ByCustomerIdSiteViewAccessRequest
x-operation-id-source: derived
/api/v2/{customer_id}/get_site_view_access_status:
get:
summary: Retrieve Site View Access Status
tags:
- Site View
security:
- apiKey: []
parameters:
- name: customer_id
in: path
required: true
schema:
type: string
responses:
'404':
description: Access Status Not Found
operationId: getApiV2ByCustomerIdGetSiteViewAccessStatus
x-operation-id-source: derived
components:
securitySchemes:
apiKey:
type: apiKey
name: X-PlanRadar-API-Key
in: header
externalDocs:
description: Find out more about our development portal
url: https://www.planradar.com/knowledge-base-overview/