DroneDeploy

DroneDeploy public API gives you access to all your plans and exports. The API can be used to directly integrate the data collected and processed with DroneDeploy into your own applications and services.

First you will need an API Key

API Details

List all plans

In order to list all plans available in your account, send a GET request to /v2/plans.
This will fetch the first page of 50 plans. To request more, see the Pagination section below.

curl "https://public-api.dronedeploy.com/v2/plans?api_key=f78b0a0d66274fd5a8684c49deb9d83d"
[  
  {
    "log": "EXAMPLE_000002",
    "id": "5605c0e5752afc005a000004",
    "location": {
      "lat": 35.92596388888889,
      "lng": -96.74810972222222
    },
    "image_count": 66,
    "date_creation": 1377012456330,
    "latest_started_map": {
      "user_status": "Complete"
    },
    "name": "Construction Example"
  },
  {
    "log": "EXAMPLE_000001",
    "id": "56048e63752afc0058000001",
    "location": {
      "lat": 48.60367083333334,
      "lng": -97.21722638888889
    },
    "image_count": 301,
    "date_creation": 1372605078006,
    "latest_started_map": {
      "user_status": "Complete"
    },
    "name": "Agriculture Example"
  }
]
Content-Type: application/json
Content-Length: 793
Connection: keep-alive
Date: Fri, 14 Oct 2016 04:15:03 GMT
x-amzn-RequestId: c78a0f54-91c4-11e6-83fa-4b04143ff153
X-Cache: Miss from cloudfront
Via: 1.1 ebc28fb0ad14691ee5d6c1a49f41b878.cloudfront.net (CloudFront)
X-Amz-Cf-Id: fkzjbF0UPmUOh9iQMT0PHY6pnBji5AJV1Qh9ol45m9fTsXMC4DAeoQ==

Get all data for a specific plan

To get all data for a specific plan in your account, send a GET request to /v2/plans/<id>, where <id> is the plan id returned from /v2/plans.

curl "https://public-api.dronedeploy.com/v2/plans/5605c0e5752afc005a000004?api_key=f78b0a0d66274fd5a8684c49deb9d83d"
{
  "log": "EXAMPLE_000002",
  "id": "5605c0e5752afc005a000004",
  "location": {
    "lat": 35.92596388888889,
    "lng": -96.74810972222222
  },
  "image_count": 66,
  "date_creation": 1377012456330,
  "latest_started_map": {
    "user_status": "Complete"
  },
  "name": "Construction Example"
}
Date: Fri, 14 Oct 2016 04:17:36 GMT
Content-Type: application/json
Content-Length: 260
Connection: keep-alive
x-amzn-RequestId: 2290d306-91c5-11e6-8b95-15fd70d0da6c
X-Cache: Miss from cloudfront
Via: 1.1 8b5947aba7280333032d4dcdd80b3489.cloudfront.net (CloudFront)
X-Amz-Cf-Id: v7w995uifC15ZuSfGx9L1861FiReDSfAXDVTlTrAc25Wx9KUCfHWHw==

Get all exports for a specific plan

To get all exports for a specific plan in your account, send a GET request to /v2/exports/?plan_id=<id>, where <id> is the plan id returned from /v2/plans.

curl "https://public-api.dronedeploy.com/v2/exports?plan_id=5605c0e5752afc005a000004&api_key=f78b0a0d66274fd5a8684c49deb9d83d"

List all exports

To list all exports available in your account, send a GET request to /v2/exports.
All requests which return a list of results are paged, to request more, see the Pagination section.

Parameters

Parameter
Description

plan_id (optional)

You can optionally filter exports by plan_id to see all the exports for a particular plan.

curl "https://public-api.dronedeploy.com/v2/exports?plan_id=587c3d9ede30475fde10ec09&api_key=f78b0a0d66274fd5a8684c49deb9d83d"
[
  {
    "username": "vlad@dronedeploy.com",
    "status": "complete",
    "plan_id": "587c3d9ede30475fde10ec09",
    "parameters": {
      "layer": "Elevation Toolbox",
      "map_id": "587c3f62fd955a00015b7bdf",
      "projection": "4326",
      "file_format": "demtiff",
      "url": "https://tiles_prod.dronedeploy.com/unsafe/smart/filters:dem(45,315,{setting_min},{setting_max},{setting_cmap},{setting_light_intensity}):format(png):crop('{setting_crop_polygon}')/https%3A%2F%2Fs3.amazonaws.com/drone.deploy.tiles/{url}/{z}/{x}/{y}.tiff?jwt_token=eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJlbnZpcm9ubWVudCI6InByb2QiLCJ1c2VybmFtZSI6InZsYWRAZHJvbmVkZXBsb3kuY29tIiwiZXhwIjoxNDg3NTI0OTI1fQ.BQur1I_jRVzspIzWWOTgGIwdCuztlGDe3gG_eYG62oPFM-cEQi56jSXKIx5p5cbjk2f7gMBM4QX9GA5nJgF70w",
      "merge": true,
      "env": "prod",
      "resolution": "5",
      "email": [
        "vlad@dronedeploy.com"
      ],
      "view": "588254252a17060001508ede"
    },
    "download_size": 801445.0,
    "download_path": "https://s3.amazonaws.com/drone-deploy-exports/1484537246_WATYAO_CE1OPENPIPELINE/ThaioilMap_ElevationToolbox_FriJan20181720.zip?AWSAccessKeyId=AKIAISEWUBLV6Q6M3S3A&Expires=1487528253&Signature=lFmBcmWdNsh3HTfwV0SMEwaETLg%3D",
    "date_creation": 1484936229138,
    "id": "588254252a17060001508edf"
  },
  {
    "username": "vlad@dronedeploy.com",
    "status": "complete",
    "plan_id": "587c3d9ede30475fde10ec09",
    "parameters": {
      "layer": "Orthomosaic",
      "map_id": "587f5631cad8bf000164e122",
      "projection": "4326",
      "file_format": "geotiff",
      "url": "https://tiles_prod.dronedeploy.com/unsafe/smart/filters:crop('{setting_crop_polygon}')/https%3A%2F%2Fs3.amazonaws.com/drone.deploy.tiles/{url}/{z}/{x}/{y}.png?jwt_token=eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJlbnZpcm9ubWVudCI6InByb2QiLCJ1c2VybmFtZSI6InZsYWRAZHJvbmVkZXBsb3kuY29tIiwiZXhwIjoxNDg3NTI0OTI1fQ.BQur1I_jRVzspIzWWOTgGIwdCuztlGDe3gG_eYG62oPFM-cEQi56jSXKIx5p5cbjk2f7gMBM4QX9GA5nJgF70w",
      "merge": true,
      "env": "prod",
      "resolution": "5",
      "email": [
        "vlad@dronedeploy.com"
      ],
      "view": "58801fa2d2c0ce00013cadfc"
    },
    "download_size": 344315051.0,
    "download_path": "https://s3.amazonaws.com/drone-deploy-exports/1484693787_HOVERVISIOOPENPIPELINE/MooserCreek61stNtoI44_Orthomosaic_ThuJan19020847.zip?AWSAccessKeyId=AKIAISEWUBLV6Q6M3S3A&Expires=1487385701&Signature=rRzjIZWNBSQT0gyOr7sMYnIYsxg%3D",
    "date_creation": 1484791714887,
    "id": "58801fa2f26a3600010f811d"
  }
]
Content-Type: application/json
Content-Length: 818
Connection: keep-alive
Date: Fri, 14 Oct 2016 04:29:00 GMT
x-amzn-RequestId: ba9c81f1-91c6-11e6-9e00-fff02fba9893
X-Cache: Miss from cloudfront
Via: 1.1 d8b73f8fefd106d5c95f11977e132c46.cloudfront.net (CloudFront)
X-Amz-Cf-Id: cxb6emlhMoGrpR5t65yZ1OqzOMzJihy2ESY0yFd53IcsGXNLdXVXXQ==

Get all data for a specific export

To get all data for a specific export in your account, send a GET request to /v2/exports/<id>, where <id> is the export id returned from /v2/exports.

curl "https://public-api.dronedeploy.com/v2/exports/5800581ddd322731acc3d0c6?api_key=f78b0a0d66274fd5a8684c49deb9d83d"

Plugin Payments

To get details of a plugin payment, send a GET request, to /v1/plugin_payments/<payment_id>.

curl "https://public-api.dronedeploy.com/v1/plugin_payments/5817d4b9361143b45cbb072b?api_key=f78b0a0d66274fd5a8684c49deb9d83d"
{
	"user_id": "57c5fc90dd32274105595f92", 
    "description": "Paid for something", 
    "date_creation": 1234567890100, 
    "date_paid": null, 
    "amount": 1000, 
    "plugin_id": "5817d4b6361143b45cbb072a", 
    "id": "5817d4b9361143b45cbb072b"
}

Get Tile Template

To get a tile template for a given plan at a given resolution, use a GET request to /v1/tiles/<plan_id>/<layer>/<zoom>. This can be useful for displaying tiles in applications based on the Mapbox or Leaflet frameworks. For example:

curl "https://public-api.dronedeploy.com/v1/tiles/580fd790d5d264a5d8515a73/ortho/20?api_key=f78b0a0d66274fd5a8684c49deb9d83d"
{
	"tiles": [
    	"https://public-tiles.dronedeploy.com/1477433232_VLADOPENPIPELINE_ortho_meg/20/165690/402883.png", 
        "https://public-tiles.dronedeploy.com/1477433232_VLADOPENPIPELINE_ortho_meg/20/165690/402884.png", 
        "https://public-tiles.dronedeploy.com/1477433232_VLADOPENPIPELINE_ortho_meg/20/165690/402885.png", 
        ...]
}

Pagination

For our all of our APIs which return a list of results the response will be paged. The

To load the next page of results, you will need to use the Link header in the response. For example, for /v2/plans, the Link header will look somewhat like this:

Link: <https://public-api.dronedeploy.com/v2/plans/?page_start=1473784311109&api_key=f78b0a0d66274fd5a8684c49deb9d83d&limit=50>; rel="next"

Use the URL in this link header for fetching the next page. Below is an example script to page through all Plans and print their log and status:

import sys
import json

import requests

API_KEY = "<api_key goes here>"

next_url = "https://public-api.dronedeploy.com/v2/plans/?api_key={}".format(API_KEY)
plans = []

while next_url:
    resp = requests.get(next_url)
    if resp.ok:
        plans += resp.json()
        # Get the next page link from the Link header. See https://tools.ietf.org/html/rfc5988
        next_url = resp.links.get('next', {}).get('url')
    else:
        print "Request failed with {}".format(resp.status_code)
        sys.exit(1)

for p in plans:
    print "Log: {}, Status: {}".format(
            p['log'], p['latest_started_map']['user_status'])

A Sandbox to test the Public API on Apiary

Apiary provides a convenient sandbox to explore the API.

  • Go to http://docs.dronedeployapi.apiary.io/
  • In the left-hand side, you’ll see a table of contents of the API.
  • Selecting an endpoint from Reference section will bring up that endpoint in the central panel:
  • Click on GET in the central panel to test the endpoint. You’ll need to add the api_key parameter to make it work. For example, f78b0a0d66274fd5a8684c49deb9d83d:
  • Your response should look somewhat like this:
  • You can also test the same API call from command line using cUrl:
$ curl "https://public-api.dronedeploy.com/v2/plans?api_key=f78b0a0d66274fd5a8684c49deb9d83d"
 [
  {
    "log": "EXAMPLE_000002",
    "id": "5605c0e5752afc005a000004",
    "location": {
      "lat": 35.92596388888889,
      "lng": -96.74810972222222
    },
    "image_count": 66,
    "date_creation": 1377012456330,
    "latest_started_map": {
      "user_status": "Complete"
    },
    "name": "Construction Example"
  },
  {
    "log": "EXAMPLE_000001",
    "id": "56048e63752afc0058000001",
    "location": {
      "lat": 48.60367083333334,
      "lng": -97.21722638888889
    },
    "image_count": 301,
    "date_creation": 1372605078006,
    "latest_started_map": {
      "user_status": "Complete"
    },
    "name": "Agriculture Example"
  }
]

Data API