Automation API
Call DAP directly over HTTP.
Authenticate with an API key, upload one binary per request, poll the durable job record, and fetch messages or structured findings.
5
API endpoints
X-API-Key
Authentication
100 MB
Default max upload
1 file
Per request
Auth
Base URL and API-key model.
All routes except /health require a raw API key in the X-API-Key header.
Use the API URL provided with access.
Use the automation API base URL provided with your access details.
Base URLs
https://<dap-automation-api-base-url>Send the raw API key on every request.
The service stores only a hash, so the raw key value is the secret you need to preserve. Requests without a valid key are rejected before the upload or poll flow starts.
Authentication header
X-API-Key: <raw-api-key>Upload
Create a job with one multipart request.
POST /v1/uploads accepts one file plus analysis options. The response returns a job id and stable follow-up URLs for status, messages, and findings.
POST /v1/uploads
Use multipart/form-data and send exactly one file payload. Folder workflows should call the endpoint once per file.
Upload request
curl -X POST "$DAP_AUTOMATION_API_URL/v1/uploads" \
-H "X-API-Key: $DAP_API_KEY" \
-F "file=@/path/to/sample.exe" \
-F "analysisLevel=2" \
-F "graphAnalysis=true" \
-F "notifyEnabled=false" \
-F "threadTitle=sample.exe"Successful response
{
"jobId": "1aea189c70d54608a6805d98e3ea75f0",
"threadId": "sample.exe-e88eb7258227",
"threadTitle": "sample.exe",
"resultStatus": "queued",
"statusUrl": "https://<dap-automation-api-base-url>/v1/jobs/1aea189c70d54608a6805d98e3ea75f0",
"messagesUrl": "https://<dap-automation-api-base-url>/v1/jobs/1aea189c70d54608a6805d98e3ea75f0/messages",
"findingsUrl": "https://<dap-automation-api-base-url>/v1/jobs/1aea189c70d54608a6805d98e3ea75f0/findings"
}Accepted upload parameters
analysisLevel is required. The rest are optional toggles and metadata that shape the created job and thread.
- file
- Required. The binary payload to analyze.
- analysisLevel
- Required. Integer from 0 through 3.
- graphAnalysis
- Optional. true or false.
- cryptoAnalysis
- Optional. true or false.
- notifyEnabled
- Optional. Controls completion email behavior for the created thread.
- threadTitle
- Optional. Human-readable display title for the created thread.
Endpoints
Poll status, read messages, fetch findings.
The upload response gives you a job id. From there, the remaining endpoints let you watch progress, inspect thread output, and retrieve the structured findings payload.
GET
/health
Unauthenticated liveness check for the service.
POST
/v1/uploads
Create one DAP analysis job from one uploaded file.
GET
/v1/jobs/{jobId}
Poll durable job state including percent, phase, and artifact metadata.
GET
/v1/jobs/{jobId}/messages
Read the durable thread messages associated with the job.
GET
/v1/jobs/{jobId}/findings
Fetch the structured findings payload and optionally merge code-side detail.
Poll the job record.
Returns job metadata, lifecycle timestamps, progress fields, and artifact details once analysis is complete.
Status request
curl -H "X-API-Key: $DAP_API_KEY" \
"$DAP_AUTOMATION_API_URL/v1/jobs/$JOB_ID"Example status response
{
"jobId": "1aea189c70d54608a6805d98e3ea75f0",
"status": "complete",
"percent": 100,
"lastPhase": "complete",
"createdAt": "2026-03-13T12:00:00+00:00",
"completedAt": "2026-03-13T12:04:47+00:00",
"artifactUrl": "https://presigned.example.com/sample.exe-analysis.zip",
"artifactBundleName": "sample.exe-analysis.zip",
"analysisMode": "native"
}Fetch structured findings.
When the job reaches complete, call the findings endpoint. Set includeCode=true to merge the code sidecar into the response.
Findings request
curl -H "X-API-Key: $DAP_API_KEY" \
"$DAP_AUTOMATION_API_URL/v1/jobs/$JOB_ID/findings?includeCode=false"Retryable pending response
{
"error": "Findings are not available yet. Retry shortly.",
"retryable": true
}Operational notes
What to expect from the direct API.
The HTTP surface is intentionally narrow. It is built for durable upload, polling, and findings retrieval, not for exposing the private analysis runtime directly.
Uploads are single-file
Multi-file or folder workflows should iterate the upload endpoint once per file.
Findings can lag terminal status
A completed job can briefly return 409 with retryable=true while the findings payload is still being persisted.
Use one API key
Send a valid DAP automation API key on each request.
Errors are explicit
Expect 401 for missing or invalid keys, 403 for disabled keys, 400 for bad inputs, 413 for oversized uploads, and 502 for upstream routing failures.
Need an API key for the automation API?
Open DAP, then use your API key with the automation API URL provided with access.