Dagu REST API
Use this skill when integrating Dagu with external systems, automating workflow operations, or programmatically managing workflows through the API.
Core API Capabilities
The Dagu REST API provides endpoints for:
- Workflow Operations - Start, stop, retry workflows
- Status Queries - Get workflow and execution status
- DAG Management - List and inspect workflow definitions
- Execution History - Query past executions
- Log Retrieval - Fetch execution logs
Base URL
Default API base URL: http://localhost:8080/api/v1
Configure in Dagu settings if using a different host/port.
Quick Start Operations
Start a Workflow
POST /dags/{dagName}/start
Basic example:
curl -X POST http://localhost:8080/api/v1/dags/my_workflow/start
For parameter passing and advanced options, see references/api-endpoints.md.
Get Workflow Status
GET /dags/{dagName}/status
Returns current status, running steps, and execution details.
Stop a Workflow
POST /dags/{dagName}/stop
Stops currently running execution.
When to Consult References
Read references/api-endpoints.md for the complete endpoint reference: workflow operations (start/stop/retry/restart), status and history queries, log retrieval, DAG management, response schemas, HTTP status codes, and the error response format.
Common Use Cases
CI/CD Integration
Trigger Dagu workflows from your CI/CD pipeline:
# In GitHub Actions, GitLab CI, etc.
curl -X POST http://dagu-server:8080/api/v1/dags/deploy_production/start \
-H "Content-Type: application/json" \
-d '{"params": "VERSION=1.2.3 ENVIRONMENT=production"}'
Monitoring and Alerting
Query workflow status for external monitoring:
# Check if workflow is running
curl http://localhost:8080/api/v1/dags/critical_job/status
Build custom alerts based on status responses. See references/api-endpoints.md for response format details.
Dynamic Scheduling
Trigger workflows based on external events:
import requests
def trigger_workflow(dag_name, params=None):
url = f"http://localhost:8080/api/v1/dags/{dag_name}/start"
data = {"params": params} if params else {}
response = requests.post(url, json=data)
return response.json()
Response Formats
All API responses are JSON. Common response structure:
{
"status": "success",
"data": { ... }
}
Error responses:
{
"status": "error",
"message": "Error description"
}
For complete response schemas, consult references/api-endpoints.md.
Key Principles
- RESTful design: Standard HTTP methods (GET, POST, DELETE)
- JSON responses: All responses in JSON format
- Idempotent operations: Safe to retry most operations
- Error codes: Standard HTTP status codes
- Stateless: Each request is independent
Pro Tips
- Use the API for automation, use Web UI for manual operations
- Implement retry logic for network failures
- Cache DAG lists if querying frequently
- Use webhooks for event-driven workflows when possible
- Monitor API response times for performance issues
- Validate workflow names before calling API to avoid errors