API Reference
Use these endpoints to export execution data to your own systems, poll for job completion, or monitor SLA compliance.
In This Section
- Execution Metrics — Job runs, model executions, daily stats, and per-model performance
- Examples — Polling scripts, SLA checks, and regression detection
Authentication
All API requests require two headers:
| Header | Value | Description |
|---|---|---|
Authorization |
Bearer dctl_... |
API token generated from your organization settings |
X-Organization-ID |
org-xxxxxxxx |
Your organization ID |
Creating an API Token
Generate a token from the dagctl web UI under Settings > Authentication, then select the API Tokens tab and click Create Token. The token is displayed once — copy it immediately.
Note
API tokens have full organization access. Store them securely and rotate them periodically.
Example Request
curl -s "https://api.dagctl.com/api/v1/projects/${PROJECT_ID}/runs?limit=10" \
-H "Authorization: Bearer ${DAGCTL_TOKEN}" \
-H "X-Organization-ID: ${ORG_ID}"
Base URL
All endpoints are prefixed with /api/v1.
Conventions
Pagination
Paginated endpoints accept page and limit query parameters:
| Parameter | Type | Default | Max | Description |
|---|---|---|---|---|
page |
integer | 1 | - | Page number (1-indexed) |
limit |
integer | varies | 500 | Results per page |
Paginated responses include:
Date Formats
| Format | Used For | Example |
|---|---|---|
| RFC3339 | Timestamps and updated_after filter |
2026-02-26T00:00:00Z |
| YYYY-MM-DD | Date range filters (start_date, end_date) |
2026-02-26 |
Nullable Fields and omitempty
Nullable fields are omitted from the JSON response when their value is null. They do not appear as "field": null — the key is absent entirely.
Fields affected by this behavior:
cronjob_name— absent for manually triggered runsend_time— absent for in-progress runsduration_seconds— absent for in-progress runserror_message— absent when no error occurredpod_name— absent before pod scheduling
Your polling client should handle missing keys, not null values.