How to Upload Pano, Video, or Photo Plans using the Public API
This guide details the process for creating a Preprocessed Pano, Progress Video, or Progress Photo Plan using the DroneDeploy Public API.
To follow this guide, ensure you have completed the getting started guide and have the following prerequisites:
An API key
A Project ID (
folder_id)A Level ID (
group_id) (Optional)
1. Create a Plan
A Plan object acts as a container for your flight or walk data and is required before an Image Transfer can be created.
Start by creating a Plan object using the Plans API.
The “folder ID” is the project ID that the customer can get from the project URL. e.g. “6296d9752b06e59b2ec8b511” from https://www.dronedeploy.com/app2/sites/6296d9752b06e59b2ec8b511/maps/653d62a11c65c82253ff0602
POST /v2/plans
curl -H "Content-Type: application/json" -X POST \
"https://public-api.dronedeploy.com/v2/plans?api_key=YOUR_API_KEY" \
-d @body.json
Example Request
{
"name": "Preprocessed pano example",
"folder_id": "6296d9752b06e59b2ec8b511",
"record_type": "preprocessed_pano_plan",
"location": {"lat": 35.288226, "lng": -44.758298},
"workflow": {
"job_type": "preprocessed_pano"
}
}
Or add an optional `group_ids` field if you want to upload to a particular level:
{
"name": "Preprocessed pano example",
"folder_id": "6296d9752b06e59b2ec8b511",
"group_ids": ["657a26a5969e93d9234ca34a"],
"record_type": "preprocessed_pano_plan",
"location": {"lat": 35.288226, "lng": -44.758298},
"workflow": {
"job_type": "preprocessed_pano"
}
}
Request body fields
| Key | Example value | Description |
| folder_id | 6296d9752b06e59b2ec8b511 | ID of the Project where the plan will be uploaded |
| group_ids | [“657a26a5969e93d9234ca34a”] | ID of the Level where the plan will be uploaded (optional). If none is given, the plan will be on the exterior. |
| record_type | preprocessed_pano progress_video_plan progress_photos_plan |
The value should be `preprocessed_pano_plan` for a pano plan, `progress_video_plan` for a video plan or ‘progress_photos_plan’ for a photo plan. |
| location | {"lat": 35.288226, "lng": -44.758298} | Latitude & longitude of the plan. Pano and video media will be displayed in respective locations on a map. Unless a photo plan image has correct EXIF latitude and longitude tags, images will be displayed in the centre of the plan. |
| workflow.job_type | preprocessed_pano progress_video 2d |
The value should be `preprocessed_pano` for a pano plan or `progress_video` for a video plan and `2d` for a photo plan. |
For more information on the Plans API see docs here.
2. Create an Image Transfer
The Image Transfer object is how API clients specify which source imagery should be used for a given Plan. Once an Image Transfer object is created, the indicated URL is fetched, and the photogrammetry process begins.
We support JPG images for preprocessed panoramas and MP4 files for Progress videos.
File location should be a publicly accessible url, i.e. a Amazon S3 / Google GCS pre-signed url.
For more information on the ImageTransfer API see docs here.
POST: /v2/image_transfer
curl -H "Content-Type: application/json" -X POST \
"https://public-api.dronedeploy.com/v2/image_transfer?api_key=YOUR_API_KEY" \
-d @body.json
{
"plan_id": "6622b808ad6b365d62563544",
"transport": { "type": "https" },
"inputs": [
{
"location": "https://storage.googleapis.com/...",
"type": "preprocessed_pano"
}
]
}
Request body fields
| Key | Example value | Description |
| plan_id | 6622b808ad6b365d62563544 | ID of the Plan created by the first API call |
| inputs[0].location | https://storage.googleapis.com/… | a URL pointing to a pano or a video file, depending on the plan type. |
| inputs[0].type |
preprocessed_pano progress_video progress_photo |
The value should correspond to the type of the plan: `preprocessed_pano` for a pano plan, `progress_video` for a video plan, `progress_photo` for a progress photo plan. |
v2.2