FAQ
- Does DJI TerraAPI support private deployment?
- Are 2D and 3D reconstructions using DJI TerraAPI performed on user local servers or DJI cloud servers?
- What are the differences in time and results between DJI TerraAPI reconstruction and local computer reconstruction?
- Does DJI TerraAPI include all features of DJI Terra?
- How difficult is it to develop DJI TerraAPI, and how long is the development cycle expected to take?
- What programming languages can be used to develop with DJI TerraAPI?
- How to get technical support for DJI TerraAPI?
- What is the pricing policy for DJI TerraAPI?
- What happens if my resource files are too large or too small? Are there any restrictions?
- What to do when encountering interface call errors?
- What is AK/SK? How to get AK/SK?
- Request not successful?
- Encountering the error HMAC signature does not match when calling interface?
- Where is the BoundingBox property?
- Should one use wide-angle photos or zoomed-in photos for the puzzle?
- Can not download the obtain file URL?
Does DJI TerraAPI support private deployment?
DJI TerraAPI relies on cloud computing to complete 2D and 3D reconstruction jobs. Users need upload images or point cloud data to the internet for processing, which is different from traditional private deployment.
Are 2D and 3D reconstructions using DJI TerraAPI performed on user local servers or DJI cloud servers?
2D and 3D reconstructions using DJI TerraAPI are carried out on DJI cloud servers using the DJI Terra reconstruction engine.
What are the differences in time and results between DJI TerraAPI reconstruction and local computer reconstruction?
Excluding the time for data upload and results file download, the cloud reconstruction by DJI TerraAPI is similar in speed to local computer reconstruction with the DJI Terra offline version.
There may be slight differences in the reconstruction of the same data by DJI TerraAPI due to variations in the reconstruction engine algorithm versions and different operating environments.
Does DJI TerraAPI include all features of DJI Terra?
Currently, DJI TerraAPI does not include real-time 2D/3D reconstruction, control points, agricultural applications, or cluster computing. However, DJI TerraAPI will continue to be updated and features will be added based on user needs.
How difficult is it to develop DJI TerraAPI, and how long is the development cycle expected to take?
Integrating and implementing 2D and 3D reconstruction with DJI TerraAPI typically takes 2-3 days. There may be further development time depending on additional function requirements.
What programming languages can be used to develop with DJI TerraAPI?
Developers can use popular programming languages such as Java, Python, Go, C, C++, PHP, Android, iOS, and .NET for development.
How to get technical support for DJI TerraAPI?
Get technical support by:
- Emailing dev@dji.com
- Visiting the DJI Developer Forum
What is the pricing policy for DJI TerraAPI?
DJI TerraAPI is free during the one-year public beta. The pricing policy post-beta will be announced through channels such as the DJI official website.
What happens if my resource files are too large or too small? Are there any restrictions?
To ensure the success of the reconstruction task, the following resource requirements should be followed:
- 2D/3D: A minimum of ten images is required, with an overlap rate of over 70%, and a maximum of 20,000 images per upload for 3D jobs, 4,000 for 2D jobs.
- LiDAR: More than 2 minutes of data captured from L1 or L2 camera, with the data folder containing files such as IMU, RTK, RTB, RTL, RTS, LDR, CLC, CLI, etc. If the results require color information, images taken during collection must also be included. The total size should not exceed 48 GB.
What to do when encountering interface call errors?
When encountering errors during interface calls, please first refer to the Error Code section. If the issue cannot be resolved, please collect the following information and submit a request to technical support:
- Complete request body
- Complete request headers
- Response status received
- Response information received
What is AK/SK? How to get AK/SK?
The AK/SK authentication is a method of digitally signing requests using AK/SK. When sending a request, this signature is added to message headers for authentication purposes.
- AK (App Key, Access Key ID): This is a unique identifier associated with the private access key. It is used together with the private access key to encrypt and sign the request information.
- SK (Secret Key, Private Access Key): This is a key used for encrypting the signature. It is used with the access key ID to authenticate the requester's identity and ensure the integrity of the request content during transmission.
AK/SK information needs to be obtained after activating the DJI TerraAPI on the developer's website.
Figure. DJI TerraAPI AK/SK Information

Request not successful?
- Check your URL:
- Chinese Mainland: https://openapi-cn.dji.com
- Others: https://openapi-us.dji.com
- Check your signature
HMAC signature does not match
when calling interface?
Encountering the error This error comes from the signing authentication fail. The developer needs to adhere to the documentation specifications for signing processing. The signing logic can be found in the API documentation: Gateway Signature Specification
Where is the BoundingBox property?
The BoundingBox property of tif is in the .tfw file
which is in the same file directory of tig
and map_report.json
under the report
file directory.
Should one use wide-angle photos or zoomed-in photos for the puzzle?
Use wide-angle photos.
Can not download the obtain file URL?
- If you directly print to the shell, it will be automatically encoded by Unicode-escape.
/terra-rescon-be/v2/files/$uuid
- If you don't print and download directly or decode:
# Get the url and download directly
curl -X ${HTTP_METHOD} ${url} \
-H "Date: ${x_date}" \
-H "Digest: SHA-256=${digest}" \
-H "Authorization: hmac username=\"${DJI_APP_KEY}\", algorithm=\"hmac-sha256\", headers=\"date @request-target digest\", signature=\"${request_signature}\"" \
-H 'Content-Type: application/json;charset=UTF-8' | jq -r '.data.url' | xargs wget -O a.png
# Decode and then output
curl -X ${HTTP_METHOD} ${url} \
-H "Date: ${x_date}" \
-H "Digest: SHA-256=${digest}" \
-H "Authorization: hmac username=\"${DJI_APP_KEY}\", algorithm=\"hmac-sha256\", headers=\"date @request-target digest\", signature=\"${request_signature}\"" \
-H 'Content-Type: application/json;charset=UTF-8' | jq -r '.data.url' | python -c 'import sys; print(sys.stdin.buffer.read().decode("unicode-escape"))'