Datadog APM Service Level Objectives API
Create, search, read, update and delete Service Level Objectives, read SLI history, and check whether an SLO can be deleted before deleting it. Ten operations on Datadog API v1.
Create, search, read, update and delete Service Level Objectives, read SLI history, and check whether an SLO can be deleted before deleting it. Ten operations on Datadog API v1.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/datadog-apm-slos-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.0.0
info:
title: Datadog APM Service Level Objectives API
description: The Service Level Objectives operations of the Datadog API, extracted verbatim from the
OpenAPI definition Datadog publishes for its own API clients.
version: '1.0'
contact:
email: support@datadoghq.com
name: Datadog Support
url: https://www.datadoghq.com/support/
x-source: https://raw.githubusercontent.com/DataDog/datadog-api-client-go/master/.generator/schemas/v1/openapi.yaml
x-extracted: '2026-09-05'
x-extraction-note: Path items, components and security schemes copied VERBATIM from the Datadog-published
OpenAPI at x-source; only the APM-relevant subset of paths is retained. No content was authored by
API Evangelist.
servers:
- url: https://{subdomain}.{site}
variables:
site:
default: datadoghq.com
description: The regional site for Datadog customers.
enum:
- datadoghq.com
- us3.datadoghq.com
- us5.datadoghq.com
- ap1.datadoghq.com
- ap2.datadoghq.com
- uk1.datadoghq.com
- datadoghq.eu
- ddog-gov.com
- us2.ddog-gov.com
- uk1.datadoghq.com
subdomain:
default: api
description: The subdomain where the API is deployed.
- url: '{protocol}://{name}'
variables:
name:
default: api.datadoghq.com
description: Full site DNS name.
protocol:
default: https
description: The protocol for accessing the API.
- url: https://{subdomain}.{site}
variables:
site:
default: datadoghq.com
description: Any Datadog deployment.
subdomain:
default: api
description: The subdomain where the API is deployed.
security:
- apiKeyAuth: []
appKeyAuth: []
tags:
- description: '[Service Level Objectives](https://docs.datadoghq.com/monitors/service_level_objectives/#configuration)
(or SLOs) are a key part of the site reliability engineering toolkit.
SLOs provide a framework for defining clear targets around application performance,
which ultimately help teams provide a consistent customer experience,
balance feature development with platform stability,
and improve communication with internal and external users.'
name: Service Level Objectives
paths:
/api/v1/slo:
get:
description: Get a list of service level objective objects for your organization.
operationId: ListSLOs
parameters:
- description: A comma separated list of the IDs of the service level objectives objects.
example: id1, id2, id3
in: query
name: ids
required: false
schema:
type: string
- description: The query string to filter results based on SLO names.
example: monitor
in: query
name: query
required: false
schema:
type: string
- description: The query string to filter results based on a single SLO tag.
example: env:prod
in: query
name: tags_query
required: false
schema:
type: string
- description: The query string to filter results based on SLO numerator and denominator.
example: aws.elb.request_count
in: query
name: metrics_query
required: false
schema:
type: string
- description: The number of SLOs to return in the response.
in: query
name: limit
required: false
schema:
default: 1000
format: int64
type: integer
- description: The specific offset to use as the beginning of the returned response.
in: query
name: offset
required: false
schema:
format: int64
type: integer
- description: Whether to return only deleted service level objective objects.
example: true
in: query
name: is_deleted
required: false
schema:
default: false
type: boolean
responses:
'200':
content:
application/json:
examples:
default:
value:
data:
- id: abc-123
name: Custom Metric SLO
tags:
- env:prod
- app:core
thresholds:
- target: 95
timeframe: 7d
- target: 95
timeframe: 30d
warning: 97
type: metric
errors: []
schema:
$ref: '#/components/schemas/SLOListResponse'
description: OK
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/APIErrorResponse'
description: Bad Request
'403':
content:
application/json:
schema:
$ref: '#/components/schemas/APIErrorResponse'
description: Forbidden
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/APIErrorResponse'
description: Not Found
'429':
$ref: '#/components/responses/TooManyRequestsResponse'
security:
- apiKeyAuth: []
appKeyAuth: []
- AuthZ:
- slos_read
summary: Get all SLOs
tags:
- Service Level Objectives
x-pagination:
limitParam: limit
pageOffsetParam: offset
resultsPath: data
x-permission:
operator: OR
permissions:
- slos_read
post:
description: Create a service level objective object.
operationId: CreateSLO
requestBody:
content:
application/json:
examples:
default:
value:
description: Track the availability of our custom metric.
name: Custom Metric SLO
query:
denominator: sum:my.custom.metric{*}.as_count()
numerator: sum:my.custom.metric{type:good}.as_count()
tags:
- env:prod
- app:core
thresholds:
- target: 95
timeframe: 7d
- target: 95
timeframe: 30d
warning: 97
type: metric
schema:
$ref: '#/components/schemas/ServiceLevelObjectiveRequest'
description: Service level objective request object.
required: true
responses:
'200':
content:
application/json:
examples:
default:
value:
data:
- description: Track the availability of our custom metric.
id: abc-123
name: Custom Metric SLO
tags:
- env:prod
- app:core
thresholds:
- target: 95
target_display: '95.0'
timeframe: 7d
type: metric
errors: []
schema:
$ref: '#/components/schemas/SLOListResponse'
description: OK
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/APIErrorResponse'
description: Bad Request
'403':
content:
application/json:
schema:
$ref: '#/components/schemas/APIErrorResponse'
description: Forbidden
'429':
$ref: '#/components/responses/TooManyRequestsResponse'
security:
- apiKeyAuth: []
appKeyAuth: []
- AuthZ:
- slos_write
summary: Create an SLO object
tags:
- Service Level Objectives
x-codegen-request-body-name: body
x-permission:
operator: OR
permissions:
- slos_write
/api/v1/slo/bulk_delete:
post:
description: 'Delete (or partially delete) multiple service level objective objects.
This endpoint facilitates deletion of one or more thresholds for one or more
service level objective objects. If all thresholds are deleted, the service level
objective object is deleted as well.'
operationId: DeleteSLOTimeframeInBulk
requestBody:
content:
application/json:
examples:
default:
value:
id1:
- 7d
- 30d
id2:
- 7d
- 30d
schema:
$ref: '#/components/schemas/SLOBulkDelete'
description: Delete multiple service level objective objects request body.
required: true
responses:
'200':
content:
application/json:
examples:
default:
value:
data:
deleted: []
updated:
- abc-123
errors: []
schema:
$ref: '#/components/schemas/SLOBulkDeleteResponse'
description: OK
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/APIErrorResponse'
description: Bad Request
'403':
content:
application/json:
schema:
$ref: '#/components/schemas/APIErrorResponse'
description: Forbidden
'429':
$ref: '#/components/responses/TooManyRequestsResponse'
security:
- apiKeyAuth: []
appKeyAuth: []
- AuthZ:
- slos_write
summary: Bulk Delete SLO Timeframes
tags:
- Service Level Objectives
x-codegen-request-body-name: body
x-permission:
operator: OR
permissions:
- slos_write
/api/v1/slo/can_delete:
get:
description: 'Check if an SLO can be safely deleted. For example,
assure an SLO can be deleted without disrupting a dashboard.'
operationId: CheckCanDeleteSLO
parameters:
- description: A comma separated list of the IDs of the service level objectives objects.
example: id1, id2, id3
in: query
name: ids
required: true
schema:
type: string
responses:
'200':
content:
application/json:
examples:
default:
value:
data:
ok:
- abc-123
errors: {}
schema:
$ref: '#/components/schemas/CheckCanDeleteSLOResponse'
description: OK
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/APIErrorResponse'
description: Bad Request
'403':
content:
application/json:
schema:
$ref: '#/components/schemas/APIErrorResponse'
description: Forbidden
'409':
content:
application/json:
schema:
$ref: '#/components/schemas/CheckCanDeleteSLOResponse'
description: Conflict
'429':
$ref: '#/components/responses/TooManyRequestsResponse'
security:
- apiKeyAuth: []
appKeyAuth: []
- AuthZ:
- slos_read
summary: Check if SLOs can be safely deleted
tags:
- Service Level Objectives
x-permission:
operator: OR
permissions:
- slos_read
/api/v1/slo/search:
get:
description: Get a list of service level objective objects for your organization.
operationId: SearchSLO
parameters:
- description: 'The query string to filter results based on SLO names.
Some examples of queries include `service:<service-name>`
and `<slo-name>`.'
in: query
name: query
required: false
schema:
type: string
- description: The number of files to return in the response `[default=10]`.
in: query
name: page[size]
required: false
schema:
format: int64
type: integer
- description: The identifier of the first page to return. This parameter is used for the pagination
feature `[default=0]`.
in: query
name: page[number]
required: false
schema:
format: int64
type: integer
- description: Whether or not to return facet information in the response `[default=false]`.
in: query
name: include_facets
required: false
schema:
type: boolean
responses:
'200':
content:
application/json:
examples:
default:
value:
data:
attributes:
slos:
- data:
attributes:
name: Example SLO
thresholds:
- target: 95
target_display: '95'
timeframe: 7d
id: abc-123
type: slo
type: service_level_objective_search_results
schema:
$ref: '#/components/schemas/SearchSLOResponse'
description: OK
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/APIErrorResponse'
description: Bad Request
'403':
content:
application/json:
schema:
$ref: '#/components/schemas/APIErrorResponse'
description: Forbidden
'429':
$ref: '#/components/responses/TooManyRequestsResponse'
security:
- apiKeyAuth: []
appKeyAuth: []
- AuthZ:
- slos_read
summary: Search for SLOs
tags:
- Service Level Objectives
x-permission:
operator: OR
permissions:
- slos_read
/api/v1/slo/{slo_id}:
delete:
description: 'Permanently delete the specified service level objective object.
If an SLO is used in a dashboard, the `DELETE /v1/slo/` endpoint returns
a 409 conflict error because the SLO is referenced in a dashboard.'
operationId: DeleteSLO
parameters:
- description: The ID of the service level objective.
in: path
name: slo_id
required: true
schema:
type: string
- description: Delete the monitor even if it's referenced by other resources (for example SLO, composite
monitor).
in: query
name: force
required: false
schema:
type: string
responses:
'200':
content:
application/json:
examples:
default:
value:
data:
- abc-123
errors: {}
schema:
$ref: '#/components/schemas/SLODeleteResponse'
description: OK
'403':
content:
application/json:
schema:
$ref: '#/components/schemas/APIErrorResponse'
description: Forbidden
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/APIErrorResponse'
description: Not found
'409':
content:
application/json:
schema:
$ref: '#/components/schemas/SLODeleteResponse'
description: Conflict
'429':
$ref: '#/components/responses/TooManyRequestsResponse'
security:
- apiKeyAuth: []
appKeyAuth: []
- AuthZ:
- slos_write
summary: Delete an SLO
tags:
- Service Level Objectives
x-permission:
operator: OR
permissions:
- slos_write
get:
description: Get a service level objective object.
operationId: GetSLO
parameters:
- description: The ID of the service level objective object.
in: path
name: slo_id
required: true
schema:
type: string
- description: Get the IDs of SLO monitors that reference this SLO.
example: true
in: query
name: with_configured_alert_ids
required: false
schema:
type: boolean
responses:
'200':
content:
application/json:
examples:
default:
value:
data:
description: Track the availability of our custom metric.
id: abc-123
name: Custom Metric SLO
tags:
- env:prod
thresholds:
- target: 95
target_display: '95.0'
timeframe: 7d
type: metric
errors: []
schema:
$ref: '#/components/schemas/SLOResponse'
description: OK
'403':
content:
application/json:
schema:
$ref: '#/components/schemas/APIErrorResponse'
description: Forbidden
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/APIErrorResponse'
description: Not found
'429':
$ref: '#/components/responses/TooManyRequestsResponse'
security:
- apiKeyAuth: []
appKeyAuth: []
- AuthZ:
- slos_read
summary: Get an SLO's details
tags:
- Service Level Objectives
x-permission:
operator: OR
permissions:
- slos_read
put:
description: Update the specified service level objective object.
operationId: UpdateSLO
parameters:
- description: The ID of the service level objective object.
in: path
name: slo_id
required: true
schema:
type: string
requestBody:
content:
application/json:
examples:
default:
value:
description: Updated description for the SLO.
name: Custom Metric SLO
query:
denominator: sum:my.custom.metric{*}.as_count()
numerator: sum:my.custom.metric{type:good}.as_count()
tags:
- env:prod
- app:core
thresholds:
- target: 95
timeframe: 7d
- target: 95
timeframe: 30d
warning: 97
type: metric
schema:
$ref: '#/components/schemas/ServiceLevelObjective'
description: The edited service level objective request object.
required: true
responses:
'200':
content:
application/json:
examples:
default:
value:
data:
- description: Updated description for the SLO.
id: abc-123
name: Custom Metric SLO
tags:
- env:prod
thresholds:
- target: 95
target_display: '95.0'
timeframe: 7d
type: metric
errors: []
schema:
$ref: '#/components/schemas/SLOListResponse'
description: OK
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/APIErrorResponse'
description: Bad Request
'403':
content:
application/json:
schema:
$ref: '#/components/schemas/APIErrorResponse'
description: Forbidden
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/APIErrorResponse'
description: Not Found
'429':
$ref: '#/components/responses/TooManyRequestsResponse'
security:
- apiKeyAuth: []
appKeyAuth: []
- AuthZ:
- slos_write
summary: Update an SLO
tags:
- Service Level Objectives
x-codegen-request-body-name: body
x-permission:
operator: OR
permissions:
- slos_write
/api/v1/slo/{slo_id}/history:
get:
description: 'Get a specific SLO’s history, regardless of its SLO type.
The detailed history data is structured according to the source data type.
For example, metric data is included for event SLOs that use
the metric source, and monitor SLO types include the monitor transition history.
**Note:** There are different response formats for event based and time based SLOs.
Examples of both are shown.'
operationId: GetSLOHistory
parameters:
- description: The ID of the service level objective object.
in: path
name: slo_id
required: true
schema:
type: string
- description: The `from` timestamp for the query window in epoch seconds.
in: query
name: from_ts
required: true
schema:
format: int64
type: integer
- description: The `to` timestamp for the query window in epoch seconds.
in: query
name: to_ts
required: true
schema:
format: int64
type: integer
- description: The SLO target. If `target` is passed in, the response will include the remaining
error budget and a timeframe value of `custom`.
in: query
name: target
schema:
exclusiveMaximum: true
exclusiveMinimum: true
format: double
maximum: 100
minimum: 0
type: number
- description: 'Defaults to `true`. If any SLO corrections are applied and this parameter is set
to `false`,
then the corrections will not be applied and the SLI values will not be affected.'
in: query
name: apply_correction
required: false
schema:
type: boolean
responses:
'200':
content:
application/json:
examples:
default:
value:
data:
from_ts: 1615323990
overall:
sli_value: 99.99
span_precision: 2.0
thresholds:
7d:
target: 95
timeframe: 7d
to_ts: 1615928790
type: metric
type_id: 1
errors: null
schema:
$ref: '#/components/schemas/SLOHistoryResponse'
description: OK
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/APIErrorResponse'
description: Bad Request
'403':
content:
application/json:
schema:
$ref: '#/components/schemas/APIErrorResponse'
description: Forbidden
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/APIErrorResponse'
description: Not Found
'429':
$ref: '#/components/responses/TooManyRequestsResponse'
security:
- apiKeyAuth: []
appKeyAuth: []
- AuthZ:
- slos_read
summary: Get an SLO's history
tags:
- Service Level Objectives
x-permission:
operator: OR
permissions:
- slos_read
/api/v1/slo/{slo_id}/corrections:
get:
description: Get corrections applied to an SLO
operationId: GetSLOCorrections
parameters:
- description: The ID of the service level objective object.
in: path
name: slo_id
required: true
schema:
type: string
responses:
'200':
content:
application/json:
examples:
default:
value:
data:
- attributes:
category: Scheduled Maintenance
end: 1600003600
slo_id: abc-123
start: 1600000000
timezone: UTC
id: abc-123
type: correction
schema:
$ref: '#/components/schemas/SLOCorrectionListResponse'
description: OK
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/APIErrorResponse'
description: Bad Request
'403':
content:
application/json:
schema:
$ref: '#/components/schemas/APIErrorResponse'
description: Forbidden
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/APIErrorResponse'
description: Not Found
'429':
$ref: '#/components/responses/TooManyRequestsResponse'
security:
- apiKeyAuth: []
appKeyAuth: []
- AuthZ:
- slos_read
summary: Get Corrections For an SLO
tags:
- Service Level Objectives
x-permission:
operator: OR
permissions:
- slos_read
components:
schemas:
SLOHistoryResponse:
description: A service level objective history response.
properties:
data:
$ref: '#/components/schemas/SLOHistoryResponseData'
errors:
description: A list of errors while querying the history data for the service level objective.
items:
$ref: '#/components/schemas/SLOHistoryResponseError'
nullable: true
type: array
type: object
ServiceLevelObjectiveRequest:
description: 'A service level objective object includes a service level indicator, thresholds
for one or more timeframes, and metadata (`name`, `description`, `tags`, etc.).'
properties:
description:
description: 'A user-defined description of the service level objective.
Always included in service level objective responses (but may be `null`).
Optional in create/update requests.'
nullable: true
type: string
groups:
description: 'A list of (up to 100) monitor groups that narrow the scope of a monitor service
level objective.
Included in service level objective responses if it is not empty. Optional in
create/update requests for monitor service level objectives, but may only be
used when then length of the `monitor_ids` field is one.'
example:
- env:prod
- role:mysql
items:
description: A group name, for instance `env:prod`.
type: string
type: array
monitor_ids:
description: 'A list of monitor IDs that defines the scope of a monitor service level
objective. **Required if type is `monitor`**.'
items:
description: A monitor ID.
format: int64
type: integer
type: array
name:
description: The name of the service level objective object.
example: Custom Metric SLO
type: string
query:
$ref: '#/components/schemas/ServiceLevelObjectiveQuery'
sli_specification:
$ref: '#/components/schemas/SLOSliSpec'
tags:
description: 'A list of tags associated with this service level objective.
Always included in service level objective responses (but may be empty).
Optional in create/update requests.'
example:
- env:prod
- app:core
items:
description: A tag to apply to your SLO.
type: string
type: array
target_threshold:
description: 'The target threshold such that when the service level indicator is above this
threshold over the given timeframe, the objective is being met.'
example: 99.9
format: double
type: number
thresholds:
description: 'The thresholds (timeframes and associated targets) for this service level
objective object.'
example:
- target: 95
timeframe: 7d
- target: 95
timeframe: 30d
warning: 97
items:
$ref: '#/components/schemas/SLOThreshold'
type: array
timeframe:
$ref: '#/components/schemas/SLOTimeframe'
type:
$ref: '#/components/schemas/SLOType'
warning_threshold:
description: 'The optional warning threshold such that when the service level indicator is
below this value for the given threshold, but above the target threshold, the
objective appears in a "warning" state. This value must be greater than the target
threshold.'
example: 99.95
format: double
type: number
required:
- name
- thresholds
- type
type: object
SLOSliSpec:
description: A generic SLI specification. This is used for time-slice and count-based (metric) SLOs
only.
oneOf:
- $ref: '#/components/schemas/SLOTimeSliceSpec'
- $ref: '#/components/schemas/SLOCountSpec'
SLOTimeSliceSpec:
additionalProperties: false
description: A time-slice SLI specification.
example:
time_slice:
comparator: <
query:
formulas:
- formula: query2/query1
queries:
- data_source: metrics
name: query1
query: sum:trace.servlet.request.hits{*} by {env}.as_count()
- data_source: metrics
name: query2
query: sum:trace.servlet.request.errors{*} by {env}.as_count()
threshold: 5
properties:
time_slice:
$ref: '#/components/schemas/SLOTimeSliceCondition'
required:
- time_slice
type: object
ServiceLevelObjective:
description: 'A service level objective object includes a service level indicator, thresholds
for one or more timeframes, and metadata (`name`, `description`, `tags`, etc.).'
properties:
created_at:
description: 'Creation timestamp (UNIX time in seconds)
Always included in service level objective responses.'
format: int64
readOnly: true
type: integer
creator:
$ref: '#/components/schemas/Creator'
description:
description: 'A user-defined description of the service level objective.
Always included in service level objective responses (but may be `null`).
Optional in create/update requests.'
nullable: true
type: string
groups:
description: 'A list of (up to 100) monitor groups that narrow the scope of a monitor service
level objective.
Included in service level objective responses if it is not empty. Optional in
create/update requests for monitor service level objectives, but may only be
used when then length of the `monitor_ids` field is one.'
example:
- env:prod
# --- truncated at 32 KB (102 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/datadog-apm/refs/heads/main/openapi/datadog-apm-slos-api-openapi.yml