Skip to main content
The Detail REST API gives you programmatic access to bug findings, scan history, repository info, and custom rules. Use it to automate triage workflows, sync findings to internal tools, or build custom dashboards on top of Detail’s analysis engine.

Base URL

All API requests go to:
https://api.detail.dev
Every endpoint is prefixed with /public/v1/. A full request URL looks like:
https://api.detail.dev/public/v1/bugs

Authentication

The API uses Bearer token authentication. Pass your API key in the Authorization header on every request. See Authentication for details on obtaining and using keys.
Authorization: Bearer dtl_live_YOUR_KEY

Request and response format

All request bodies and responses use JSON. Set Content-Type: application/json when sending a request body.

Pagination

Endpoints that return lists accept limit and offset query parameters and include a total field in the response.
ParameterTypeDefaultMaximumDescription
limitinteger50100Number of results to return
offsetinteger0Number of results to skip
The response total field tells you how many records exist in total, so you can calculate subsequent offsets.
# Fetch the second page of 25 results
curl "https://api.detail.dev/public/v1/bugs?repo_id=repo_abc123&status=pending&limit=25&offset=25" \
  -H "Authorization: Bearer dtl_live_YOUR_KEY"

Available endpoints

MethodPathDescription
GET/public/v1/userAuthenticated user info
GET/public/v1/bugsList bugs for a repository
GET/public/v1/bugs/{bug_id}Get a single bug
POST/public/v1/bugs/{bug_id}/reviewResolve or dismiss a bug
GET/public/v1/scansList scans for a repository
GET/public/v1/reposList connected repositories
POST/public/v1/rulesStart an async rule creation job
GET/public/v1/rulesList completed rules
GET/public/v1/rules/{rule_id}Get a single rule with file contents
GET/public/v1/rules/requestsList rule creation requests
GET/public/v1/rules/requests/{rcr_id}Get a rule creation request status

Error codes

All errors return an ApiError JSON object with type, message, and statusCode fields.
{
  "type": "NOT_FOUND",
  "message": "Bug not found",
  "statusCode": 404
}
StatusTypeMeaning
400INVALID_REQUEST_BODY / INVALID_QUERY_PARAMSMalformed request body or query parameters
401DETAIL_AUTHENTICATION_ERRORMissing or invalid API key
403AUTHORIZATION_ERRORValid key but insufficient permissions
404NOT_FOUNDThe requested resource does not exist
400UNKNOWN_WORKFLOW_REQUESTThe referenced workflow request ID does not exist
500INTERNAL_ERRORUnexpected server error