Create the component SLOs first: an availability SLO (metric-based or monitor-based) and a latency SLO (metric-based using a Datadog histogram percentile metric); record the IDs of both created SLOs from the API response.
Create the composite SLO via POST to the /api/v1/slo endpoint with type set to 'composite'; supply the slo_ids array containing the IDs of the component SLOs and the composite rule, which is currently a logical AND (all component SLOs must be in-target for the composite to be in-target).
Set the target threshold and timeframe on the composite SLO; the composite SLO reports its status as the worst-performing component's error budget, i.e., the composite is breached if any component SLO is breached.
Retrieve the composite SLO status via GET /api/v1/slo/{slo_id}/history supplying from_ts and to_ts to get historical error budget data; the response includes overall_sli_value and error_budget fields.
Create a Datadog monitor using type slo alert and slo_id referencing the composite SLO ID to trigger alerts when the composite SLO's error budget falls below a threshold; configure separate thresholds for warn and critical states.
Add the composite SLO widget to a Datadog dashboard using the SLO widget type; it displays status, remaining error budget, and the contribution of each component SLO to the overall composite status.
Known gotchas
Datadog composite SLOs only support an AND relationship between components; an OR composite (pass if any component passes) is not supported natively and must be approximated by separate SLOs or custom metric computation.
Component SLOs must share the same timeframe (e.g., all 30-day rolling) to form a valid composite; mixing 7-day and 30-day component SLOs in a composite is not supported and will produce a validation error.
Deleting a component SLO that is referenced by a composite SLO will put the composite into an error state; always remove composite references before deleting component SLOs.
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp