Honeycomb SLOs API

The Honeycomb SLOs API enables developers to define and monitor Service Level Objectives programmatically. It supports creating, listing, updating, and deleting SLO objects for an organization. Combined with the Burn Alerts API for notifications and the Reporting API for historical SLO performance analysis, it provides a complete interface for managing reliability targets and tracking error budgets over time.

OpenAPI Specification

honeycomb-slos-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Honeycomb SLOs API
  description: >-
    The Honeycomb SLOs API enables developers to define and monitor Service
    Level Objectives programmatically. It supports creating, listing,
    updating, and deleting SLO objects for an organization. Combined with
    the Burn Alerts API for notifications and the Reporting API for
    historical SLO performance analysis, it provides a complete interface
    for managing reliability targets and tracking error budgets over time.
  version: '1.0'
  contact:
    name: Honeycomb Support
    url: https://support.honeycomb.io
  termsOfService: https://www.honeycomb.io/terms-of-service
externalDocs:
  description: Honeycomb SLOs API Documentation
  url: https://api-docs.honeycomb.io/api/slos
servers:
  - url: https://api.honeycomb.io
    description: Honeycomb Production API
tags:
  - name: Burn Alerts
    description: >-
      Manage burn alerts that notify you when issues impact your SLO budget.
  - name: Reporting
    description: >-
      Access historical SLO performance reporting data.
  - name: SLOs
    description: >-
      Define and monitor Service Level Objectives for your organization.
security:
  - ApiKeyAuth: []
paths:
  /1/slos/{datasetSlug}:
    get:
      operationId: listSLOs
      summary: List all SLOs
      description: >-
        Returns a list of all Service Level Objectives for the specified dataset.
      tags:
        - SLOs
      parameters:
        - $ref: '#/components/parameters/datasetSlug'
      responses:
        '200':
          description: A list of SLOs
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/SLO'
        '401':
          description: Unauthorized
    post:
      operationId: createSLO
      summary: Create an SLO
      description: >-
        Creates a new Service Level Objective for the specified dataset. The
        API key must have the Manage SLOs permission.
      tags:
        - SLOs
      parameters:
        - $ref: '#/components/parameters/datasetSlug'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SLOCreateRequest'
      responses:
        '201':
          description: SLO created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SLO'
        '400':
          description: Bad request - invalid SLO configuration
        '401':
          description: Unauthorized
  /1/slos/{datasetSlug}/{sloId}:
    get:
      operationId: getSLO
      summary: Get an SLO
      description: >-
        Returns a single SLO by its ID.
      tags:
        - SLOs
      parameters:
        - $ref: '#/components/parameters/datasetSlug'
        - $ref: '#/components/parameters/sloId'
      responses:
        '200':
          description: SLO details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SLO'
        '401':
          description: Unauthorized
        '404':
          description: SLO not found
    put:
      operationId: updateSLO
      summary: Update an SLO
      description: >-
        Updates an SLO's target percentage, time period, or associated query.
      tags:
        - SLOs
      parameters:
        - $ref: '#/components/parameters/datasetSlug'
        - $ref: '#/components/parameters/sloId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SLOUpdateRequest'
      responses:
        '200':
          description: SLO updated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SLO'
        '401':
          description: Unauthorized
        '404':
          description: SLO not found
    delete:
      operationId: deleteSLO
      summary: Delete an SLO
      description: >-
        Deletes a Service Level Objective.
      tags:
        - SLOs
      parameters:
        - $ref: '#/components/parameters/datasetSlug'
        - $ref: '#/components/parameters/sloId'
      responses:
        '204':
          description: SLO deleted
        '401':
          description: Unauthorized
        '404':
          description: SLO not found
  /1/burn_alerts/{datasetSlug}:
    get:
      operationId: listBurnAlerts
      summary: List all burn alerts
      description: >-
        Returns a list of all burn alerts for the specified dataset.
      tags:
        - Burn Alerts
      parameters:
        - $ref: '#/components/parameters/datasetSlug'
      responses:
        '200':
          description: A list of burn alerts
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/BurnAlert'
        '401':
          description: Unauthorized
    post:
      operationId: createBurnAlert
      summary: Create a burn alert
      description: >-
        Creates a new burn alert that notifies when issues impact your SLO
        budget. Supported alert types are budget_rate and exhaustion_time.
      tags:
        - Burn Alerts
      parameters:
        - $ref: '#/components/parameters/datasetSlug'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BurnAlertCreateRequest'
      responses:
        '201':
          description: Burn alert created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BurnAlert'
        '401':
          description: Unauthorized
  /1/burn_alerts/{datasetSlug}/{burnAlertId}:
    get:
      operationId: getBurnAlert
      summary: Get a burn alert
      description: >-
        Returns a single burn alert by its ID.
      tags:
        - Burn Alerts
      parameters:
        - $ref: '#/components/parameters/datasetSlug'
        - $ref: '#/components/parameters/burnAlertId'
      responses:
        '200':
          description: Burn alert details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BurnAlert'
        '401':
          description: Unauthorized
        '404':
          description: Burn alert not found
    put:
      operationId: updateBurnAlert
      summary: Update a burn alert
      description: >-
        Updates a burn alert's configuration or notification recipients.
      tags:
        - Burn Alerts
      parameters:
        - $ref: '#/components/parameters/datasetSlug'
        - $ref: '#/components/parameters/burnAlertId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BurnAlertUpdateRequest'
      responses:
        '200':
          description: Burn alert updated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BurnAlert'
        '401':
          description: Unauthorized
        '404':
          description: Burn alert not found
    delete:
      operationId: deleteBurnAlert
      summary: Delete a burn alert
      description: >-
        Deletes a burn alert.
      tags:
        - Burn Alerts
      parameters:
        - $ref: '#/components/parameters/datasetSlug'
        - $ref: '#/components/parameters/burnAlertId'
      responses:
        '204':
          description: Burn alert deleted
        '401':
          description: Unauthorized
        '404':
          description: Burn alert not found
  /1/slo_report/{datasetSlug}/{sloId}:
    get:
      operationId: getSLOReport
      summary: Get SLO report
      description: >-
        Returns historical SLO performance reporting data including budget
        remaining, budget used, and compliance percentage.
      tags:
        - Reporting
      parameters:
        - $ref: '#/components/parameters/datasetSlug'
        - $ref: '#/components/parameters/sloId'
      responses:
        '200':
          description: SLO report data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SLOReport'
        '401':
          description: Unauthorized
        '404':
          description: SLO not found
components:
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: X-Honeycomb-Team
      description: >-
        Honeycomb Configuration API key with Manage SLOs permission.
  parameters:
    datasetSlug:
      name: datasetSlug
      in: path
      required: true
      description: >-
        The slug identifier for the dataset.
      schema:
        type: string
    sloId:
      name: sloId
      in: path
      required: true
      description: >-
        The unique identifier for the SLO.
      schema:
        type: string
    burnAlertId:
      name: burnAlertId
      in: path
      required: true
      description: >-
        The unique identifier for the burn alert.
      schema:
        type: string
  schemas:
    SLO:
      type: object
      properties:
        id:
          type: string
          description: >-
            Unique identifier for the SLO.
        name:
          type: string
          description: >-
            The display name of the SLO.
        description:
          type: string
          description: >-
            A description of the SLO.
        sli:
          $ref: '#/components/schemas/QuerySpec'
        target_percentage:
          type: number
          description: >-
            The target percentage for the SLO, such as 99.9.
          minimum: 0
          maximum: 100
        time_period_days:
          type: integer
          description: >-
            The time period in days over which the SLO is evaluated.
        created_at:
          type: string
          format: date-time
          description: >-
            ISO8601 formatted time the SLO was created.
        updated_at:
          type: string
          format: date-time
          description: >-
            ISO8601 formatted time the SLO was last updated.
    SLOCreateRequest:
      type: object
      required:
        - name
        - sli
        - target_percentage
        - time_period_days
      properties:
        name:
          type: string
          description: >-
            The display name for the SLO.
        description:
          type: string
          description: >-
            An optional description for the SLO.
        sli:
          $ref: '#/components/schemas/QuerySpec'
        target_percentage:
          type: number
          description: >-
            The target percentage for the SLO.
          minimum: 0
          maximum: 100
        time_period_days:
          type: integer
          description: >-
            The time period in days for the SLO.
    SLOUpdateRequest:
      type: object
      properties:
        name:
          type: string
          description: >-
            An updated display name for the SLO.
        description:
          type: string
          description: >-
            An updated description for the SLO.
        sli:
          $ref: '#/components/schemas/QuerySpec'
        target_percentage:
          type: number
          minimum: 0
          maximum: 100
        time_period_days:
          type: integer
    SLOReport:
      type: object
      properties:
        slo_id:
          type: string
          description: >-
            The ID of the SLO this report is for.
        budget_remaining:
          type: number
          description: >-
            The remaining error budget as a percentage.
        budget_used:
          type: number
          description: >-
            The used error budget as a percentage.
        compliance:
          type: number
          description: >-
            The current compliance percentage.
        time_period_days:
          type: integer
          description: >-
            The time period in days for the report.
    BurnAlert:
      type: object
      properties:
        id:
          type: string
          description: >-
            Unique identifier for the burn alert.
        slo_id:
          type: string
          description: >-
            The ID of the SLO this burn alert monitors.
        alert_type:
          type: string
          description: >-
            The type of burn alert.
          enum:
            - budget_rate
            - exhaustion_time
        exhaustion_minutes:
          type: integer
          description: >-
            For exhaustion_time alerts, the number of minutes before the budget
            is exhausted that triggers the alert.
        budget_rate_window_minutes:
          type: integer
          description: >-
            For budget_rate alerts, the window in minutes over which to measure
            the budget burn rate.
        budget_rate_decrease_percent:
          type: number
          description: >-
            For budget_rate alerts, the percentage decrease in budget that
            triggers the alert.
        recipients:
          type: array
          description: >-
            List of recipients to notify when the burn alert fires.
          items:
            $ref: '#/components/schemas/RecipientRef'
        created_at:
          type: string
          format: date-time
          description: >-
            ISO8601 formatted time the burn alert was created.
        updated_at:
          type: string
          format: date-time
          description: >-
            ISO8601 formatted time the burn alert was last updated.
    BurnAlertCreateRequest:
      type: object
      required:
        - slo_id
        - alert_type
        - recipients
      properties:
        slo_id:
          type: string
          description: >-
            The ID of the SLO to monitor.
        alert_type:
          type: string
          enum:
            - budget_rate
            - exhaustion_time
        exhaustion_minutes:
          type: integer
          description: >-
            Required for exhaustion_time alerts.
        budget_rate_window_minutes:
          type: integer
          description: >-
            Required for budget_rate alerts.
        budget_rate_decrease_percent:
          type: number
          description: >-
            Required for budget_rate alerts.
        recipients:
          type: array
          items:
            $ref: '#/components/schemas/RecipientRef'
    BurnAlertUpdateRequest:
      type: object
      properties:
        exhaustion_minutes:
          type: integer
        budget_rate_window_minutes:
          type: integer
        budget_rate_decrease_percent:
          type: number
        recipients:
          type: array
          items:
            $ref: '#/components/schemas/RecipientRef'
    RecipientRef:
      type: object
      properties:
        id:
          type: string
          description: >-
            The ID of the recipient to notify.
    QuerySpec:
      type: object
      description: >-
        A query specification defining the SLI measurement.
      properties:
        calculations:
          type: array
          items:
            type: object
            properties:
              op:
                type: string
                enum:
                  - COUNT
                  - SUM
                  - AVG
                  - COUNT_DISTINCT
                  - MAX
                  - MIN
                  - P001
                  - P01
                  - P05
                  - P10
                  - P25
                  - P50
                  - P75
                  - P90
                  - P95
                  - P99
                  - P999
              column:
                type: string
        filters:
          type: array
          items:
            type: object
            properties:
              column:
                type: string
              op:
                type: string
              value: {}
        breakdowns:
          type: array
          items:
            type: string
        time_range:
          type: integer