The core workflow for using the Bulk Data Graph API includes Bulk Analysis API endpoints as well as the Bulk Data Graph endpoint. For additional information about bulk operations, including details about endpoints not listed here, see Bulk Analysis API.
The workflow is:
- Generate a presigned URL for uploading the input
file:
- Call endpoint: Generate Upload URL
The file name is provided in the request body. The URL is valid for 10 minutes.POST hostname/v1/li/files/upload-url - Request example:
{ "fileName": "testFile" } - Response example:
{ "fileId": "ebb7aa05-ce62-4b98-b45d-0b9edff4cadf", "url": "https://s3.amazonaws.com/.../testFile", "message": "This upload URL will be valid for the next 10 mins." }
- Call endpoint: Generate Upload URL
- Upload the input file:
- To upload the input file, use the returned presigned URL in a
PUTrequest. - For information about the file's format, see Bulk Data Graph Request.
- To upload the input file, use the returned presigned URL in a
- (Optional) Retrieve a list of files uploaded by the specified user. The response includes the fileName and fileId of each uploaded file.
- Call endpoint: Retrieve Input Files
GET hostname/v1/li/files - Response example:
{ "results": [ { "fileId": "2d6f5ef1-ccbb-41c9-984c-9d372ba98cc8", "fileName": "Buildings_USA" }, { "fileId": "44c5cd47-d157-4c10-93de-28eb760ae9f1", "fileName": "Parcels_USA" } ] }
- Call endpoint: Retrieve Input Files
- Submit the bulk job:
- Call endpoint: Submit a Bulk Data Graph job
POST hostname/v1/data-graph/bulk-operations - Request body example:
{ "operation": "DATA_GRAPH_GET_BY_ID", "payload":{ "fileId":"ebb7aa05-ce62-4b98-b45d-0b9edff4cadf", "delimiter":",", "queryType":"PRECISELY_ID", "datasets":{ "parcels":["parcelID","fips","parcelArea"], "buildings":["buildingID","longitude","latitude"], "addresses":["preciselyID","addressNumber"], "WildFireRisk":["preciselyID"] } } } - Response example:
{ "statusUrl": "hostname/v1/li/workflows/status/{workflowId}"}
- Call endpoint: Submit a Bulk Data Graph job
- Monitor the job status and retrieve the URLs for
downloading each output file.
- Call endpoint: Check Workflow Status
The endpoint returns the current status of the job. Once the job has completed successfully, the response includes the URLs of the downloadable result files.GET hostname/v1/li/workflows/status/{workflowId} - Response example:
{ "status": "COMPLETED", "downloadUrls": [ { "datasetName": "addresses", "downloadUrl": "https://s3.amazonaws.com/.../testFile......." }, { "datasetName": "parcels", "downloadUrl": "https://s3.amazonaws.com/.../testFile..." }, { "datasetName": "buildings", "downloadUrl": "https://s3.amazonaws.com/.../testFile..." }, { "datasetName": "WildFireRisk", "downloadUrl": "https://s3.amazonaws.com/.../testFile..." } ] }
- Call endpoint: Check Workflow Status
- To retrieve the job's history:
- Call endpoint: View Workflow History
GET hostname/v1/li/workflows/history -
Response example:
{ "workflows": [ { "workflowId": "3e5a0973-d673-4cd3-ac2d-31840deeddbb", "status": "COMPLETED", "startTime": "2025-07-22T14:01:52.140582386Z", "closeTime": "2025-07-22T14:03:39.796607481Z" }, { "workflowId": "83f91950-15ca-4ed3-9da9-f43a30e91b26", "status": "FAILED", "startTime": "2025-07-22T11:33:49.061987993Z", "closeTime": "2025-07-22T11:37:29.514942666Z" } ] }
- Call endpoint: View Workflow History
- (Optional) To remove temporary files from
storage after processing completion:
-
Call endpoint: Delete File
DELETE hostname/v1/li/files/{fileId} - Response example:
{ "status": "SUCCESS", "message": "File Deleted Successfully" }
-