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-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 Approval Requests V2 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.<br />\n <h5>Rate Limits</h5>30 requests per minute per account, aggregated across all tokens.<br />\n If the threshold is exceeded, a 5-minute cooldown is applied to the account, aggregated across all tokens.<br />\n During the cooldown period, further requests may be rejected until the cooldown ends.<br />\n In rare cases, an endpoint may have a different rate limit than the default. When that happens, the differing limit will be explicitly stated in the API documentation for that endpoint.<br />\n <h5>Access Key</h5>In order to be able to access any API you have to create an access token.Therefore you have to follow these steps:-\n <ul>\n <li>Go to your profile page and click on Personal Access Tokens on the left side bar</li><li>Click on the 'Create Access Token' top right button in order to create a new access token.</li><li>Copy the created token and paste it into the field that pops up when you click on the 'Authorize' button </li><li>Note: you can copy the token only once.</li><li>Now you can easily access any API</li>\n </ul>\n <h5>V2 APIs</h5>We are currently working on upgrading all our APIs to v2, and we recommend that you use v2 APIs if it is available.\n <p>V2 APIs are faster, robust and more flexible than v1 APIs</p>"
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
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
/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
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
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
/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
/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
/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
/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
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
/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
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
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
/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
/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
/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
/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
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/