Honeycomb API (1.0.0)

The API allows programmatic management of many resources within Honeycomb.

Please report any discrepancies with actual API behavior in Pollinators Slack or to Honeycomb Support.

Download OpenAPI description
Overview
Languages
Servers
https://api.honeycomb.io/
https://api.eu1.honeycomb.io/

Auth

API Keys have various scopes permissions and belong to a specific Team or Environment.

Any valid Honeycomb ingest or configuration API Key will work with this endpoint. Learn more about API keys.

These endpoints can be used to validate authentication for a key, to determine what authorizations have been granted to a key, and to determine the Team and Environment that a key belongs to.

Operations

Boards

Boards are a place to pin and save useful queries and graphs you want to retain for later reuse and reference.

This API allows you to list, create, update, and delete Boards.

Operations

Authorization

The API key must have the Manage Public Boards permission. Learn more about API keys here.

Create a Board

Request

Create a Board comprised of one or more Queries.

Bodyapplication/jsonrequired
namestring[ 1 .. 255 ] charactersrequired

The name of the Board.

Example: "My Board"
descriptionstring[ 0 .. 1024 ] characters

A description of the Board.

Example: "A board created via the API"
column_layoutstring

The number of columns to layout on the board.

Default "multi"
Enum"multi""single"
queriesArray of objects(BoardQuery)
slosArray of strings

A list of SLO IDs to add to the board

Example: ["BGfyxhFto","dF1URaPGL","oSxbG7eiA"]
stylestringDeprecated

All boards are displayed visually in the UI. The field can still be sent, but it will have no functional effect in the UI.

Default "visual"
curl -i -X POST \
  https://api.honeycomb.io/1/boards \
  -H 'Content-Type: application/json' \
  -H 'X-Honeycomb-Team: YOUR_API_KEY_HERE' \
  -d '{
    "name": "My Board",
    "description": "A board created via the API",
    "style": "visual",
    "column_layout": "multi",
    "queries": [
      {
        "caption": "context for this query",
        "graph_settings": {
          "hide_markers": false,
          "log_scale": false,
          "omit_missing_values": false,
          "stacked_graphs": false,
          "utc_xaxis": false,
          "overlaid_charts": false
        },
        "query_style": "graph",
        "dataset": "My Dataset",
        "query_id": "abc1234e",
        "query": null,
        "query_annotation_id": "e4c24a35"
      }
    ],
    "slos": [
      "BGfyxhFto",
      "dF1URaPGL",
      "oSxbG7eiA"
    ]
  }'

Responses

Created

Bodyapplication/json
namestring[ 1 .. 255 ] charactersrequired

The name of the Board.

Example: "My Board"
descriptionstring[ 0 .. 1024 ] characters

A description of the Board.

Example: "A board created via the API"
column_layoutstring

The number of columns to layout on the board.

Default "multi"
Enum"multi""single"
queriesArray of objects(BoardQuery)
slosArray of strings

A list of SLO IDs to add to the board

Example: ["BGfyxhFto","dF1URaPGL","oSxbG7eiA"]
linksobjectread-only
idstringread-only

Unique identifier (ID), returned in response bodies.

Example: "2NeeaE9bBLd"
stylestringDeprecated

All boards are displayed visually in the UI. The field can still be sent, but it will have no functional effect in the UI.

Default "visual"
Response
application/json
{ "name": "My Board", "description": "A board created via the API", "style": "visual", "column_layout": "multi", "queries": [ {} ], "slos": [ "BGfyxhFto", "dF1URaPGL", "oSxbG7eiA" ], "links": { "board_url": "https://ui.honeycomb.io/myteam/environments/myenvironment/board/2NeeaE9bBLd" }, "id": "2NeeaE9bBLd" }

List All Boards

Request

Retrieves a list of all non-secret Boards within an environment. Note: For Honeycomb Classic users, all boards within Classic will be returned.

curl -i -X GET \
  https://api.honeycomb.io/1/boards \
  -H 'X-Honeycomb-Team: YOUR_API_KEY_HERE'

Responses

Success

Bodyapplication/jsonArray [
namestring[ 1 .. 255 ] charactersrequired

The name of the Board.

Example: "My Board"
descriptionstring[ 0 .. 1024 ] characters

A description of the Board.

Example: "A board created via the API"
column_layoutstring

The number of columns to layout on the board.

Default "multi"
Enum"multi""single"
queriesArray of objects(BoardQuery)
slosArray of strings

A list of SLO IDs to add to the board

Example: ["BGfyxhFto","dF1URaPGL","oSxbG7eiA"]
linksobjectread-only
idstringread-only

Unique identifier (ID), returned in response bodies.

Example: "2NeeaE9bBLd"
stylestringDeprecated

All boards are displayed visually in the UI. The field can still be sent, but it will have no functional effect in the UI.

Default "visual"
]
Response
application/json
[ { "name": "My Board", "description": "A board created via the API", "style": "visual", "column_layout": "multi", "queries": [], "slos": [], "links": {}, "id": "2NeeaE9bBLd" } ]

Get a Board

Request

Get a single Board by ID.

Path
boardIdstringrequired

The unique identifier (ID) of a Board.

curl -i -X GET \
  'https://api.honeycomb.io/1/boards/{boardId}' \
  -H 'X-Honeycomb-Team: YOUR_API_KEY_HERE'

Responses

Success

Bodyapplication/json
namestring[ 1 .. 255 ] charactersrequired

The name of the Board.

Example: "My Board"
descriptionstring[ 0 .. 1024 ] characters

A description of the Board.

Example: "A board created via the API"
column_layoutstring

The number of columns to layout on the board.

Default "multi"
Enum"multi""single"
queriesArray of objects(BoardQuery)
slosArray of strings

A list of SLO IDs to add to the board

Example: ["BGfyxhFto","dF1URaPGL","oSxbG7eiA"]
linksobjectread-only
idstringread-only

Unique identifier (ID), returned in response bodies.

Example: "2NeeaE9bBLd"
stylestringDeprecated

All boards are displayed visually in the UI. The field can still be sent, but it will have no functional effect in the UI.

Default "visual"
Response
application/json
{ "name": "My Board", "description": "A board created via the API", "style": "visual", "column_layout": "multi", "queries": [ {} ], "slos": [ "BGfyxhFto", "dF1URaPGL", "oSxbG7eiA" ], "links": { "board_url": "https://ui.honeycomb.io/myteam/environments/myenvironment/board/2NeeaE9bBLd" }, "id": "2NeeaE9bBLd" }

Update a Board

Request

Update a Board by specifying its ID and full details. Note: Queries can be added to, removed from, and re-ordered by updating the board itself. It is not possible to reference individual queries via the API.

Path
boardIdstringrequired

The unique identifier (ID) of a Board.

Bodyapplication/jsonrequired
namestring[ 1 .. 255 ] charactersrequired

The name of the Board.

Example: "My Board"
descriptionstring[ 0 .. 1024 ] characters

A description of the Board.

Example: "A board created via the API"
column_layoutstring

The number of columns to layout on the board.

Default "multi"
Enum"multi""single"
queriesArray of objects(BoardQuery)
slosArray of strings

A list of SLO IDs to add to the board

Example: ["BGfyxhFto","dF1URaPGL","oSxbG7eiA"]
stylestringDeprecated

All boards are displayed visually in the UI. The field can still be sent, but it will have no functional effect in the UI.

Default "visual"
curl -i -X PUT \
  'https://api.honeycomb.io/1/boards/{boardId}' \
  -H 'Content-Type: application/json' \
  -H 'X-Honeycomb-Team: YOUR_API_KEY_HERE' \
  -d '{
    "name": "My Board",
    "description": "A board created via the API",
    "style": "visual",
    "column_layout": "multi",
    "queries": [
      {
        "caption": "context for this query",
        "graph_settings": {
          "hide_markers": false,
          "log_scale": false,
          "omit_missing_values": false,
          "stacked_graphs": false,
          "utc_xaxis": false,
          "overlaid_charts": false
        },
        "query_style": "graph",
        "dataset": "My Dataset",
        "query_id": "abc1234e",
        "query": null,
        "query_annotation_id": "e4c24a35"
      }
    ],
    "slos": [
      "BGfyxhFto",
      "dF1URaPGL",
      "oSxbG7eiA"
    ]
  }'

Responses

Success

Bodyapplication/json
namestring[ 1 .. 255 ] charactersrequired

The name of the Board.

Example: "My Board"
descriptionstring[ 0 .. 1024 ] characters

A description of the Board.

Example: "A board created via the API"
column_layoutstring

The number of columns to layout on the board.

Default "multi"
Enum"multi""single"
queriesArray of objects(BoardQuery)
slosArray of strings

A list of SLO IDs to add to the board

Example: ["BGfyxhFto","dF1URaPGL","oSxbG7eiA"]
linksobjectread-only
idstringread-only

Unique identifier (ID), returned in response bodies.

Example: "2NeeaE9bBLd"
stylestringDeprecated

All boards are displayed visually in the UI. The field can still be sent, but it will have no functional effect in the UI.

Default "visual"
Response
application/json
{ "name": "My Board", "description": "A board created via the API", "style": "visual", "column_layout": "multi", "queries": [ {} ], "slos": [ "BGfyxhFto", "dF1URaPGL", "oSxbG7eiA" ], "links": { "board_url": "https://ui.honeycomb.io/myteam/environments/myenvironment/board/2NeeaE9bBLd" }, "id": "2NeeaE9bBLd" }

Delete a Board

Request

Delete a public Board by specifying its ID.

Path
boardIdstringrequired

The unique identifier (ID) of a Board.

curl -i -X DELETE \
  'https://api.honeycomb.io/1/boards/{boardId}' \
  -H 'X-Honeycomb-Team: YOUR_API_KEY_HERE'

Responses

Success - no Content

Response
{ "error": "unknown API key - check your credentials" }

Burn Alerts

Operations

Authorization

The API key must have the Manage SLOs permission. Learn more about API keys here.

Create a Burn Alert

Request

Create a Burn Alert in a specified dataset against a specified SLO.

Path
datasetSlugstringrequired

The dataset slug.

Bodyapplication/jsonrequired
Any of:
descriptionstring<= 1023 characters

A description of the Burn Alert.

Example: "Use this runbook if this alert fires."
alert_typestring

One of the supported alert types:

  1. exhaustion_time: Notifies when you are about to run out of SLO budget within a specified number of hours.
  2. budget_rate: Notifies when budget drops by at least a specified percentage within a defined time window.
Default "exhaustion_time"
Enum"exhaustion_time""budget_rate"
Example: "exhaustion_time"
exhaustion_minutesinteger>= 0

Required when alert_type is exhaustion_time.

Must not be specified when alert_type is budget_rate.

Amount of time (in minutes) left until your projected SLO budget is exhausted. The alert will fire when this exhaustion threshold is reached.

Example: 120
sloobjectrequired

Details about the SLO associated with the burn alert.

Example: {"id":"2LBq9LckbcA"}
slo.​idstringrequired

Unique identifier (ID) of a SLO.

Example: "2LBq9LckbcA"
recipientsArray of objects(NotificationRecipient)non-emptyrequired

A list of Recipients to notify when an alert fires. Using type+target is deprecated. First, create the Recipient via the Recipients API, and then specify the ID.

Example: [{"id":"abcd123","type":"email","target":"alerts@example.com"}]
recipients[].​idstring
recipients[].​detailsobject(NotificationRecipientDetails)
recipients[].​typestringDeprecated

One of the supported Recipient Types

Enum"pagerduty""email""slack""webhook""msteams""msteams_workflow"
recipients[].​targetstringDeprecated

The target of the notification. For example, the specific Slack channel or email address. For Recipients of type = "webhook" or type = "msteams_workflow", this will be the Name in the UI and webhook_name in the Recipients API. Deprecated: Use the Recipients API first, then pass the Recipient ID.

curl -i -X POST \
  'https://api.honeycomb.io/1/burn_alerts/{datasetSlug}' \
  -H 'Content-Type: application/json' \
  -H 'X-Honeycomb-Team: YOUR_API_KEY_HERE' \
  -d '{
    "description": "Use this runbook if this alert fires.",
    "alert_type": "exhaustion_time",
    "exhaustion_minutes": 120,
    "slo": {
      "id": "2LBq9LckbcA"
    },
    "recipients": [
      {
        "id": "abcd123",
        "type": "email",
        "target": "alerts@example.com"
      }
    ]
  }'

Responses

Created

Bodyapplication/json
Any of:
idstringread-only

Unique identifier (ID) of a Burn alert.

Example: "fS7vfB81Wcy"
descriptionstring<= 1023 characters

A description of the Burn Alert.

Example: "Use this runbook if this alert fires."
triggeredbooleanread-only

Indicates if the Burn Alert has been triggered. This field is read-only and is set to true when the alert is triggered.

Example: false
created_atstring(date-time)read-only

The ISO8601-formatted time when the Burn Alert was created.

Example: "2022-09-22T17:32:11Z"
updated_atstring(date-time)read-only

The ISO8601-formatted time when the Burn Alert was updated.

Example: "2022-10-31T15:08:11Z"
alert_typestring

One of the supported alert types:

  1. exhaustion_time: Notifies when you are about to run out of SLO budget within a specified number of hours.
  2. budget_rate: Notifies when budget drops by at least a specified percentage within a defined time window.
Default "exhaustion_time"
Enum"exhaustion_time""budget_rate"
Example: "exhaustion_time"
exhaustion_minutesinteger>= 0

Required when alert_type is exhaustion_time.

Must not be specified when alert_type is budget_rate.

Amount of time (in minutes) left until your projected SLO budget is exhausted. The alert will fire when this exhaustion threshold is reached.

Example: 120
sloobject

Details about the SLO associated with the burn alert.

Example: {"id":"2LBq9LckbcA"}
recipientsArray of objects(NotificationRecipient)non-empty

A list of Recipients to notify when an alert fires. Using type+target is deprecated. First, create the Recipient via the Recipients API, and then specify the ID.

Example: [{"id":"abcd123","type":"email","target":"alerts@example.com"}]
Response
application/json
{ "id": "fS7vfB81Wcy", "description": "Use this runbook if this alert fires.", "triggered": false, "created_at": "2022-09-22T17:32:11Z", "updated_at": "2022-10-31T15:08:11Z", "alert_type": "exhaustion_time", "exhaustion_minutes": 120, "slo": { "id": "2LBq9LckbcA" }, "recipients": [ {} ] }

List All Burn Alerts for an SLO

Request

Get all burn alerts associated with the SLO specified in the slo_id query param. It is not currently possible to retrieve all burn alerts for a dataset, environment, or team.

Path
datasetSlugstringrequired

The dataset slug.

Query
slo_idstringrequired

For use with the list endpoint to retrieve all burn alerts for a specified SLO.

curl -i -X GET \
  'https://api.honeycomb.io/1/burn_alerts/{datasetSlug}?slo_id=string' \
  -H 'X-Honeycomb-Team: YOUR_API_KEY_HERE'

Responses

Success

Bodyapplication/jsonArray [
Any of:
idstringread-only

Unique identifier (ID) of a Burn alert.

Example: "fS7vfB81Wcy"
descriptionstring<= 1023 characters

A description of the Burn Alert.

Example: "Use this runbook if this alert fires."
triggeredbooleanread-only

Indicates if the Burn Alert has been triggered. This field is read-only and is set to true when the alert is triggered.

Example: false
created_atstring(date-time)read-only

The ISO8601-formatted time when the Burn Alert was created.

Example: "2022-09-22T17:32:11Z"
updated_atstring(date-time)read-only

The ISO8601-formatted time when the Burn Alert was updated.

Example: "2022-10-31T15:08:11Z"
alert_typestring

One of the supported alert types:

  1. exhaustion_time: Notifies when you are about to run out of SLO budget within a specified number of hours.
  2. budget_rate: Notifies when budget drops by at least a specified percentage within a defined time window.
Default "exhaustion_time"
Enum"exhaustion_time""budget_rate"
Example: "exhaustion_time"
exhaustion_minutesinteger>= 0

Required when alert_type is exhaustion_time.

Must not be specified when alert_type is budget_rate.

Amount of time (in minutes) left until your projected SLO budget is exhausted. The alert will fire when this exhaustion threshold is reached.

Example: 120
sloobject

Details about the SLO associated with the burn alert.

Example: {"id":"2LBq9LckbcA"}
]
Response
application/json
[ { "id": "fS7vfB81Wcy", "alert_type": "exhaustion_time", "description": "Use this runbook (link) if this alert fires.", "triggered": true, "exhaustion_minutes": 120, "slo": {}, "created_at": "2022-09-22T17:32:11Z", "updated_at": "2022-10-22T17:32:11Z" }, { "id": "gT7wgC82Xcz", "alert_type": "budget_rate", "description": "Use this runbook (link) if this alert fires.", "triggered": true, "budget_rate_window_minutes": 60, "budget_rate_decrease_threshold_per_million": 1000, "slo": {}, "created_at": "2022-09-22T17:32:11Z", "updated_at": "2022-10-22T17:32:11Z" } ]

Get a Burn Alert

Request

Get a single Burn Alert by ID.

Path
datasetSlugstringrequired

The dataset slug.

burnAlertIdstringrequired

The unique identifier (ID) of a Burn Alert.

curl -i -X GET \
  'https://api.honeycomb.io/1/burn_alerts/{datasetSlug}/{burnAlertId}' \
  -H 'X-Honeycomb-Team: YOUR_API_KEY_HERE'

Responses

Success

Bodyapplication/json
Any of:
idstringread-only

Unique identifier (ID) of a Burn alert.

Example: "fS7vfB81Wcy"
descriptionstring<= 1023 characters

A description of the Burn Alert.

Example: "Use this runbook if this alert fires."
triggeredbooleanread-only

Indicates if the Burn Alert has been triggered. This field is read-only and is set to true when the alert is triggered.

Example: false
created_atstring(date-time)read-only

The ISO8601-formatted time when the Burn Alert was created.

Example: "2022-09-22T17:32:11Z"
updated_atstring(date-time)read-only

The ISO8601-formatted time when the Burn Alert was updated.

Example: "2022-10-31T15:08:11Z"
alert_typestring

One of the supported alert types:

  1. exhaustion_time: Notifies when you are about to run out of SLO budget within a specified number of hours.
  2. budget_rate: Notifies when budget drops by at least a specified percentage within a defined time window.
Default "exhaustion_time"
Enum"exhaustion_time""budget_rate"
Example: "exhaustion_time"
exhaustion_minutesinteger>= 0

Required when alert_type is exhaustion_time.

Must not be specified when alert_type is budget_rate.

Amount of time (in minutes) left until your projected SLO budget is exhausted. The alert will fire when this exhaustion threshold is reached.

Example: 120
sloobject

Details about the SLO associated with the burn alert.

Example: {"id":"2LBq9LckbcA"}
recipientsArray of objects(NotificationRecipient)non-empty

A list of Recipients to notify when an alert fires. Using type+target is deprecated. First, create the Recipient via the Recipients API, and then specify the ID.

Example: [{"id":"abcd123","type":"email","target":"alerts@example.com"}]
Response
application/json
{ "id": "fS7vfB81Wcy", "description": "Use this runbook if this alert fires.", "triggered": false, "created_at": "2022-09-22T17:32:11Z", "updated_at": "2022-10-31T15:08:11Z", "alert_type": "exhaustion_time", "exhaustion_minutes": 120, "slo": { "id": "2LBq9LckbcA" }, "recipients": [ {} ] }

Update a Burn Alert

Request

Update a Burn Alert by specifying its ID and full details.

Path
datasetSlugstringrequired

The dataset slug.

burnAlertIdstringrequired

The unique identifier (ID) of a Burn Alert.

Bodyapplication/json
Any of:
descriptionstring<= 1023 characters

A description of the Burn Alert.

Example: "Use this runbook if this alert fires."
alert_typestring

One of the supported alert types:

  1. exhaustion_time: Notifies when you are about to run out of SLO budget within a specified number of hours.
  2. budget_rate: Notifies when budget drops by at least a specified percentage within a defined time window.
Default "exhaustion_time"
Enum"exhaustion_time""budget_rate"
Example: "exhaustion_time"
exhaustion_minutesinteger>= 0

Required when alert_type is exhaustion_time.

Must not be specified when alert_type is budget_rate.

Amount of time (in minutes) left until your projected SLO budget is exhausted. The alert will fire when this exhaustion threshold is reached.

Example: 120
recipientsArray of objects(NotificationRecipient)non-emptyrequired

A list of Recipients to notify when an alert fires. Using type+target is deprecated. First, create the Recipient via the Recipients API, and then specify the ID.

Example: [{"id":"abcd123","type":"email","target":"alerts@example.com"}]
recipients[].​idstring
recipients[].​detailsobject(NotificationRecipientDetails)
recipients[].​typestringDeprecated

One of the supported Recipient Types

Enum"pagerduty""email""slack""webhook""msteams""msteams_workflow"
recipients[].​targetstringDeprecated

The target of the notification. For example, the specific Slack channel or email address. For Recipients of type = "webhook" or type = "msteams_workflow", this will be the Name in the UI and webhook_name in the Recipients API. Deprecated: Use the Recipients API first, then pass the Recipient ID.

curl -i -X PUT \
  'https://api.honeycomb.io/1/burn_alerts/{datasetSlug}/{burnAlertId}' \
  -H 'Content-Type: application/json' \
  -H 'X-Honeycomb-Team: YOUR_API_KEY_HERE' \
  -d '{
    "description": "Use this runbook if this alert fires.",
    "alert_type": "exhaustion_time",
    "exhaustion_minutes": 120,
    "recipients": [
      {
        "id": "abcd123",
        "type": "email",
        "target": "alerts@example.com"
      }
    ]
  }'

Responses

Success

Bodyapplication/json
Any of:
idstringread-only

Unique identifier (ID) of a Burn alert.

Example: "fS7vfB81Wcy"
descriptionstring<= 1023 characters

A description of the Burn Alert.

Example: "Use this runbook if this alert fires."
triggeredbooleanread-only

Indicates if the Burn Alert has been triggered. This field is read-only and is set to true when the alert is triggered.

Example: false
created_atstring(date-time)read-only

The ISO8601-formatted time when the Burn Alert was created.

Example: "2022-09-22T17:32:11Z"
updated_atstring(date-time)read-only

The ISO8601-formatted time when the Burn Alert was updated.

Example: "2022-10-31T15:08:11Z"
alert_typestring

One of the supported alert types:

  1. exhaustion_time: Notifies when you are about to run out of SLO budget within a specified number of hours.
  2. budget_rate: Notifies when budget drops by at least a specified percentage within a defined time window.
Default "exhaustion_time"
Enum"exhaustion_time""budget_rate"
Example: "exhaustion_time"
exhaustion_minutesinteger>= 0

Required when alert_type is exhaustion_time.

Must not be specified when alert_type is budget_rate.

Amount of time (in minutes) left until your projected SLO budget is exhausted. The alert will fire when this exhaustion threshold is reached.

Example: 120
sloobject

Details about the SLO associated with the burn alert.

Example: {"id":"2LBq9LckbcA"}
recipientsArray of objects(NotificationRecipient)non-empty

A list of Recipients to notify when an alert fires. Using type+target is deprecated. First, create the Recipient via the Recipients API, and then specify the ID.

Example: [{"id":"abcd123","type":"email","target":"alerts@example.com"}]
Response
application/json
{ "id": "fS7vfB81Wcy", "description": "Use this runbook if this alert fires.", "triggered": false, "created_at": "2022-09-22T17:32:11Z", "updated_at": "2022-10-31T15:08:11Z", "alert_type": "exhaustion_time", "exhaustion_minutes": 120, "slo": { "id": "2LBq9LckbcA" }, "recipients": [ {} ] }

Delete a Burn Alert

Request

Delete a Burn Alert by specifying its ID.

Path
datasetSlugstringrequired

The dataset slug.

burnAlertIdstringrequired

The unique identifier (ID) of a Burn Alert.

curl -i -X DELETE \
  'https://api.honeycomb.io/1/burn_alerts/{datasetSlug}/{burnAlertId}' \
  -H 'X-Honeycomb-Team: YOUR_API_KEY_HERE'

Responses

Success - no content

Response

Team cannot access management APIs.

{ "error": "Your team has been denied access to Management APIs, please contact support to be unblocked." }

Columns

Columns are fields in the events you send to Honeycomb.

This API allows you to list, create, update, and delete columns in a dataset.

Operations

Authorization

The API key must have the Manage Queries and Columns permission. Learn more about API keys here.

Create a Column

Request

Create a column by providing corresponding details for that type.

Path
datasetSlugstringrequired

The dataset slug.

Bodyapplication/jsonrequired
key_namestring[ 1 .. 255 ] charactersrequired

Name of the Column.

Example: "my_column"
typestring

Type of the data that the Column will contain.

Default "string"
Enum"string""float""integer""boolean"
Example: "integer"
descriptionstring<= 255 characters

Column description.

Example: "An integer column"
hiddenboolean

If true, the column is excluded from autocomplete and raw data field lists.

Default false
curl -i -X POST \
  'https://api.honeycomb.io/1/columns/{datasetSlug}' \
  -H 'Content-Type: application/json' \
  -H 'X-Honeycomb-Team: YOUR_API_KEY_HERE' \
  -d '{
    "key_name": "my_column",
    "type": "integer",
    "description": "An integer column",
    "hidden": false
  }'

Responses

Success

Bodyapplication/json
key_namestring[ 1 .. 255 ] charactersread-onlyrequired

Name of the Column.

Example: "my_column"
typestring

Type of the data that the Column will contain.

Default "string"
Enum"string""float""integer""boolean"
Example: "integer"
descriptionstring<= 255 characters

Column description.

Example: "An integer column"
hiddenboolean

If true, the column is excluded from autocomplete and raw data field lists.

Default false
idstringread-only

Unique identifier (ID), returned in response bodies.

last_writtenstringread-only

ISO8601 formatted time the column was last written to (received event data).

created_atstringread-only

ISO8601 formatted time the column was created.

updated_atstringread-only

ISO8601 formatted time the column was updated.

Response
application/json
{ "id": "yUheCUmgZ8p", "key_name": "my_column", "hidden": false, "description": "An integer column", "type": "integer", "last_written": "2022-07-26T22:38:05Z", "created_at": "2022-07-26T22:38:04Z", "updated_at": "2022-07-26T22:38:04Z" }

List all Columns

Request

Get all the Columns in a dataset

Path
datasetSlugstringrequired

The dataset slug.

Query
key_namestring

the column key name

curl -i -X GET \
  'https://api.honeycomb.io/1/columns/{datasetSlug}?key_name=string' \
  -H 'X-Honeycomb-Team: YOUR_API_KEY_HERE'

Responses

When listing all columns, an array of Column objects will be returned. When using key_name, will return a single Column object if found.

Bodyapplication/json
One of:
Array [
key_namestring[ 1 .. 255 ] charactersread-onlyrequired

Name of the Column.

Example: "my_column"
typestring

Type of the data that the Column will contain.

Default "string"
Enum"string""float""integer""boolean"
Example: "integer"
descriptionstring<= 255 characters

Column description.

Example: "An integer column"
hiddenboolean

If true, the column is excluded from autocomplete and raw data field lists.

Default false
idstringread-only

Unique identifier (ID), returned in response bodies.

last_writtenstringread-only

ISO8601 formatted time the column was last written to (received event data).

created_atstringread-only

ISO8601 formatted time the column was created.

updated_atstringread-only

ISO8601 formatted time the column was updated.

]
Response
application/json

Lists all columns.

[ { "id": "yUheCUmgZ8p", "key_name": "my_column", "hidden": false, "description": "", "type": "integer", "last_written": "2022-07-26T22:38:05Z", "created_at": "2022-07-26T22:38:04Z", "updated_at": "2022-07-26T22:38:04Z" }, { "id": "yUheCUmgZ8q", "key_name": "other_column", "hidden": false, "description": "", "type": "string", "last_written": "2022-07-26T22:38:05Z", "created_at": "2022-07-26T22:38:04Z", "updated_at": "2022-07-26T22:38:04Z" } ]

Get a Column

Request

Path
datasetSlugstringrequired

The dataset slug.

columnIdstringrequired

Unique identifier (ID) of a column.

curl -i -X GET \
  'https://api.honeycomb.io/1/columns/{datasetSlug}/{columnId}' \
  -H 'X-Honeycomb-Team: YOUR_API_KEY_HERE'

Responses

Success

Bodyapplication/json
key_namestring[ 1 .. 255 ] charactersread-onlyrequired

Name of the Column.

Example: "my_column"
typestring

Type of the data that the Column will contain.

Default "string"
Enum"string""float""integer""boolean"
Example: "integer"
descriptionstring<= 255 characters

Column description.

Example: "An integer column"
hiddenboolean

If true, the column is excluded from autocomplete and raw data field lists.

Default false
idstringread-only

Unique identifier (ID), returned in response bodies.

last_writtenstringread-only

ISO8601 formatted time the column was last written to (received event data).

created_atstringread-only

ISO8601 formatted time the column was created.

updated_atstringread-only

ISO8601 formatted time the column was updated.

Response
application/json
{ "id": "yUheCUmgZ8p", "key_name": "my_column", "hidden": false, "description": "", "type": "integer", "last_written": "2022-07-26T22:38:05Z", "created_at": "2022-07-26T22:38:04Z", "updated_at": "2022-07-26T22:38:04Z" }

Update a Column

Request

Update a column

Path
datasetSlugstringrequired

The dataset slug.

columnIdstringrequired

Unique identifier (ID) of a column.

Bodyapplication/jsonrequired
typestring

Type of the data that the Column will contain.

Default "string"
Enum"string""float""integer""boolean"
Example: "integer"
descriptionstring<= 255 characters

Column description.

Example: "An integer column"
hiddenboolean

If true, the column is excluded from autocomplete and raw data field lists.

Default false
curl -i -X PUT \
  'https://api.honeycomb.io/1/columns/{datasetSlug}/{columnId}' \
  -H 'Content-Type: application/json' \
  -H 'X-Honeycomb-Team: YOUR_API_KEY_HERE' \
  -d '{
    "key_name": "my_column",
    "type": "integer",
    "description": "An integer column",
    "hidden": false
  }'

Responses

Success

Bodyapplication/json
key_namestring[ 1 .. 255 ] charactersread-onlyrequired

Name of the Column.

Example: "my_column"
typestring

Type of the data that the Column will contain.

Default "string"
Enum"string""float""integer""boolean"
Example: "integer"
descriptionstring<= 255 characters

Column description.

Example: "An integer column"
hiddenboolean

If true, the column is excluded from autocomplete and raw data field lists.

Default false
idstringread-only

Unique identifier (ID), returned in response bodies.

last_writtenstringread-only

ISO8601 formatted time the column was last written to (received event data).

created_atstringread-only

ISO8601 formatted time the column was created.

updated_atstringread-only

ISO8601 formatted time the column was updated.

Response
application/json
{ "id": "yUheCUmgZ8p", "key_name": "my_column", "hidden": false, "description": "", "type": "string", "last_written": "2022-07-26T22:38:05Z", "created_at": "2022-07-26T22:38:04Z", "updated_at": "2022-07-26T22:38:04Z" }

Delete a Column

Request

Delete a column. Note: Deleted columns are no longer queryable, but data in existing permalinks (query results and trace views) will remain stored and available at those links.

Path
datasetSlugstringrequired

The dataset slug.

columnIdstringrequired

Unique identifier (ID) of a column.

curl -i -X DELETE \
  'https://api.honeycomb.io/1/columns/{datasetSlug}/{columnId}' \
  -H 'X-Honeycomb-Team: YOUR_API_KEY_HERE'

Responses

Success - no content

Response
{ "status": 400, "type": "https://api.honeycomb.io/problems/unparseable", "title": "The request body could not be parsed.", "error": "invalid gzip data" }

Datasets

A Dataset represents a collection of related events that come from the same source, or are related to the same source.

This API allows you to list, create, and update datasets.

Operations

Authorization

The API key must have the Create Datasets permission. Learn more about API keys here.

Create a Dataset

Request

Create a Dataset in the environment associated with your API key. If a Dataset already exists by that name (or slug), then the existing dataset will be returned.

Bodyapplication/jsonrequired

The dataset will be created within the environment associated with your API key.

namestring[ 1 .. 255 ] charactersrequired

The name of the dataset.

descriptionstring[ 0 .. 1024 ] characters

A description for the dataset.

Default ""
Example: "A nice description of my dataset"
expand_json_depthinteger[ 0 .. 10 ]

The maximum unpacking depth of nested JSON fields.

Default 0
Example: 3
curl -i -X POST \
  https://api.honeycomb.io/1/datasets \
  -H 'Content-Type: application/json' \
  -H 'X-Honeycomb-Team: YOUR_API_KEY_HERE' \
  -d '{
    "name": "string",
    "description": "A nice description of my dataset",
    "expand_json_depth": 3
  }'

Responses

OK - Dataset already exists

Bodyapplication/json
namestring[ 1 .. 255 ] charactersrequired

The name of the dataset.

Example: "My Dataset!"
descriptionstring[ 0 .. 1024 ] characters

A description for the dataset.

Default ""
Example: "A nice description of my dataset"
settingsobject
expand_json_depthinteger[ 0 .. 10 ]

The maximum unpacking depth of nested JSON fields.

Default 0
Example: 3
slugstringread-only

The 'slug' of the dataset to be used in URLs.

Example: "my-dataset-"
regular_columns_countnull or integerread-only

The total number of unique fields for this Dataset. The value will be null if the dataset does not contain any fields yet.

Example: 100
last_written_atnull or stringread-only

The ISO8601-formatted time when the dataset last received event data. The value will be null if no data has been received yet.

Example: "2022-07-21T18:39:23Z"
created_atstringread-only

The ISO8601-formatted time when the dataset was created.

Example: "2022-09-22T17:32:11Z"
Response
application/json
{ "name": "My Dataset!", "description": "A nice description of my dataset", "settings": { "delete_protected": true }, "expand_json_depth": 3, "slug": "my-dataset-", "regular_columns_count": 100, "last_written_at": "2022-07-21T18:39:23Z", "created_at": "2022-09-22T17:32:11Z" }

List All Datasets

Request

Lists all Datasets for an environment. Note: For Honeycomb Classic users, all datasets in Classic are returned.

curl -i -X GET \
  https://api.honeycomb.io/1/datasets \
  -H 'X-Honeycomb-Team: YOUR_API_KEY_HERE'

Responses

Success

Bodyapplication/jsonArray [
namestring[ 1 .. 255 ] charactersrequired

The name of the dataset.

Example: "My Dataset!"
descriptionstring[ 0 .. 1024 ] characters

A description for the dataset.

Default ""
Example: "A nice description of my dataset"
settingsobject
expand_json_depthinteger[ 0 .. 10 ]

The maximum unpacking depth of nested JSON fields.

Default 0
Example: 3
slugstringread-only

The 'slug' of the dataset to be used in URLs.

Example: "my-dataset-"
regular_columns_countnull or integerread-only

The total number of unique fields for this Dataset. The value will be null if the dataset does not contain any fields yet.

Example: 100
last_written_atnull or stringread-only

The ISO8601-formatted time when the dataset last received event data. The value will be null if no data has been received yet.

Example: "2022-07-21T18:39:23Z"
created_atstringread-only

The ISO8601-formatted time when the dataset was created.

Example: "2022-09-22T17:32:11Z"
]
Response
application/json
[ { "name": "my dataset!", "description": "my dataset described!", "slug": "my-dataset-", "expand_json_depth": 2, "created_at": "2022-07-21T18:39:23Z", "last_written_at": "2022-07-22T19:52:00Z", "regular_columns_count": 12 }, { "name": "another dataset", "description": "", "slug": "another-dataset", "expand_json_depth": 0, "created_at": "2022-07-21T18:39:23Z", "last_written_at": "2022-07-22T19:52:00Z", "regular_columns_count": 98 } ]

Get a Dataset

Request

Get a single Dataset by slug.

Path
datasetSlugstringrequired

The dataset slug.

curl -i -X GET \
  'https://api.honeycomb.io/1/datasets/{datasetSlug}' \
  -H 'X-Honeycomb-Team: YOUR_API_KEY_HERE'

Responses

Success

Bodyapplication/json
namestring[ 1 .. 255 ] charactersrequired

The name of the dataset.

Example: "My Dataset!"
descriptionstring[ 0 .. 1024 ] characters

A description for the dataset.

Default ""
Example: "A nice description of my dataset"
settingsobject
expand_json_depthinteger[ 0 .. 10 ]

The maximum unpacking depth of nested JSON fields.

Default 0
Example: 3
slugstringread-only

The 'slug' of the dataset to be used in URLs.

Example: "my-dataset-"
regular_columns_countnull or integerread-only

The total number of unique fields for this Dataset. The value will be null if the dataset does not contain any fields yet.

Example: 100
last_written_atnull or stringread-only

The ISO8601-formatted time when the dataset last received event data. The value will be null if no data has been received yet.

Example: "2022-07-21T18:39:23Z"
created_atstringread-only

The ISO8601-formatted time when the dataset was created.

Example: "2022-09-22T17:32:11Z"
Response
application/json
{ "name": "My Dataset!", "description": "A nice description of my dataset", "settings": { "delete_protected": true }, "expand_json_depth": 3, "slug": "my-dataset-", "regular_columns_count": 100, "last_written_at": "2022-07-21T18:39:23Z", "created_at": "2022-09-22T17:32:11Z" }

Delete a Dataset

Request

Deletes the Dataset. This is an irreversible operation. It may take several minutes for the deletion process to complete.

WARNING: This endpoint will allow anyone with an API key that has the manage dataset permission to delete any dataset in the environment (or any dataset in the whole team for Classic customers).

Datasets with Deletion Protection enabled cannot be deleted.

To delete a Dataset with Deletion Protection enabled, first disable Deletion Protection by updating the Dataset with settings.delete_protected = false.

Path
datasetSlugstringrequired

The dataset slug.

curl -i -X DELETE \
  'https://api.honeycomb.io/1/datasets/{datasetSlug}' \
  -H 'X-Honeycomb-Team: YOUR_API_KEY_HERE'

Responses

Deleted

Bodyapplication/json
Response
application/json
null

Update a Dataset

Request

Update a Dataset's settings.

Path
datasetSlugstringrequired

The dataset slug.

Bodyapplication/json

Update a Dataset's settings. All fields must be specified, as omitting one will have the effect of reverting the setting to the default.

descriptionstring[ 0 .. 1024 ] charactersrequired

A description for the dataset.

Default ""
Example: "A nice description of my dataset"
expand_json_depthinteger[ 0 .. 10 ]required

The maximum unpacking depth of nested JSON fields.

Default 0
Example: 3
settingsobject
curl -i -X PUT \
  'https://api.honeycomb.io/1/datasets/{datasetSlug}' \
  -H 'Content-Type: application/json' \
  -H 'X-Honeycomb-Team: YOUR_API_KEY_HERE' \
  -d '{
    "expand_json_depth": 3,
    "description": "my updated description",
    "settings": {
      "delete_protected": false
    }
  }'

Responses

Updated

Bodyapplication/json
namestring[ 1 .. 255 ] charactersrequired

The name of the dataset.

Example: "My Dataset!"
descriptionstring[ 0 .. 1024 ] characters

A description for the dataset.

Default ""
Example: "A nice description of my dataset"
settingsobject
expand_json_depthinteger[ 0 .. 10 ]

The maximum unpacking depth of nested JSON fields.

Default 0
Example: 3
slugstringread-only

The 'slug' of the dataset to be used in URLs.

Example: "my-dataset-"
regular_columns_countnull or integerread-only

The total number of unique fields for this Dataset. The value will be null if the dataset does not contain any fields yet.

Example: 100
last_written_atnull or stringread-only

The ISO8601-formatted time when the dataset last received event data. The value will be null if no data has been received yet.

Example: "2022-07-21T18:39:23Z"
created_atstringread-only

The ISO8601-formatted time when the dataset was created.

Example: "2022-09-22T17:32:11Z"
Response
application/json
{ "name": "My Dataset!", "slug": "my-dataset-", "description": "my updated description", "settings": { "delete_protected": false }, "expand_json_depth": 3, "created_at": "2022-07-21T18:39:23Z", "last_written_at": "2022-09-22T17:32:03Z", "regular_columns_count": 100 }

Dataset Definitions

Dataset definitions describe the fields with special meaning in the Dataset.

Refer to the Dataset Definitions documentation for more information.

Honeycomb automatically creates these Dataset definition fields when the Dataset is created. Manual creation of Dataset definitions is not needed.

Operations

Authorization

The API key must have the Create Datasets permission. Learn more about API keys here.

Set or Update Dataset Definitions

Request

Set or update one or more definitions for a Dataset. Note: While the PATCH payload can include the column_type, Honeycomb does not use this field when updating Dataset Definitions.

Path
datasetSlugstringrequired

The dataset slug.

Bodyapplication/jsonrequired

The PATCH payload takes a map of Dataset definition type to Dataset definition. Fields not defined in the request are not modified on the server. Note: In order to CLEAR a column of a Dataset definition set the column’s name field to an empty string.

span_idnull or object

The unique identifier (ID) for each span.

trace_idnull or object

The ID of the trace this span belongs to.

parent_idnull or object

The Parent Span ID - The ID of this span's parent span, the call location the current span was called from.

namenull or object

The name of the function or method where the span was created.

service_namenull or object

The name of the instrumented service.

duration_msnull or object

Span Duration - How much time the span took, in milliseconds.

span_kindnull or object

Metadata: Kind - The kind of Span. For example, client or server. The use of this field to identify Span Events and Links is deprecated. Use the field Metadata: Annotation Type.

annotation_typenull or object

Metadata: Annotation Type - The type of span annotation. For example, span_event or link. This lets Honeycomb visualize this type of event differently in a trace. Do not use this field for other purposes.

link_span_idnull or object

Metadata: Link Span ID - Links let you tie traces and spans to one another. The Link Span ID lets you link to a different span (when used with Link Trace ID).

link_trace_idnull or object

Metadata: Link Trace ID - Links let you tie traces and spans to one another. The Link Trace Id lets you link to a different trace or a different span in the same trace (when used with Link Span ID).

errornull or object

Use a Boolean or String to indicate error.

statusnull or object

Indicates the success, failure, or other status of a request.

routenull or object

The HTTP URL or equivalent route processed by the request.

usernull or object

The user making the request in the system.

log_severitynull or object

Severity level of the event (also known as log level). Supported values: trace, debug, info, warn, error, fatal, unspecified.

log_messagenull or object

A value containing the log event message. Can be a human-readable string message (including multi-line) describing the event in a free form.

curl -i -X PATCH \
  'https://api.honeycomb.io/1/dataset_definitions/{datasetSlug}' \
  -H 'Content-Type: application/json' \
  -H 'X-Honeycomb-Team: YOUR_API_KEY_HERE' \
  -d '{
    "duration_ms": {
      "name": "duration_we_send",
      "column_type": "derived_column"
    }
  }'

Responses

Dataset Definitions have been updated

Bodyapplication/json
span_idnull or object

The unique identifier (ID) for each span.

trace_idnull or object

The ID of the trace this span belongs to.

parent_idnull or object

The Parent Span ID - The ID of this span's parent span, the call location the current span was called from.

namenull or object

The name of the function or method where the span was created.

service_namenull or object

The name of the instrumented service.

duration_msnull or object

Span Duration - How much time the span took, in milliseconds.

span_kindnull or object

Metadata: Kind - The kind of Span. For example, client or server. The use of this field to identify Span Events and Links is deprecated. Use the field Metadata: Annotation Type.

annotation_typenull or object

Metadata: Annotation Type - The type of span annotation. For example, span_event or link. This lets Honeycomb visualize this type of event differently in a trace. Do not use this field for other purposes.

link_span_idnull or object

Metadata: Link Span ID - Links let you tie traces and spans to one another. The Link Span ID lets you link to a different span (when used with Link Trace ID).

link_trace_idnull or object

Metadata: Link Trace ID - Links let you tie traces and spans to one another. The Link Trace Id lets you link to a different trace or a different span in the same trace (when used with Link Span ID).

errornull or object

Use a Boolean or String to indicate error.

statusnull or object

Indicates the success, failure, or other status of a request.

routenull or object

The HTTP URL or equivalent route processed by the request.

usernull or object

The user making the request in the system.

log_severitynull or object

Severity level of the event (also known as log level). Supported values: trace, debug, info, warn, error, fatal, unspecified.

log_messagenull or object

A value containing the log event message. Can be a human-readable string message (including multi-line) describing the event in a free form.

Response
application/json
{ "duration_ms": { "name": "duration_ms", "column_type": "column" }, "error": null, "name": null, "parent_id": null, "route": null, "service_name": null, "span_id": { "name": "my_span_id", "column_type": "column" }, "span_kind": null, "annotation_type": null, "link_trace_id": null, "link_span_id": null, "status": null, "trace_id": null, "user": null, "log_severity": null, "log_message": null }

Get all Dataset Definitions

Request

Get all definitions for a Dataset. The response returns an object with a Dataset Definition for each set Dataset Definition type.

Path
datasetSlugstringrequired

The dataset slug.

curl -i -X GET \
  'https://api.honeycomb.io/1/dataset_definitions/{datasetSlug}' \
  -H 'X-Honeycomb-Team: YOUR_API_KEY_HERE'

Responses

Success

Bodyapplication/json
span_idnull or object

The unique identifier (ID) for each span.

trace_idnull or object

The ID of the trace this span belongs to.

parent_idnull or object

The Parent Span ID - The ID of this span's parent span, the call location the current span was called from.

namenull or object

The name of the function or method where the span was created.

service_namenull or object

The name of the instrumented service.

duration_msnull or object

Span Duration - How much time the span took, in milliseconds.

span_kindnull or object

Metadata: Kind - The kind of Span. For example, client or server. The use of this field to identify Span Events and Links is deprecated. Use the field Metadata: Annotation Type.

annotation_typenull or object

Metadata: Annotation Type - The type of span annotation. For example, span_event or link. This lets Honeycomb visualize this type of event differently in a trace. Do not use this field for other purposes.

link_span_idnull or object

Metadata: Link Span ID - Links let you tie traces and spans to one another. The Link Span ID lets you link to a different span (when used with Link Trace ID).

link_trace_idnull or object

Metadata: Link Trace ID - Links let you tie traces and spans to one another. The Link Trace Id lets you link to a different trace or a different span in the same trace (when used with Link Span ID).

errornull or object

Use a Boolean or String to indicate error.

statusnull or object

Indicates the success, failure, or other status of a request.

routenull or object

The HTTP URL or equivalent route processed by the request.

usernull or object

The user making the request in the system.

log_severitynull or object

Severity level of the event (also known as log level). Supported values: trace, debug, info, warn, error, fatal, unspecified.

log_messagenull or object

A value containing the log event message. Can be a human-readable string message (including multi-line) describing the event in a free form.

Response
application/json
{ "duration_ms": { "name": "duration_ms", "column_type": "column" }, "error": null, "name": null, "parent_id": null, "route": null, "service_name": null, "span_id": { "name": "my_span_id", "column_type": "column" }, "span_kind": null, "annotation_type": null, "link_trace_id": null, "link_span_id": null, "status": null, "trace_id": null, "user": null, "log_severity": null, "log_message": null }

Derived Columns

Derived columns allow you to run queries based on the value of an expression that is derived from the columns in an event.

This API allows you to list, create, update, and delete derived columns in a dataset or across a whole environment, paralleling the behavior of the Schema tab within a Dataset's or Environment's Settings UI.

Operations

Authorization

The API key must have the Manage Queries and Columns permission. Learn more about API keys here.

Create a Derived Column

Request

Create a derived column. Derived columns allow you to run queries based on the value of an expression that is derived from the columns in an event.

Path
datasetSlugstringrequired

The dataset slug or use __all__ for endpoints that support environment-wide operations.

Bodyapplication/jsonrequired
aliasstring[ 1 .. 255 ] charactersrequired

The human-readable name of the derived column, as it will be referenced when building queries.

expressionstring[ 1 .. 4095 ] charactersrequired
descriptionstring<= 255 characters

A human-readable description for the derived column that displays in the UI.

Default ""
curl -i -X POST \
  'https://api.honeycomb.io/1/derived_columns/{datasetSlug}' \
  -H 'Content-Type: application/json' \
  -H 'X-Honeycomb-Team: YOUR_API_KEY_HERE' \
  -d '{
    "alias": "string",
    "expression": "string",
    "description": ""
  }'

Responses

Success

Bodyapplication/json
idstringread-onlyrequired

Unique identifier (ID), returned in response bodies.

aliasstring[ 1 .. 255 ] charactersrequired

The human-readable name of the derived column, as it will be referenced when building queries.

expressionstring[ 1 .. 4095 ] charactersrequired
descriptionstring<= 255 characters

A human-readable description for the derived column that displays in the UI.

Default ""
created_atstringread-onlyrequired

ISO8601 formatted time when the column was created.

updated_atstringread-onlyrequired

ISO8601 formatted time when the column was updated.

Response
application/json
{ "id": "yUheCUmgZ8p", "alias": "one", "description": "just one", "expression": "INT(1)", "created_at": "2022-07-26T22:38:04Z", "updated_at": "2022-11-16T17:34:01Z" }

List all Derived Columns

Request

Get all the Derived Columns in a dataset or environment. With the ?alias=X query parameter, can return a single derived column by its alias.

Path
datasetSlugstringrequired

The dataset slug or use __all__ for endpoints that support environment-wide operations.

Query
aliasstring

The derived column alias.

curl -i -X GET \
  'https://api.honeycomb.io/1/derived_columns/{datasetSlug}?alias=string' \
  -H 'X-Honeycomb-Team: YOUR_API_KEY_HERE'

Responses

When listing all columns, an array of DerivedColumn objects will be returned. When using key_name, will return a single DerivedColumn object if found.

Bodyapplication/json
One of:
Array [
idstringread-onlyrequired

Unique identifier (ID), returned in response bodies.

aliasstring[ 1 .. 255 ] charactersrequired

The human-readable name of the derived column, as it will be referenced when building queries.

expressionstring[ 1 .. 4095 ] charactersrequired
descriptionstring<= 255 characters

A human-readable description for the derived column that displays in the UI.

Default ""
created_atstringread-onlyrequired

ISO8601 formatted time when the column was created.

updated_atstringread-onlyrequired

ISO8601 formatted time when the column was updated.

]
Response
application/json
[]

Get a Derived Column

Request

Path
datasetSlugstringrequired

The dataset slug or use __all__ for endpoints that support environment-wide operations.

derivedColumnIdstringrequired

Unique identifier (ID) of a derived column.

curl -i -X GET \
  'https://api.honeycomb.io/1/derived_columns/{datasetSlug}/{derivedColumnId}' \
  -H 'X-Honeycomb-Team: YOUR_API_KEY_HERE'

Responses

Success

Bodyapplication/json
idstringread-onlyrequired

Unique identifier (ID), returned in response bodies.

aliasstring[ 1 .. 255 ] charactersrequired

The human-readable name of the derived column, as it will be referenced when building queries.

expressionstring[ 1 .. 4095 ] charactersrequired
descriptionstring<= 255 characters

A human-readable description for the derived column that displays in the UI.

Default ""
created_atstringread-onlyrequired

ISO8601 formatted time when the column was created.

updated_atstringread-onlyrequired

ISO8601 formatted time when the column was updated.

Response
application/json
{ "id": "yUheCUmgZ8p", "alias": "one", "description": "just one", "expression": "INT(1)", "created_at": "2022-07-26T22:38:04Z", "updated_at": "2022-11-16T17:34:01Z" }

Update a Derived Column

Request

Update a derived column.

Path
datasetSlugstringrequired

The dataset slug or use __all__ for endpoints that support environment-wide operations.

derivedColumnIdstringrequired

Unique identifier (ID) of a derived column.

Bodyapplication/jsonrequired
aliasstring[ 1 .. 255 ] charactersrequired

The human-readable name of the derived column, as it will be referenced when building queries.

expressionstring[ 1 .. 4095 ] charactersrequired
descriptionstring<= 255 characters

A human-readable description for the derived column that displays in the UI.

Default ""
curl -i -X PUT \
  'https://api.honeycomb.io/1/derived_columns/{datasetSlug}/{derivedColumnId}' \
  -H 'Content-Type: application/json' \
  -H 'X-Honeycomb-Team: YOUR_API_KEY_HERE' \
  -d '{
    "alias": "string",
    "expression": "string",
    "description": ""
  }'

Responses

Success

Bodyapplication/json
idstringread-onlyrequired

Unique identifier (ID), returned in response bodies.

aliasstring[ 1 .. 255 ] charactersrequired

The human-readable name of the derived column, as it will be referenced when building queries.

expressionstring[ 1 .. 4095 ] charactersrequired
descriptionstring<= 255 characters

A human-readable description for the derived column that displays in the UI.

Default ""
created_atstringread-onlyrequired

ISO8601 formatted time when the column was created.

updated_atstringread-onlyrequired

ISO8601 formatted time when the column was updated.

Response
application/json
{ "id": "string", "alias": "string", "expression": "string", "description": "", "created_at": "string", "updated_at": "string" }

Delete a Derived Column

Request

Delete a derived column. Note: A Derived Column used by a SLO, Trigger, or Board cannot be deleted without removing or modifying the SLO, Trigger, or Board first.

Path
datasetSlugstringrequired

The dataset slug or use __all__ for endpoints that support environment-wide operations.

derivedColumnIdstringrequired

Unique identifier (ID) of a derived column.

curl -i -X DELETE \
  'https://api.honeycomb.io/1/derived_columns/{datasetSlug}/{derivedColumnId}' \
  -H 'X-Honeycomb-Team: YOUR_API_KEY_HERE'

Responses

Success - no content

Response
{ "status": 400, "type": "https://api.honeycomb.io/problems/unparseable", "title": "The request body could not be parsed.", "error": "invalid gzip data" }

Events

The Events API endpoints are the lowest-level way to send Events to Honeycomb. This should be your last resort!

If unsure where to start when instrumenting an application, read about how to Send Data to Honeycomb.

If you are building a tracing or metrics library, we recommend using OpenTelemetry.

Operations

Authorization

It is recommended that an Ingest API key is used for sending events.

A Configuration API key will work, and must have the Send Events permission. Learn more about API keys here.

Create Events

Request

Supports batch creation of events.

Dataset names are case insensitive. POST requests to "MyDatasET" will land in the same dataset as "mydataset". Names may contain URL-encoded spaces or other special characters, but not URL-encoded slashes. For example, "My%20Dataset" will show up in the UI as "My Dataset".

The first event received for a dataset determines the casing of the displayed name. All subsequent variations in casing will use the originally specified case.

Path
datasetSlugstringrequired

The dataset slug.

Headers
Content-Encodingstring

Included when sending events in a file. Size limitations may be addressed by compressing request bodies with gzip or zstd compression. Be sure to set the Content-Encoding to gzip or zst.

Enum"gzip""zst"
Example: gzip
Bodyrequired

The array should contain one or more JSON objects representing Events. Each Event contains its payload under the data key. Values of time and/or samplerate can be included as well.

The JSON payload should have the structure:

[{ "data": { "key1": "value1", "key2": 2.0 } }, ... ]

Size limitations may be addressed by compressing request bodies with gzip or zstd compression.

An empty 202 response indicates that the event has been queued for processing.

string(binary)
curl -i -X POST \
  'https://api.honeycomb.io/1/batch/{datasetSlug}' \
  -H 'Content-Encoding: gzip' \
  -H 'Content-Type: application/octet-stream' \
  -H 'X-Honeycomb-Team: YOUR_API_KEY_HERE' \
  -d string

Responses

Enqueued for processing

Bodyapplication/jsonArray [
statusnumber
errorstring
]
Response
application/json
[ { "status": 202 }, { "status": 400, "error": "Request body should not be empty." }, { "status": 400, "error": "Event has too many columns." }, { "status": 400, "error": "Request body is malformed and cannot be read." } ]

Create an Event

Request

Using this endpoint for anything more than testing is highly discouraged.

Sending events in batches will be much more efficient and should be preferred if at all possible.

Path
datasetSlugstringrequired

The dataset slug.

Headers
X-Honeycomb-Event-Timeinteger

The Event's timestamp. Optional. Defaults to server time.

X-Honeycomb-Samplerateinteger

Optional. Defaults to 1.

Bodyapplication/jsonrequired

The request body is limited to raw (potentially compressed) size of 100KB.

The maximum number of distinct columns (fields) allowed in an event is 2000.

property name*string or number or boolean[ 1 .. 2000 ] itemsadditional property

A collection of key-value properties that represent the Event. Honeycomb supports basic data types for the values of each Event attribute.

Limits

  • 2,000 fields per event. The entire event must be less than 100KB of uncompressed JSON.
  • String Fields: Each string field has a maximum length of 64KB.
  • Number Fields: Integers and Floats are both 64-bit.
curl -i -X POST \
  'https://api.honeycomb.io/1/events/{datasetSlug}' \
  -H 'Content-Type: application/json' \
  -H 'X-Honeycomb-Event-Time: 0' \
  -H 'X-Honeycomb-Samplerate: 0' \
  -H 'X-Honeycomb-Team: YOUR_API_KEY_HERE' \
  -d '{
    "method": "GET",
    "endpoint": "/foo",
    "shard": "users",
    "duration_ms": 32
  }'

Responses

Enqueued for processing

Response
application/json

The body is empty, or blank.

{ "error": "Request body should not be empty." }

Environments

This API allows you to list, create, and update, and delete Environments.

Operations

Key Management

This API allows you to list, create, update, and delete API Keys for a Team.

Operations

Kinesis Events

The Kinesis Events API endpoints allow Honeycomb to process streaming events from Amazon Kinesis.

Refer to the Honeycomb AWS integrations documentation for more information.

Operations

Authorization

It is recommended that an Ingest API key is used for sending events.

A Configuration API key will work, and must have the Send Events permission. Learn more about API keys here.

Create Kinesis Events

Request

This endpoint processes events and metrics coming from AWS through Kinesis Firehose.

Path
datasetSlugstringrequired

The dataset slug.

Headers
X-Amz-Firehose-Request-Idstringrequired

AWS Request ID associated with the Kinesis Firehose.

Example: 33658b45-a8f1-4007-92e8-f601ae33db14
Bodyapplication/jsonrequired

The request body expected from Amazon Kinesis Firehose. Events and metrics have the same shape but the base64 encoded data blob for metrics is expected to be Protowire-encoded as well. CloudWatch Logs data coming through Amazon Kinesis Firehose is expected to have a gzip Content-Encoding.

requestIdstring
timestampinteger
recordsArray of objects(KinesisEventRecord)
curl -i -X POST \
  'https://api.honeycomb.io/1/kinesis_events/{datasetSlug}' \
  -H 'Content-Type: application/json' \
  -H 'X-Amz-Firehose-Access-Key: YOUR_API_KEY_HERE' \
  -H 'X-Amz-Firehose-Request-Id: string' \
  -d '{
    "requestId": "string",
    "timestamp": 0,
    "records": [
      {
        "data": "string"
      }
    ]
  }'

Responses

Events queued for processing

Bodyapplication/json
requestIdstring
timestampinteger
errorMessagestring
Response
application/json
{ "requestId": "string", "timestamp": 0, "errorMessage": "string" }

Markers

Markers indicate points in time on graphs where interesting things happen, such as deploys or outages.

This API allows you to list, create, update, and delete Markers.

Operations

Authorization

The API key must have the Manage Markers permission. Learn more about API keys here.

Create a Marker

Request

Create a Marker in the specified dataset. To create an environment marker, use the __all__ keyword and an API key associated with the desired environment.

Path
datasetSlugstringrequired

The dataset slug or use __all__ for endpoints that support environment-wide operations.

Bodyapplication/jsonrequired

The marker body can include as many of the Marker fields as desired.

start_timeinteger

Indicates the time the Marker should be placed. If missing, defaults to the time the request arrives. Expressed in Unix Time.

Example: 1471040808
end_timeinteger

Specifies end time, and allows a Marker to be recorded as representing a time range, such as a 5 minute deploy. Expressed in Unix Time.

Example: 1668453920
messagestring

A message to describe this specific Marker.

Example: "backend deploy #123"
typestring

Groups similar Markers. For example, deploys. All Markers of the same type appear with the same color on the graph. Refer to the Marker Settings API for altering the color of each type.

Example: "deploy"
urlstring

A target for the marker. Clicking the marker text will take you to this URL.

Example: "http://link-to-build.here"
curl -i -X POST \
  'https://api.honeycomb.io/1/markers/{datasetSlug}' \
  -H 'Content-Type: application/json' \
  -H 'X-Honeycomb-Team: YOUR_API_KEY_HERE' \
  -d '{
    "start_time": 1471040808,
    "end_time": 1668453920,
    "message": "backend deploy #123",
    "type": "deploy",
    "url": "http://link-to-build.here"
  }'

Responses

Created

Bodyapplication/json
start_timeinteger

Indicates the time the Marker should be placed. If missing, defaults to the time the request arrives. Expressed in Unix Time.

Example: 1471040808
end_timeinteger

Specifies end time, and allows a Marker to be recorded as representing a time range, such as a 5 minute deploy. Expressed in Unix Time.

Example: 1668453920
messagestring

A message to describe this specific Marker.

Example: "backend deploy #123"
typestring

Groups similar Markers. For example, deploys. All Markers of the same type appear with the same color on the graph. Refer to the Marker Settings API for altering the color of each type.

Example: "deploy"
urlstring

A target for the marker. Clicking the marker text will take you to this URL.

Example: "http://link-to-build.here"
idstringread-only

A 6 character hexadecimal string assigned on Marker creation.

created_atstringread-only

The ISO8601-formatted time when the Marker was created.

updated_atstringread-only

The ISO8601-formatted time when the Marker was updated.

colorstringread-only

Color can be assigned to Markers using the Marker Settings endpoint. This field will be populated when List All Markers is called.

Response
application/json
{ "created_at": "2016-08-13T05:39:42Z", "updated_at": "2016-08-13T05:39:42Z", "start_time": 1471040808, "message": "backend deploy #123", "type": "deploy", "id": "d1c84ec0" }

List All Markers

Request

Lists all Markers for a dataset.

Path
datasetSlugstringrequired

The dataset slug or use __all__ for endpoints that support environment-wide operations.

curl -i -X GET \
  'https://api.honeycomb.io/1/markers/{datasetSlug}' \
  -H 'X-Honeycomb-Team: YOUR_API_KEY_HERE'

Responses

Success

Bodyapplication/jsonArray [
start_timeinteger

Indicates the time the Marker should be placed. If missing, defaults to the time the request arrives. Expressed in Unix Time.

Example: 1471040808
end_timeinteger

Specifies end time, and allows a Marker to be recorded as representing a time range, such as a 5 minute deploy. Expressed in Unix Time.

Example: 1668453920
messagestring

A message to describe this specific Marker.

Example: "backend deploy #123"
typestring

Groups similar Markers. For example, deploys. All Markers of the same type appear with the same color on the graph. Refer to the Marker Settings API for altering the color of each type.

Example: "deploy"
urlstring

A target for the marker. Clicking the marker text will take you to this URL.

Example: "http://link-to-build.here"
idstringread-only

A 6 character hexadecimal string assigned on Marker creation.

created_atstringread-only

The ISO8601-formatted time when the Marker was created.

updated_atstringread-only

The ISO8601-formatted time when the Marker was updated.

colorstringread-only

Color can be assigned to Markers using the Marker Settings endpoint. This field will be populated when List All Markers is called.

]
Response
application/json
[ { "created_at": "2016-08-13T05:39:42Z", "updated_at": "2016-08-13T05:39:42Z", "start_time": 1471040808, "message": "backend deploy #123", "type": "deploy", "id": "d1c84ec0" }, { "created_at": "2016-08-14T05:39:42Z", "updated_at": "2016-08-14T05:39:42Z", "start_time": 1471040808, "message": "frontend deploy #123", "type": "deploy", "id": "c2b52fa0" } ]

Update a Marker

Request

Update a Marker in the specified dataset. To update an environment marker, use the __all__ keyword and an API key associated with the desired environment.

Path
datasetSlugstringrequired

The dataset slug or use __all__ for endpoints that support environment-wide operations.

markerIdstringrequired

The unique identifier (ID) of a Marker.

Bodyapplication/jsonrequired

If an existing field is not included in the payload, it will be erased.

start_timeinteger

Indicates the time the Marker should be placed. If missing, defaults to the time the request arrives. Expressed in Unix Time.

Example: 1471040808
end_timeinteger

Specifies end time, and allows a Marker to be recorded as representing a time range, such as a 5 minute deploy. Expressed in Unix Time.

Example: 1668453920
messagestring

A message to describe this specific Marker.

Example: "backend deploy #123"
typestring

Groups similar Markers. For example, deploys. All Markers of the same type appear with the same color on the graph. Refer to the Marker Settings API for altering the color of each type.

Example: "deploy"
urlstring

A target for the marker. Clicking the marker text will take you to this URL.

Example: "http://link-to-build.here"
curl -i -X PUT \
  'https://api.honeycomb.io/1/markers/{datasetSlug}/{markerId}' \
  -H 'Content-Type: application/json' \
  -H 'X-Honeycomb-Team: YOUR_API_KEY_HERE' \
  -d '{
    "start_time": 1471040808,
    "end_time": 1668453920,
    "message": "backend deploy #123",
    "type": "deploy",
    "url": "http://link-to-build.here"
  }'

Responses

Updated

Bodyapplication/json
start_timeinteger

Indicates the time the Marker should be placed. If missing, defaults to the time the request arrives. Expressed in Unix Time.

Example: 1471040808
end_timeinteger

Specifies end time, and allows a Marker to be recorded as representing a time range, such as a 5 minute deploy. Expressed in Unix Time.

Example: 1668453920
messagestring

A message to describe this specific Marker.

Example: "backend deploy #123"
typestring

Groups similar Markers. For example, deploys. All Markers of the same type appear with the same color on the graph. Refer to the Marker Settings API for altering the color of each type.

Example: "deploy"
urlstring

A target for the marker. Clicking the marker text will take you to this URL.

Example: "http://link-to-build.here"
idstringread-only

A 6 character hexadecimal string assigned on Marker creation.

created_atstringread-only

The ISO8601-formatted time when the Marker was created.

updated_atstringread-only

The ISO8601-formatted time when the Marker was updated.

colorstringread-only

Color can be assigned to Markers using the Marker Settings endpoint. This field will be populated when List All Markers is called.

Response
application/json
{ "created_at": "2016-08-13T05:39:42Z", "updated_at": "2016-08-13T05:39:42Z", "start_time": 1471040808, "message": "backend deploy #123", "type": "deploy", "id": "d1c84ec0" }

Delete a Marker

Request

Path
datasetSlugstringrequired

The dataset slug or use __all__ for endpoints that support environment-wide operations.

markerIdstringrequired

The unique identifier (ID) of a Marker.

curl -i -X DELETE \
  'https://api.honeycomb.io/1/markers/{datasetSlug}/{markerId}' \
  -H 'X-Honeycomb-Team: YOUR_API_KEY_HERE'

Responses

Success The deleted Marker will be in the body of the response.

Bodyapplication/json
start_timeinteger

Indicates the time the Marker should be placed. If missing, defaults to the time the request arrives. Expressed in Unix Time.

Example: 1471040808
end_timeinteger

Specifies end time, and allows a Marker to be recorded as representing a time range, such as a 5 minute deploy. Expressed in Unix Time.

Example: 1668453920
messagestring

A message to describe this specific Marker.

Example: "backend deploy #123"
typestring

Groups similar Markers. For example, deploys. All Markers of the same type appear with the same color on the graph. Refer to the Marker Settings API for altering the color of each type.

Example: "deploy"
urlstring

A target for the marker. Clicking the marker text will take you to this URL.

Example: "http://link-to-build.here"
idstringread-only

A 6 character hexadecimal string assigned on Marker creation.

created_atstringread-only

The ISO8601-formatted time when the Marker was created.

updated_atstringread-only

The ISO8601-formatted time when the Marker was updated.

colorstringread-only

Color can be assigned to Markers using the Marker Settings endpoint. This field will be populated when List All Markers is called.

Response
application/json
{ "created_at": "2016-08-13T05:39:42Z", "updated_at": "2016-08-13T05:39:42Z", "start_time": 1471040808, "message": "backend deploy #123", "type": "deploy", "id": "d1c84ec0" }

Marker Settings

Marker Settings apply to groups of similar Markers. For example, "deploys" markers appear with the same color on a graph.

This API allows you to list, create, update, and delete Marker Settings.

Operations

Authorization

The API key must have the Manage Markers permission. Learn more about API keys here.

Create a Marker Setting

Request

Path
datasetSlugstringrequired

The dataset slug or use __all__ for endpoints that support environment-wide operations.

Bodyapplication/jsonrequired
typestringrequired

Groups similar Markers. For example, 'deploys'. All Markers of the same type appears with the same color on the graph.

Example: "deploy"
colorstringrequired

Color to use for display of this marker type. Specified as hexadecimal RGB. For example, "#F96E11".

Example: "#7b1fa2"
curl -i -X POST \
  'https://api.honeycomb.io/1/marker_settings/{datasetSlug}' \
  -H 'Content-Type: application/json' \
  -H 'X-Honeycomb-Team: YOUR_API_KEY_HERE' \
  -d '{
    "type": "deploy",
    "color": "#7b1fa2"
  }'

Responses

Success

Bodyapplication/json
typestringrequired

Groups similar Markers. For example, 'deploys'. All Markers of the same type appears with the same color on the graph.

Example: "deploy"
colorstringrequired

Color to use for display of this marker type. Specified as hexadecimal RGB. For example, "#F96E11".

Example: "#7b1fa2"
idstringread-only

The unique identifier (ID) for the Marker Setting.

Example: "gwAHiE5TS4j"
created_atstringread-only

The ISO8601-formatted time when the Marker Setting was created.

Example: "2022-09-15T05:39:42Z"
updated_atnull or stringread-only

The ISO8601-formatted time when the Marker Setting was updated.

Example: "2022-12-15T04:25:14Z"
Response
application/json
{ "type": "deploy", "color": "#7b1fa2", "id": "gwAHiE5TS4j", "created_at": "2022-09-15T05:39:42Z", "updated_at": "2022-12-15T04:25:14Z" }

Get a Marker Setting

Request

Path
datasetSlugstringrequired

The dataset slug or use __all__ for endpoints that support environment-wide operations.

curl -i -X GET \
  'https://api.honeycomb.io/1/marker_settings/{datasetSlug}' \
  -H 'X-Honeycomb-Team: YOUR_API_KEY_HERE'

Responses

Success

Bodyapplication/jsonArray [
typestringrequired

Groups similar Markers. For example, 'deploys'. All Markers of the same type appears with the same color on the graph.

Example: "deploy"
colorstringrequired

Color to use for display of this marker type. Specified as hexadecimal RGB. For example, "#F96E11".

Example: "#7b1fa2"
idstringread-only

The unique identifier (ID) for the Marker Setting.

Example: "gwAHiE5TS4j"
created_atstringread-only

The ISO8601-formatted time when the Marker Setting was created.

Example: "2022-09-15T05:39:42Z"
updated_atnull or stringread-only

The ISO8601-formatted time when the Marker Setting was updated.

Example: "2022-12-15T04:25:14Z"
]
Response
application/json
[ { "type": "deploy", "color": "#7b1fa2", "id": "gwAHiE5TS4j", "created_at": "2022-09-15T05:39:42Z", "updated_at": "2022-12-15T04:25:14Z" } ]

Update a Marker Setting

Request

A marker setting's type may not be changed after creation.

Path
datasetSlugstringrequired

The dataset slug or use __all__ for endpoints that support environment-wide operations.

idstringrequired

The unique identifier (ID) of a marker setting.

Bodyapplication/jsonrequired
typestringrequired

Groups similar Markers. For example, 'deploys'. All Markers of the same type appears with the same color on the graph.

Example: "deploy"
colorstringrequired

Color to use for display of this marker type. Specified as hexadecimal RGB. For example, "#F96E11".

Example: "#7b1fa2"
curl -i -X PUT \
  'https://api.honeycomb.io/1/marker_settings/{datasetSlug}/{id}' \
  -H 'Content-Type: application/json' \
  -H 'X-Honeycomb-Team: YOUR_API_KEY_HERE' \
  -d '{
    "type": "deploy",
    "color": "#1fa297"
  }'

Responses

Success

Bodyapplication/json
typestringrequired

Groups similar Markers. For example, 'deploys'. All Markers of the same type appears with the same color on the graph.

Example: "deploy"
colorstringrequired

Color to use for display of this marker type. Specified as hexadecimal RGB. For example, "#F96E11".

Example: "#7b1fa2"
idstringread-only

The unique identifier (ID) for the Marker Setting.

Example: "gwAHiE5TS4j"
created_atstringread-only

The ISO8601-formatted time when the Marker Setting was created.

Example: "2022-09-15T05:39:42Z"
updated_atnull or stringread-only

The ISO8601-formatted time when the Marker Setting was updated.

Example: "2022-12-15T04:25:14Z"
Response
application/json
{ "type": "deploy", "color": "#1fa297", "id": "gwAHiE5TS4j", "created_at": "2022-09-15T05:39:42Z", "updated_at": "2022-12-20T08:10:05Z" }

Delete a Marker Setting

Request

Path
datasetSlugstringrequired

The dataset slug or use __all__ for endpoints that support environment-wide operations.

idstringrequired

The unique identifier (ID) of a marker setting.

curl -i -X DELETE \
  'https://api.honeycomb.io/1/marker_settings/{datasetSlug}/{id}' \
  -H 'X-Honeycomb-Team: YOUR_API_KEY_HERE'

Responses

Success

Response
{ "error": "dataset not found" }

Queries

Queries in Honeycomb are specifications for queries, and are used to identify queries in other parts of the API - in particular: boards, triggers, and query annotations.

This API allows you to create and get query objects.

Operations

Authorization

The API key must have the Manage Queries and Columns permission. Learn more about API keys here.

Create a Query

Request

Create a query from a specification. DOES NOT run the query to retrieve results.

Path
datasetSlugstringrequired

The dataset slug or use __all__ for endpoints that support environment-wide operations.

Bodyapplication/jsonrequired
breakdownsArray of strings<= 100 items

the columns by which to break events down into groups

Default ["user_agent"]
calculationsArray of objects<= 100 items

the calculations to return as a time series and summary table

filtersArray of objects<= 100 items

the filters with which to restrict the considered events

filter_combinationstring

set to "OR" to match ANY filter in the filter list

Default "AND"
Enum"AND""OR"
granularityinteger>= 1

The time resolution of the query's graph, in seconds. Given a query time range T, valid values (T/1000...T/10).

ordersArray of objects<= 100 items

The terms on which to order the query results. Each term must appear in either the breakdowns field or the calculations field.

limitinteger[ 1 .. 10000 ]

The maximum number of unique groups returned in 'results'. Aggregating many unique groups across a large time range is computationally expensive, and too high a limit with too many unique groups may cause queries to fail completely. Limiting the results to only the needed values can significantly speed up queries. The normal allowed maximum value when creating a query is 1_000. When running 'disable_series' queries, this can be overridden to be up to 10_000, so the maximum value returned from the API when fetching a query may be up to 10_000.

Default 100
start_timeinteger>= 1

Absolute start time of query, in seconds since UNIX epoch. Must be <= end_time.

Default 1676399428
end_timeinteger>= 1

Absolute end time of query, in seconds since UNIX epoch.

Default 1676467828
time_rangeinteger>= 1

Time range of query in seconds. Can be used with either start_time (seconds after start_time), end_time (seconds before end_time), or without either (seconds before now).

Default 7200
havingsArray of objects<= 100 items

The Having clause allows you to filter on the results table. This operation is distinct from the Where clause, which filters the underlying events. Order By allows you to order the results, and Having filters them.

curl -i -X POST \
  'https://api.honeycomb.io/1/queries/{datasetSlug}' \
  -H 'Content-Type: application/json' \
  -H 'X-Honeycomb-Team: YOUR_API_KEY_HERE' \
  -d '{
    "calculations": [
      {
        "op": "COUNT"
      }
    ],
    "orders": [
      {
        "op": "COUNT",
        "order": "descending"
      }
    ],
    "time_range": 7200
  }'

Responses

Success

Bodyapplication/json
idstringread-only
breakdownsArray of strings<= 100 items

the columns by which to break events down into groups

Default ["user_agent"]
calculationsArray of objects<= 100 items

the calculations to return as a time series and summary table

filtersArray of objects<= 100 items

the filters with which to restrict the considered events

filter_combinationstring

set to "OR" to match ANY filter in the filter list

Default "AND"
Enum"AND""OR"
granularityinteger>= 1

The time resolution of the query's graph, in seconds. Given a query time range T, valid values (T/1000...T/10).

ordersArray of objects<= 100 items

The terms on which to order the query results. Each term must appear in either the breakdowns field or the calculations field.

limitinteger[ 1 .. 10000 ]

The maximum number of unique groups returned in 'results'. Aggregating many unique groups across a large time range is computationally expensive, and too high a limit with too many unique groups may cause queries to fail completely. Limiting the results to only the needed values can significantly speed up queries. The normal allowed maximum value when creating a query is 1_000. When running 'disable_series' queries, this can be overridden to be up to 10_000, so the maximum value returned from the API when fetching a query may be up to 10_000.

Default 100
start_timeinteger>= 1

Absolute start time of query, in seconds since UNIX epoch. Must be <= end_time.

Default 1676399428
end_timeinteger>= 1

Absolute end time of query, in seconds since UNIX epoch.

Default 1676467828
time_rangeinteger>= 1

Time range of query in seconds. Can be used with either start_time (seconds after start_time), end_time (seconds before end_time), or without either (seconds before now).

Default 7200
havingsArray of objects<= 100 items

The Having clause allows you to filter on the results table. This operation is distinct from the Where clause, which filters the underlying events. Order By allows you to order the results, and Having filters them.

Response
application/json
{ "id": "abc3419d", "calculations": [ {} ], "orders": [ {} ], "time_range": 7200 }

Get a Query

Request

Retrieve a query by its ID.

Path
datasetSlugstringrequired

The dataset slug or use __all__ for endpoints that support environment-wide operations.

queryIdstringrequired

The unique identifier (ID) of a query.

curl -i -X GET \
  'https://api.honeycomb.io/1/queries/{datasetSlug}/{queryId}' \
  -H 'X-Honeycomb-Team: YOUR_API_KEY_HERE'

Responses

Success

Bodyapplication/json
idstringread-only
breakdownsArray of strings<= 100 items

the columns by which to break events down into groups

Default ["user_agent"]
calculationsArray of objects<= 100 items

the calculations to return as a time series and summary table

filtersArray of objects<= 100 items

the filters with which to restrict the considered events

filter_combinationstring

set to "OR" to match ANY filter in the filter list

Default "AND"
Enum"AND""OR"
granularityinteger>= 1

The time resolution of the query's graph, in seconds. Given a query time range T, valid values (T/1000...T/10).

ordersArray of objects<= 100 items

The terms on which to order the query results. Each term must appear in either the breakdowns field or the calculations field.

limitinteger[ 1 .. 10000 ]

The maximum number of unique groups returned in 'results'. Aggregating many unique groups across a large time range is computationally expensive, and too high a limit with too many unique groups may cause queries to fail completely. Limiting the results to only the needed values can significantly speed up queries. The normal allowed maximum value when creating a query is 1_000. When running 'disable_series' queries, this can be overridden to be up to 10_000, so the maximum value returned from the API when fetching a query may be up to 10_000.

Default 100
start_timeinteger>= 1

Absolute start time of query, in seconds since UNIX epoch. Must be <= end_time.

Default 1676399428
end_timeinteger>= 1

Absolute end time of query, in seconds since UNIX epoch.

Default 1676467828
time_rangeinteger>= 1

Time range of query in seconds. Can be used with either start_time (seconds after start_time), end_time (seconds before end_time), or without either (seconds before now).

Default 7200
havingsArray of objects<= 100 items

The Having clause allows you to filter on the results table. This operation is distinct from the Where clause, which filters the underlying events. Order By allows you to order the results, and Having filters them.

Response
application/json
{ "id": "abc3419d", "breakdowns": [ "user_agent" ], "calculations": [ {} ], "orders": [ {} ], "limit": 10, "time_range": 7200, "end_time": 1676467828 }

Query Annotations

Query Annotations in Honeycomb allow you to associate names and descriptions to queries to add additional information in collaboration features.

This API allows you to list, create, update, and delete Query Annotations.

Operations

Authorization

The API key must have the Manage Queries and Columns permission. Learn more about API keys here.

Create a Query Annotation

Request

Create a Query Annotation for the specified query ID.

Path
datasetSlugstringrequired

The dataset slug or use __all__ for endpoints that support environment-wide operations.

Bodyapplication/jsonrequired
namestring[ 1 .. 80 ] charactersrequired

A name for the Query.

Example: "My Named Query"
descriptionstring<= 280 characters

A description of the Query.

Example: "A nice description of My Named Query"
query_idstringrequired

The ID of the Query that the annotation describes. Note: Once created, it is NOT possible to change the query ID associated with an annotation. It is possible to have multiple annotations associated with a Query.

Example: "mabAMpSPDjH"
curl -i -X POST \
  'https://api.honeycomb.io/1/query_annotations/{datasetSlug}' \
  -H 'Content-Type: application/json' \
  -H 'X-Honeycomb-Team: YOUR_API_KEY_HERE' \
  -d '{
    "name": "My Named Query",
    "description": "A nice description of My Named Query",
    "query_id": "mabAMpSPDjH"
  }'

Responses

Created

Bodyapplication/json
namestring[ 1 .. 80 ] charactersrequired

A name for the Query.

Example: "My Named Query"
descriptionstring<= 280 characters

A description of the Query.

Example: "A nice description of My Named Query"
query_idstringrequired

The ID of the Query that the annotation describes. Note: Once created, it is NOT possible to change the query ID associated with an annotation. It is possible to have multiple annotations associated with a Query.

Example: "mabAMpSPDjH"
idstringread-only

The unique identifier (ID) of a Query Annotation.

Example: "sGUnkBHgRFN"
created_atstring(date-time)read-only

ISO8601 formatted time when the Query Annotation was created.

Example: "2022-10-26T21:36:04Z"
updated_atstring(date-time)read-only

ISO8601 formatted time when the Query Annotation was updated.

Example: "2022-12-04T08:14:26Z"
Response
application/json
{ "name": "My Named Query", "description": "A nice description of My Named Query", "query_id": "mabAMpSPDjH", "id": "sGUnkBHgRFN", "created_at": "2022-10-26T21:36:04Z", "updated_at": "2022-12-04T08:14:26Z" }

List Query Annotations

Request

List all Query Annotations in the specified dataset.

Path
datasetSlugstringrequired

The dataset slug or use __all__ for endpoints that support environment-wide operations.

curl -i -X GET \
  'https://api.honeycomb.io/1/query_annotations/{datasetSlug}' \
  -H 'X-Honeycomb-Team: YOUR_API_KEY_HERE'

Responses

Success

Bodyapplication/jsonArray [
namestring[ 1 .. 80 ] charactersrequired

A name for the Query.

Example: "My Named Query"
descriptionstring<= 280 characters

A description of the Query.

Example: "A nice description of My Named Query"
query_idstringrequired

The ID of the Query that the annotation describes. Note: Once created, it is NOT possible to change the query ID associated with an annotation. It is possible to have multiple annotations associated with a Query.

Example: "mabAMpSPDjH"
idstringread-only

The unique identifier (ID) of a Query Annotation.

Example: "sGUnkBHgRFN"
created_atstring(date-time)read-only

ISO8601 formatted time when the Query Annotation was created.

Example: "2022-10-26T21:36:04Z"
updated_atstring(date-time)read-only

ISO8601 formatted time when the Query Annotation was updated.

Example: "2022-12-04T08:14:26Z"
]
Response
application/json
[ { "name": "My Named Query", "description": "A nice description of My Named Query", "query_id": "mabAMpSPDjH", "id": "sGUnkBHgRFN", "created_at": "2022-10-26T21:36:04Z", "updated_at": "2022-12-04T08:14:26Z" } ]

Get a Query Annotation

Request

Get a Query Annotation by its ID.

Path
datasetSlugstringrequired

The dataset slug or use __all__ for endpoints that support environment-wide operations.

queryAnnotationIdstringrequired

The unique identifier (ID) of the annotation.

curl -i -X GET \
  'https://api.honeycomb.io/1/query_annotations/{datasetSlug}/{queryAnnotationId}' \
  -H 'X-Honeycomb-Team: YOUR_API_KEY_HERE'

Responses

Success

Bodyapplication/json
namestring[ 1 .. 80 ] charactersrequired

A name for the Query.

Example: "My Named Query"
descriptionstring<= 280 characters

A description of the Query.

Example: "A nice description of My Named Query"
query_idstringrequired

The ID of the Query that the annotation describes. Note: Once created, it is NOT possible to change the query ID associated with an annotation. It is possible to have multiple annotations associated with a Query.

Example: "mabAMpSPDjH"
idstringread-only

The unique identifier (ID) of a Query Annotation.

Example: "sGUnkBHgRFN"
created_atstring(date-time)read-only

ISO8601 formatted time when the Query Annotation was created.

Example: "2022-10-26T21:36:04Z"
updated_atstring(date-time)read-only

ISO8601 formatted time when the Query Annotation was updated.

Example: "2022-12-04T08:14:26Z"
Response
application/json
{ "name": "My Named Query", "description": "A nice description of My Named Query", "query_id": "mabAMpSPDjH", "id": "sGUnkBHgRFN", "created_at": "2022-10-26T21:36:04Z", "updated_at": "2022-12-04T08:14:26Z" }

Update a Query Annotation

Request

Update a Query Annotation by specifying its ID. The Query ID associated with the Query Annotation cannot be updated. Partial updates are not supported.

Path
datasetSlugstringrequired

The dataset slug or use __all__ for endpoints that support environment-wide operations.

queryAnnotationIdstringrequired

The unique identifier (ID) of the annotation.

Bodyapplication/jsonrequired
namestring[ 1 .. 80 ] charactersrequired

A name for the Query.

Example: "My Named Query"
descriptionstring<= 280 characters

A description of the Query.

Example: "A nice description of My Named Query"
query_idstringrequired

The ID of the Query that the annotation describes. Note: Once created, it is NOT possible to change the query ID associated with an annotation. It is possible to have multiple annotations associated with a Query.

Example: "mabAMpSPDjH"
curl -i -X PUT \
  'https://api.honeycomb.io/1/query_annotations/{datasetSlug}/{queryAnnotationId}' \
  -H 'Content-Type: application/json' \
  -H 'X-Honeycomb-Team: YOUR_API_KEY_HERE' \
  -d '{
    "name": "My Updated Annotation",
    "description": "A nice description of My Update Annotation",
    "query_id": "mabAMpSPDjH",
    "id": "sGUnkBHgRFN",
    "created_at": "2022-10-26T21:36:04Z",
    "updated_at": "2022-12-16T10:44:08Z"
  }'

Responses

Success

Bodyapplication/json
namestring[ 1 .. 80 ] charactersrequired

A name for the Query.

Example: "My Named Query"
descriptionstring<= 280 characters

A description of the Query.

Example: "A nice description of My Named Query"
query_idstringrequired

The ID of the Query that the annotation describes. Note: Once created, it is NOT possible to change the query ID associated with an annotation. It is possible to have multiple annotations associated with a Query.

Example: "mabAMpSPDjH"
idstringread-only

The unique identifier (ID) of a Query Annotation.

Example: "sGUnkBHgRFN"
created_atstring(date-time)read-only

ISO8601 formatted time when the Query Annotation was created.

Example: "2022-10-26T21:36:04Z"
updated_atstring(date-time)read-only

ISO8601 formatted time when the Query Annotation was updated.

Example: "2022-12-04T08:14:26Z"
Response
application/json
{ "name": "My Updated Annotation", "description": "A nice description of My Update Annotation", "query_id": "mabAMpSPDjH" }

Delete a Query Annotation

Request

Delete a Query Annotation by specifying its ID.

Path
datasetSlugstringrequired

The dataset slug or use __all__ for endpoints that support environment-wide operations.

queryAnnotationIdstringrequired

The unique identifier (ID) of the annotation.

curl -i -X DELETE \
  'https://api.honeycomb.io/1/query_annotations/{datasetSlug}/{queryAnnotationId}' \
  -H 'X-Honeycomb-Team: YOUR_API_KEY_HERE'

Responses

Success - no content

Response
{ "error": "dataset not found" }

Query Data

This feature is available as part of the Honeycomb Enterprise plan.

Query Results are the aggregated data from a Query, similar to what is displayed in graphs or heatmaps within the Honeycomb UI. Receiving results from a Query is a three-step process:

Create the Query (or Query Spec), which validates that the query parameters are valid. Creating a query does not actually run the query to get results. Run the query asynchronously by creating a Query Result referencing the Query’s ID. This returns a Query Result ID. Poll the query result endpoint (with the Query Result ID) until the data is ready.

Note that many Query Results can be created from a single Query. This is particularly useful when using a relative time_range parameter in the Query. For example, a Query with time_range: 7200 and no explicit start_time or end_time can be re-run over and over, with each resulting Query Result containing the most recent 2 hours of data. This is conceptually similar to clicking Run Query in the Honeycomb UI without changing any query parameters.

IMPORTANT API RESTRICTIONS:

To ensure the stability of Honeycomb systems, we have enabled the following API restrictions. These restrictions may change over time.

  • Query Results can only be created for events with timestamps within the past 7 days.

  • When creating a Query Result, the time ranges from the Query are truncated according to the following rules. For queries with a time range of:

    • less than or equal to 6 hours, results are truncated to the nearest 1 minute. For example, a start/end time of 2021-04-22T05:28:12Z will be truncated to 2021-04-22T05:28:00Z.

    • greater than 6 hours and less than or equal to 2 days, results are truncated to the nearest 5 minutes. For example, a start/end time of 2021-04-22T05:28:12Z will be truncated to 2021-04-22T05:25:00Z.

    • greater than 2 days and less than or equal to 7 days, results are truncated to the nearest 30 minutes. For example, a start/end time of 2021-04-22T05:28:12Z will be truncated to 2021-04-22T05:00:00Z.

  • Creating a Query Result is rate limited to 10 requests per minute. Status code 429 will be returned when rate limited.

  • Query Results cannot take longer than 10 seconds to run.

Operations

Authorization

The API key must have the Manage Queries and Columns and Run Queries permission. Learn more about API keys here.

Create a Query Result

Request

Kick off processing of a Query to then get back the Query Results. Once the Query Result has been created, the query will be run asynchronously, allowing the result data to be fetched from the GET query result endpoint. Only the last 7 days of data can be queried. Any queries with a start_time, end_time, or time_range older than last 7 days will result in a 400 error response.

Path
datasetSlugstringrequired

The dataset slug or use __all__ for endpoints that support environment-wide operations.

Bodyapplication/jsonrequired
query_idstringwrite-onlyrequired
Example: "mabAMpSPDjH"
disable_seriesbooleanwrite-only

If true, will disable calculation and return of the full time-series data, usually included in the 'series' response field, instead only returning the summarized 'results'.

limitinteger<= 10000write-only

If 'disable_series' is true, then a limit may optionally be given, which will override the limit normally associated with the query. Unlike normal query results which are limited to 1_000 results, 'disable_series' results may have a limit of up to 10_000. If 'disable_series' is false, then this field will be ignored.

curl -i -X POST \
  'https://api.honeycomb.io/1/query_results/{datasetSlug}' \
  -H 'Content-Type: application/json' \
  -H 'X-Honeycomb-Team: YOUR_API_KEY_HERE' \
  -d '{
    "query_id": "mabAMpSPDjH",
    "disable_series": true,
    "limit": 10000
  }'

Responses

Created

Headers
Locationstring

The Location header will contain the URL where the results can be fetched.

Example: "https://api.honeycomb.io/1/query_results/test-via-curl/HprJhV1fYyr"
Bodyapplication/json
queryobjectread-only
idstringread-only

The unique identifier (ID) of a Query Result.

Example: "sGUnkBHgRFN"
completebooleanread-only

Indicates if the query results are available yet or not. For example, is the query still being processed or complete?

Example: false
linksobjectread-only

An object containing UI links to the query result and query result graph

Response
application/json
{ "query": { "calculations": [], "orders": [], "limit": 10000, "time_range": 7200 }, "complete": false, "id": "dfg456", "links": { "query_url": "https://ui.honeycomb.io/myteam/datasets/test-via-curl/result/dfg456", "graph_image_url": "https://ui.honeycomb.io/myteam/datasets/test-via-curl/result/dfg456/snapshot" } }

Get Query Result

Request

Get the Query Result details for a specific Query Result ID. This endpoint is used to fetch the results of a query that had previously been created. It is recommended to follow the Location header included in the Create Query Result output, but the URL can also be constructed manually with the <query-result-id>.

Path
datasetSlugstringrequired

The dataset slug or use __all__ for endpoints that support environment-wide operations.

queryResultIdstringrequired

The unique identifier (ID) of the query result.

curl -i -X GET \
  'https://api.honeycomb.io/1/query_results/{datasetSlug}/{queryResultId}' \
  -H 'X-Honeycomb-Team: YOUR_API_KEY_HERE'

Responses

Success

Headers
Last-Modifiedstring

The Last-Modified response HTTP header contains a date and time when the origin server believes the resource was last modified.

Example: "Mon, 02 Jan 2006 15:04:05 GMT"
Cache-Controlstring

The max-age=N response directive indicates that the response remains fresh until N seconds after the response is generated.

Example: "private, max-age=86400"
Bodyapplication/json
queryobjectread-only
idstringread-only

The unique identifier (ID) of a Query Result

Example: "sGUnkBHgRFN"
completebooleanread-only

Indicates if the query results are available yet or not. For example, is the query still being processed or complete?

Example: true
dataobject

An object containing the query result data

linksobject

An object containing UI links to the query result and query result graph

Response
application/json
{ "query": { "calculations": [], "orders": [], "limit": 10000, "time_range": 7200 }, "complete": true, "id": "dfg456", "data": { "series": [], "results": [] }, "links": { "query_url": "https://ui.honeycomb.io/myteam/datasets/test-via-curl/result/dfg456", "graph_image_url": "https://ui.honeycomb.io/myteam/datasets/test-via-curl/result/dfg456/snapshot" } }

Recipients

Honeycomb Recipients allow you to define and manage the Recipients that will get notified by a Trigger or Burn Alert.

The types of Recipients supported are: PagerDuty, Email, Webhook, Microsoft Teams, and Slack.

Operations

Authorization

The API key must have the Manage Recipients permission. Recipients are team-wide and NOT environment-specific. API Keys with the Manage Recipients permission can modify recipients used by ALL environments for a given team.

Learn more about API keys here.

Create a Recipient

Request

Unlike many resources, Recipients are not linked to a specific Environment or Dataset. The Recipient will be created for the Team associated with your API key. The details fields will vary depending on the type of Recipient. Use the drop-down to view the specific fields for each type value. Before Slack Recipients can be created, the Slack OAuth flow in the Integration Center must be completed.

Bodyapplication/jsonrequired
typestring(RecipientType)

One of the supported Recipient Types

Enum"pagerduty""email""slack""webhook""msteams""msteams_workflow"
Discriminator
detailsobject

Specific schema for the Pagerduty Recipient Type

curl -i -X POST \
  https://api.honeycomb.io/1/recipients \
  -H 'Content-Type: application/json' \
  -H 'X-Honeycomb-Team: YOUR_API_KEY_HERE' \
  -d '{
    "type": "pagerduty",
    "details": {
      "pagerduty_integration_name": "Example PagerDuty Service",
      "pagerduty_integration_key": "7zOwh1edS8xHGcwfb2bA4sqY8E6PJzSK"
    }
  }'

Responses

Success

Bodyapplication/json
idstringread-only
Example: "yUheCUmgZ8p"
created_atstring(date-time)read-only

ISO8601 formatted time the Recipient was created.

Example: "2022-07-26T22:38:04Z"
updated_atstring(date-time)read-only

ISO8601 formatted time the Recipient was updated.

Example: "2022-07-26T22:38:04Z"
typestring(RecipientType)

One of the supported Recipient Types

Enum"pagerduty""email""slack""webhook""msteams""msteams_workflow"
Discriminator
detailsobject

Specific schema for the Pagerduty Recipient Type

Response
application/json
{ "id": "yUheCUmgZ8p", "created_at": "2022-07-26T22:38:04Z", "updated_at": "2022-07-26T22:38:04Z", "type": "pagerduty", "details": { "pagerduty_integration_name": "Example PagerDuty Service", "pagerduty_integration_key": "7zOwh1edS8xHGcwfb2bA4sqY8E6PJzSK" } }

List all Recipients

Request

Retrieve all recipients for a team.

curl -i -X GET \
  https://api.honeycomb.io/1/recipients \
  -H 'X-Honeycomb-Team: YOUR_API_KEY_HERE'

Responses

Success

Bodyapplication/jsonArray [
idstringread-only
Example: "yUheCUmgZ8p"
created_atstring(date-time)read-only

ISO8601 formatted time the Recipient was created.

Example: "2022-07-26T22:38:04Z"
updated_atstring(date-time)read-only

ISO8601 formatted time the Recipient was updated.

Example: "2022-07-26T22:38:04Z"
typestring(RecipientType)

One of the supported Recipient Types

Enum"pagerduty""email""slack""webhook""msteams""msteams_workflow"
Discriminator
detailsobject

Specific schema for the Pagerduty Recipient Type

]
Response
application/json
[ { "id": "yUheCUmgZ8p", "created_at": "2022-07-26T22:38:04Z", "updated_at": "2022-07-26T22:38:04Z", "type": "pagerduty", "details": {} } ]

Get a single Recipient

Request

Retrieve a Recipient by recipient ID.

Path
recipientIdstringrequired

Unique identifier (ID) of a Recipient.

curl -i -X GET \
  'https://api.honeycomb.io/1/recipients/{recipientId}' \
  -H 'X-Honeycomb-Team: YOUR_API_KEY_HERE'

Responses

Success

Bodyapplication/json
idstringread-only
Example: "yUheCUmgZ8p"
created_atstring(date-time)read-only

ISO8601 formatted time the Recipient was created.

Example: "2022-07-26T22:38:04Z"
updated_atstring(date-time)read-only

ISO8601 formatted time the Recipient was updated.

Example: "2022-07-26T22:38:04Z"
typestring(RecipientType)

One of the supported Recipient Types

Enum"pagerduty""email""slack""webhook""msteams""msteams_workflow"
Discriminator
detailsobject

Specific schema for the Pagerduty Recipient Type

Response
application/json
{ "id": "yUheCUmgZ8p", "created_at": "2022-07-26T22:38:04Z", "updated_at": "2022-07-26T22:38:04Z", "type": "pagerduty", "details": { "pagerduty_integration_name": "Example PagerDuty Service", "pagerduty_integration_key": "7zOwh1edS8xHGcwfb2bA4sqY8E6PJzSK" } }

Update a Recipient

Request

Update a Recipient by specifying the recipient ID and full recipient details. (Partial PUT is not supported.) Updates to the Recipient Type is not supported. For example, changing an existing Recipient from PagerDuty to Email is not allowed. Important: Modifying an existing recipient will change the destination of all triggers/burn alerts that use that recipient.

Path
recipientIdstringrequired

Unique identifier (ID) of a Recipient.

Bodyapplication/jsonrequired
typestring(RecipientType)

One of the supported Recipient Types

Enum"pagerduty""email""slack""webhook""msteams""msteams_workflow"
Discriminator
detailsobject

Specific schema for the Pagerduty Recipient Type

curl -i -X PUT \
  'https://api.honeycomb.io/1/recipients/{recipientId}' \
  -H 'Content-Type: application/json' \
  -H 'X-Honeycomb-Team: YOUR_API_KEY_HERE' \
  -d '{
    "type": "pagerduty",
    "details": {
      "pagerduty_integration_name": "Example PagerDuty Service",
      "pagerduty_integration_key": "7zOwh1edS8xHGcwfb2bA4sqY8E6PJzSK"
    }
  }'

Responses

Success

Bodyapplication/json
idstringread-only
Example: "yUheCUmgZ8p"
created_atstring(date-time)read-only

ISO8601 formatted time the Recipient was created.

Example: "2022-07-26T22:38:04Z"
updated_atstring(date-time)read-only

ISO8601 formatted time the Recipient was updated.

Example: "2022-07-26T22:38:04Z"
typestring(RecipientType)

One of the supported Recipient Types

Enum"pagerduty""email""slack""webhook""msteams""msteams_workflow"
Discriminator
detailsobject

Specific schema for the Pagerduty Recipient Type

Response
application/json
{ "id": "yUheCUmgZ8p", "created_at": "2022-07-26T22:38:04Z", "updated_at": "2022-07-26T22:38:04Z", "type": "pagerduty", "details": { "pagerduty_integration_name": "Example PagerDuty Service", "pagerduty_integration_key": "7zOwh1edS8xHGcwfb2bA4sqY8E6PJzSK" } }

Delete a Recipient

Request

Delete a recipient by specifying the recipient ID. A Recipient can only be deleted if it is NOT in use by any Triggers or Burn Alerts associated to the team.

Path
recipientIdstringrequired

Unique identifier (ID) of a Recipient.

curl -i -X DELETE \
  'https://api.honeycomb.io/1/recipients/{recipientId}' \
  -H 'X-Honeycomb-Team: YOUR_API_KEY_HERE'

Responses

Success - no content

Response
application/json
{ "error": "unknown API key - check your credentials" }

SLOs

This feature is available as part of the Honeycomb Pro and Enterprise plans.

Honeycomb SLOs allow you to define and monitor Service Level Objectives (SLOs) for your organization.

This API allows you to list, create, update, and delete SLO objects.

Operations

Authorization

The API key must have the Manage SLOs permission. Learn more about API keys here.

Create an SLO

Request

Create an SLO on the provided dataset

Path
datasetSlugstringrequired

The dataset slug.

Bodyapplication/jsonrequired
namestring[ 1 .. 120 ] charactersrequired

The name of the SLO.

Example: "My SLO"
descriptionstring[ 0 .. 1023 ] characters

A nice description of the SLO's intent and context.

Example: "SLO to ensure requests succeed and are fast"
sliobjectrequired

Reference to the Derived Column used as the indicator of event success.

Example: {"alias":"error_sli"}
sli.​aliasstring[ 1 .. 255 ] charactersrequired

The alias of the derived column.

Example: "error_sli"
time_period_daysinteger>= 1required

The time period, in days, over which the SLO will be evaluated.

Example: 30
target_per_millioninteger[ 0 .. 999999 ]required

The number of events out of one million (1,000,000) that you expected qualified events to succeed.

Example: 990000
curl -i -X POST \
  'https://api.honeycomb.io/1/slos/{datasetSlug}' \
  -H 'Content-Type: application/json' \
  -H 'X-Honeycomb-Team: YOUR_API_KEY_HERE' \
  -d '{
    "name": "My SLO",
    "description": "SLO to ensure requests succeed and are fast",
    "sli": {
      "alias": "error_sli"
    },
    "time_period_days": 30,
    "target_per_million": 990000
  }'

Responses

Success - SLO created

Bodyapplication/json
idstringread-only
namestring[ 1 .. 120 ] charactersrequired

The name of the SLO.

Example: "My SLO"
descriptionstring[ 0 .. 1023 ] characters

A nice description of the SLO's intent and context.

Example: "SLO to ensure requests succeed and are fast"
sliobjectrequired

Reference to the Derived Column used as the indicator of event success.

Example: {"alias":"error_sli"}
sli.​aliasstring[ 1 .. 255 ] charactersrequired

The alias of the derived column.

Example: "error_sli"
time_period_daysinteger>= 1required

The time period, in days, over which the SLO will be evaluated.

Example: 30
target_per_millioninteger[ 0 .. 999999 ]required

The number of events out of one million (1,000,000) that you expected qualified events to succeed.

Example: 990000
reset_atnull or string(date-time)read-only

The ISO8601-formatted time the SLO was last reset. The value will be null if the SLO has not yet been reset.

Example: "2022-011-11T09:53:04Z"
created_atstring(date-time)read-only

The ISO8601-formatted time when the SLO was created.

Example: "2022-09-22T17:32:11Z"
updated_atstring(date-time)read-only

The ISO8601-formatted time when the SLO was updated.

Example: "2022-10-31T15:08:11Z"
Response
application/json
{ "id": "string", "name": "My SLO", "description": "SLO to ensure requests succeed and are fast", "sli": { "alias": "error_sli" }, "time_period_days": 30, "target_per_million": 990000, "reset_at": "2022-011-11T09:53:04Z", "created_at": "2022-09-22T17:32:11Z", "updated_at": "2022-10-31T15:08:11Z" }

Get all SLOs

Request

Get all SLOs for a dataset

Path
datasetSlugstringrequired

The dataset slug.

curl -i -X GET \
  'https://api.honeycomb.io/1/slos/{datasetSlug}' \
  -H 'X-Honeycomb-Team: YOUR_API_KEY_HERE'

Responses

Success

Bodyapplication/jsonArray [
idstringread-only
namestring[ 1 .. 120 ] charactersrequired

The name of the SLO.

Example: "My SLO"
descriptionstring[ 0 .. 1023 ] characters

A nice description of the SLO's intent and context.

Example: "SLO to ensure requests succeed and are fast"
sliobjectrequired

Reference to the Derived Column used as the indicator of event success.

Example: {"alias":"error_sli"}
sli.​aliasstring[ 1 .. 255 ] charactersrequired

The alias of the derived column.

Example: "error_sli"
time_period_daysinteger>= 1required

The time period, in days, over which the SLO will be evaluated.

Example: 30
target_per_millioninteger[ 0 .. 999999 ]required

The number of events out of one million (1,000,000) that you expected qualified events to succeed.

Example: 990000
reset_atnull or string(date-time)read-only

The ISO8601-formatted time the SLO was last reset. The value will be null if the SLO has not yet been reset.

Example: "2022-011-11T09:53:04Z"
created_atstring(date-time)read-only

The ISO8601-formatted time when the SLO was created.

Example: "2022-09-22T17:32:11Z"
updated_atstring(date-time)read-only

The ISO8601-formatted time when the SLO was updated.

Example: "2022-10-31T15:08:11Z"
]
Response
application/json
[ { "id": "string", "name": "My SLO", "description": "SLO to ensure requests succeed and are fast", "sli": {}, "time_period_days": 30, "target_per_million": 990000, "reset_at": "2022-011-11T09:53:04Z", "created_at": "2022-09-22T17:32:11Z", "updated_at": "2022-10-31T15:08:11Z" } ]

Get an SLO

Request

Get an SLO by ID.

Path
datasetSlugstringrequired

The dataset slug.

sloIdstringrequired

Unique identifier (ID) of the SLO.

Query
detailedboolean

Allows SLO reporting data (budget_remaining and compliance) to be returned when retrieving a single SLO. This feature is available as part of the Honeycomb Enterprise plan.

curl -i -X GET \
  'https://api.honeycomb.io/1/slos/{datasetSlug}/{sloId}?detailed=true' \
  -H 'X-Honeycomb-Team: YOUR_API_KEY_HERE'

Responses

Success

Bodyapplication/json
Any of:
idstringread-only
namestring[ 1 .. 120 ] charactersrequired

The name of the SLO.

Example: "My SLO"
descriptionstring[ 0 .. 1023 ] characters

A nice description of the SLO's intent and context.

Example: "SLO to ensure requests succeed and are fast"
sliobjectrequired

Reference to the Derived Column used as the indicator of event success.

Example: {"alias":"error_sli"}
sli.​aliasstring[ 1 .. 255 ] charactersrequired

The alias of the derived column.

Example: "error_sli"
time_period_daysinteger>= 1required

The time period, in days, over which the SLO will be evaluated.

Example: 30
target_per_millioninteger[ 0 .. 999999 ]required

The number of events out of one million (1,000,000) that you expected qualified events to succeed.

Example: 990000
reset_atnull or string(date-time)read-only

The ISO8601-formatted time the SLO was last reset. The value will be null if the SLO has not yet been reset.

Example: "2022-011-11T09:53:04Z"
created_atstring(date-time)read-only

The ISO8601-formatted time when the SLO was created.

Example: "2022-09-22T17:32:11Z"
updated_atstring(date-time)read-only

The ISO8601-formatted time when the SLO was updated.

Example: "2022-10-31T15:08:11Z"
Response
application/json

Get an SLO by ID

{ "id": "bZ1aRHAUsjG", "name": "My SLO", "description": "My SLO description", "sli": { "alias": "my-sli" }, "time_period_days": 30, "target_per_million": 989900, "reset_at": "2022-10-15T13:53:11Z", "created_at": "2022-09-15T05:39:42Z", "updated_at": "2022-12-20T08:10:05Z" }

Update an SLO

Request

Update an SLO by specifying its ID and full SLO details.

Path
datasetSlugstringrequired

The dataset slug.

sloIdstringrequired

Unique identifier (ID) of the SLO.

Bodyapplication/jsonrequired

Partial updates are not supported.

namestring[ 1 .. 120 ] charactersrequired

The name of the SLO.

Example: "My SLO"
descriptionstring[ 0 .. 1023 ] characters

A nice description of the SLO's intent and context.

Example: "SLO to ensure requests succeed and are fast"
sliobjectrequired

Reference to the Derived Column used as the indicator of event success.

Example: {"alias":"error_sli"}
sli.​aliasstring[ 1 .. 255 ] charactersrequired

The alias of the derived column.

Example: "error_sli"
time_period_daysinteger>= 1required

The time period, in days, over which the SLO will be evaluated.

Example: 30
target_per_millioninteger[ 0 .. 999999 ]required

The number of events out of one million (1,000,000) that you expected qualified events to succeed.

Example: 990000
curl -i -X PUT \
  'https://api.honeycomb.io/1/slos/{datasetSlug}/{sloId}' \
  -H 'Content-Type: application/json' \
  -H 'X-Honeycomb-Team: YOUR_API_KEY_HERE' \
  -d '{
    "name": "My SLO",
    "description": "SLO to ensure requests succeed and are fast",
    "sli": {
      "alias": "error_sli"
    },
    "time_period_days": 30,
    "target_per_million": 990000
  }'

Responses

Success

Bodyapplication/json
idstringread-only
namestring[ 1 .. 120 ] charactersrequired

The name of the SLO.

Example: "My SLO"
descriptionstring[ 0 .. 1023 ] characters

A nice description of the SLO's intent and context.

Example: "SLO to ensure requests succeed and are fast"
sliobjectrequired

Reference to the Derived Column used as the indicator of event success.

Example: {"alias":"error_sli"}
sli.​aliasstring[ 1 .. 255 ] charactersrequired

The alias of the derived column.

Example: "error_sli"
time_period_daysinteger>= 1required

The time period, in days, over which the SLO will be evaluated.

Example: 30
target_per_millioninteger[ 0 .. 999999 ]required

The number of events out of one million (1,000,000) that you expected qualified events to succeed.

Example: 990000
reset_atnull or string(date-time)read-only

The ISO8601-formatted time the SLO was last reset. The value will be null if the SLO has not yet been reset.

Example: "2022-011-11T09:53:04Z"
created_atstring(date-time)read-only

The ISO8601-formatted time when the SLO was created.

Example: "2022-09-22T17:32:11Z"
updated_atstring(date-time)read-only

The ISO8601-formatted time when the SLO was updated.

Example: "2022-10-31T15:08:11Z"
Response
application/json
{ "id": "string", "name": "My SLO", "description": "SLO to ensure requests succeed and are fast", "sli": { "alias": "error_sli" }, "time_period_days": 30, "target_per_million": 990000, "reset_at": "2022-011-11T09:53:04Z", "created_at": "2022-09-22T17:32:11Z", "updated_at": "2022-10-31T15:08:11Z" }

Delete an SLO

Request

Delete an SLO by specifying its ID.

Path
datasetSlugstringrequired

The dataset slug.

sloIdstringrequired

Unique identifier (ID) of the SLO.

curl -i -X DELETE \
  'https://api.honeycomb.io/1/slos/{datasetSlug}/{sloId}' \
  -H 'X-Honeycomb-Team: YOUR_API_KEY_HERE'

Responses

Success - no content

Response
{ "error": "unknown API key - check your credentials" }

Triggers

Triggers let you receive notifications when your data in Honeycomb crosses the thresholds that you configure. The graph on which to alert is as flexible as a Honeycomb query, which helps reduce false positives due to known errors.Triggers fire

This API allows you to list, create, update, and delete Triggers.

Operations

Authorization

The API key must have the Manage Triggers permission. Learn more about API keys here.

List All Triggers

Request

List all triggers on the provided dataset.

Path
datasetSlugstringrequired

The dataset slug.

curl -i -X GET \
  'https://api.honeycomb.io/1/triggers/{datasetSlug}' \
  -H 'X-Honeycomb-Team: YOUR_API_KEY_HERE'

Responses

OK

Bodyapplication/jsonArray [
idstringread-only

The unique identifier (ID) for this Trigger.

namestring[ 1 .. 120 ] characters

A short, human-readable name for this Trigger, which will be displayed in the UI and when the trigger fires.

descriptionstring<= 1023 characters

A longer description, displayed on the Trigger's detail page.

thresholdobject

The threshold over which the trigger will fire, specified as both an operator and a value.

frequencyinteger

The interval in seconds in which to check the results of the query’s calculation against the threshold. Cannot be more than 4 times the query's duration (i.e. duration <= frequency*4). See A Caveat on Time for more information on specifying a query's duration. minimum: 60 maximum: 86400 multipleOf: 60 default: 900

alert_typestring

How often to fire an alert when a trigger threshold is crossed.

  • on_change sends a trigger notification when the result of the specified calculation crosses the threshold. The trigger resolves only when the result of the query no longer satisfies the threshold condition.
  • on_true keeps sending a trigger notification at current frequency when and while the threshold is met. (This reflects the same behavior as the "Send an alert every time a threshold is met" checkbox in the Honeycomb UI.)
Default "on_change"
Enum"on_change""on_true"
disabledboolean

If true, the trigger will not be evaluated and alerts will not be sent.

Default false
triggeredbooleanread-only

If true, the trigger has crossed its specified threshold without resolving.

recipientsArray of objects

A list of Recipients to notify when the Trigger fires. Using type+target is deprecated. First, create the Recipient via the Recipients API, and then specify the ID.

evaluation_schedule_typestring

The schedule type used by the trigger. The default is frequency, where the trigger runs at the specified frequency. The window type means that the trigger will run at the specified frequency, but only in the time window specified in the evaluation_schedule field.

Enum"frequency""window"
evaluation_scheduleobject

A schedule that determines when the trigger is run. When the time is within the scheduled window, the trigger will be run at the specified frequency. Outside of the window, the trigger will not be run.

created_atstring(date-time)read-only
updated_atstring(date-time)read-only
queryobject

A query ID or an inline query that is a strict subset of a Query Specification.

query_idstring

The ID of a Query that meets the criteria for being used as a Trigger, per above.

]
Response
application/json
[ { "id": "string", "name": "string", "description": "string", "threshold": {}, "frequency": 0, "alert_type": "on_change", "disabled": false, "triggered": true, "recipients": [], "evaluation_schedule_type": "frequency", "evaluation_schedule": {}, "created_at": "2019-08-24T14:15:22Z", "updated_at": "2019-08-24T14:15:22Z", "query": {}, "query_id": "string" } ]

Create a Trigger

Request

Create a trigger on the provided dataset.

Path
datasetSlugstringrequired

The dataset slug.

Bodyapplication/jsonrequired
One of:
namestring[ 1 .. 120 ] characters

A short, human-readable name for this Trigger, which will be displayed in the UI and when the trigger fires.

descriptionstring<= 1023 characters

A longer description, displayed on the Trigger's detail page.

thresholdobject

The threshold over which the trigger will fire, specified as both an operator and a value.

frequencyinteger

The interval in seconds in which to check the results of the query’s calculation against the threshold. Cannot be more than 4 times the query's duration (i.e. duration <= frequency*4). See A Caveat on Time for more information on specifying a query's duration. minimum: 60 maximum: 86400 multipleOf: 60 default: 900

alert_typestring

How often to fire an alert when a trigger threshold is crossed.

  • on_change sends a trigger notification when the result of the specified calculation crosses the threshold. The trigger resolves only when the result of the query no longer satisfies the threshold condition.
  • on_true keeps sending a trigger notification at current frequency when and while the threshold is met. (This reflects the same behavior as the "Send an alert every time a threshold is met" checkbox in the Honeycomb UI.)
Default "on_change"
Enum"on_change""on_true"
disabledboolean

If true, the trigger will not be evaluated and alerts will not be sent.

Default false
recipientsArray of objects(NotificationRecipient)

A list of Recipients to notify when the Trigger fires. Using type+target is deprecated. First, create the Recipient via the Recipients API, and then specify the ID.

evaluation_schedule_typestring

The schedule type used by the trigger. The default is frequency, where the trigger runs at the specified frequency. The window type means that the trigger will run at the specified frequency, but only in the time window specified in the evaluation_schedule field.

Enum"frequency""window"
evaluation_scheduleobject

A schedule that determines when the trigger is run. When the time is within the scheduled window, the trigger will be run at the specified frequency. Outside of the window, the trigger will not be run.

queryobject

A query ID or an inline query that is a strict subset of a Query Specification.

curl -i -X POST \
  'https://api.honeycomb.io/1/triggers/{datasetSlug}' \
  -H 'Content-Type: application/json' \
  -H 'X-Honeycomb-Team: YOUR_API_KEY_HERE' \
  -d '{
    "name": "string",
    "description": "string",
    "threshold": {
      "op": ">",
      "value": 0,
      "exceeded_limit": 1
    },
    "frequency": 0,
    "alert_type": "on_change",
    "disabled": false,
    "recipients": [
      {
        "id": "string",
        "type": "pagerduty",
        "target": "string",
        "details": {
          "pagerduty_severity": "critical"
        }
      }
    ],
    "evaluation_schedule_type": "frequency",
    "evaluation_schedule": {
      "window": {
        "days_of_week": [
          "sunday"
        ],
        "start_time": "14:00",
        "end_time": "21:00"
      }
    },
    "query": {}
  }'

Responses

Success - trigger created

Headers
Locationstring

Relative path to fetch this trigger via API.

Bodyapplication/json
idstringread-only

The unique identifier (ID) for this Trigger.

namestring[ 1 .. 120 ] characters

A short, human-readable name for this Trigger, which will be displayed in the UI and when the trigger fires.

descriptionstring<= 1023 characters

A longer description, displayed on the Trigger's detail page.

thresholdobject

The threshold over which the trigger will fire, specified as both an operator and a value.

frequencyinteger

The interval in seconds in which to check the results of the query’s calculation against the threshold. Cannot be more than 4 times the query's duration (i.e. duration <= frequency*4). See A Caveat on Time for more information on specifying a query's duration. minimum: 60 maximum: 86400 multipleOf: 60 default: 900

alert_typestring

How often to fire an alert when a trigger threshold is crossed.

  • on_change sends a trigger notification when the result of the specified calculation crosses the threshold. The trigger resolves only when the result of the query no longer satisfies the threshold condition.
  • on_true keeps sending a trigger notification at current frequency when and while the threshold is met. (This reflects the same behavior as the "Send an alert every time a threshold is met" checkbox in the Honeycomb UI.)
Default "on_change"
Enum"on_change""on_true"
disabledboolean

If true, the trigger will not be evaluated and alerts will not be sent.

Default false
triggeredbooleanread-only

If true, the trigger has crossed its specified threshold without resolving.

recipientsArray of objects

A list of Recipients to notify when the Trigger fires. Using type+target is deprecated. First, create the Recipient via the Recipients API, and then specify the ID.

evaluation_schedule_typestring

The schedule type used by the trigger. The default is frequency, where the trigger runs at the specified frequency. The window type means that the trigger will run at the specified frequency, but only in the time window specified in the evaluation_schedule field.

Enum"frequency""window"
evaluation_scheduleobject

A schedule that determines when the trigger is run. When the time is within the scheduled window, the trigger will be run at the specified frequency. Outside of the window, the trigger will not be run.

created_atstring(date-time)read-only
updated_atstring(date-time)read-only
queryobject

A query ID or an inline query that is a strict subset of a Query Specification.

query_idstring

The ID of a Query that meets the criteria for being used as a Trigger, per above.

Response
application/json
{ "id": "string", "name": "string", "description": "string", "threshold": { "op": ">", "value": 0, "exceeded_limit": 1 }, "frequency": 0, "alert_type": "on_change", "disabled": false, "triggered": true, "recipients": [ {} ], "evaluation_schedule_type": "frequency", "evaluation_schedule": { "window": {} }, "created_at": "2019-08-24T14:15:22Z", "updated_at": "2019-08-24T14:15:22Z", "query": {}, "query_id": "string" }

Get a Trigger

Request

Fetch details for a single Trigger by Trigger ID.

Path
datasetSlugstringrequired

The dataset slug.

triggerIdstringrequired

The unique identifier (ID) of a Trigger.

curl -i -X GET \
  'https://api.honeycomb.io/1/triggers/{datasetSlug}/{triggerId}' \
  -H 'X-Honeycomb-Team: YOUR_API_KEY_HERE'

Responses

Success

Bodyapplication/json
idstringread-only

The unique identifier (ID) for this Trigger.

namestring[ 1 .. 120 ] characters

A short, human-readable name for this Trigger, which will be displayed in the UI and when the trigger fires.

descriptionstring<= 1023 characters

A longer description, displayed on the Trigger's detail page.

thresholdobject

The threshold over which the trigger will fire, specified as both an operator and a value.

frequencyinteger

The interval in seconds in which to check the results of the query’s calculation against the threshold. Cannot be more than 4 times the query's duration (i.e. duration <= frequency*4). See A Caveat on Time for more information on specifying a query's duration. minimum: 60 maximum: 86400 multipleOf: 60 default: 900

alert_typestring

How often to fire an alert when a trigger threshold is crossed.

  • on_change sends a trigger notification when the result of the specified calculation crosses the threshold. The trigger resolves only when the result of the query no longer satisfies the threshold condition.
  • on_true keeps sending a trigger notification at current frequency when and while the threshold is met. (This reflects the same behavior as the "Send an alert every time a threshold is met" checkbox in the Honeycomb UI.)
Default "on_change"
Enum"on_change""on_true"
disabledboolean

If true, the trigger will not be evaluated and alerts will not be sent.

Default false
triggeredbooleanread-only

If true, the trigger has crossed its specified threshold without resolving.

recipientsArray of objects

A list of Recipients to notify when the Trigger fires. Using type+target is deprecated. First, create the Recipient via the Recipients API, and then specify the ID.

evaluation_schedule_typestring

The schedule type used by the trigger. The default is frequency, where the trigger runs at the specified frequency. The window type means that the trigger will run at the specified frequency, but only in the time window specified in the evaluation_schedule field.

Enum"frequency""window"
evaluation_scheduleobject

A schedule that determines when the trigger is run. When the time is within the scheduled window, the trigger will be run at the specified frequency. Outside of the window, the trigger will not be run.

created_atstring(date-time)read-only
updated_atstring(date-time)read-only
queryobject

A query ID or an inline query that is a strict subset of a Query Specification.

query_idstring

The ID of a Query that meets the criteria for being used as a Trigger, per above.

Response
application/json
{ "id": "string", "name": "string", "description": "string", "threshold": { "op": ">", "value": 0, "exceeded_limit": 1 }, "frequency": 0, "alert_type": "on_change", "disabled": false, "triggered": true, "recipients": [ {} ], "evaluation_schedule_type": "frequency", "evaluation_schedule": { "window": {} }, "created_at": "2019-08-24T14:15:22Z", "updated_at": "2019-08-24T14:15:22Z", "query": {}, "query_id": "string" }

Update a Trigger

Request

Update a trigger by specifying the trigger ID and the same fields used when creating a new trigger.

Path
datasetSlugstringrequired

The dataset slug.

triggerIdstringrequired

The unique identifier (ID) of a Trigger.

Bodyapplication/jsonrequired
namestring[ 1 .. 120 ] characters

A short, human-readable name for this Trigger, which will be displayed in the UI and when the trigger fires.

descriptionstring<= 1023 characters

A longer description, displayed on the Trigger's detail page.

thresholdobject

The threshold over which the trigger will fire, specified as both an operator and a value.

frequencyinteger

The interval in seconds in which to check the results of the query’s calculation against the threshold. Cannot be more than 4 times the query's duration (i.e. duration <= frequency*4). See A Caveat on Time for more information on specifying a query's duration. minimum: 60 maximum: 86400 multipleOf: 60 default: 900

alert_typestring

How often to fire an alert when a trigger threshold is crossed.

  • on_change sends a trigger notification when the result of the specified calculation crosses the threshold. The trigger resolves only when the result of the query no longer satisfies the threshold condition.
  • on_true keeps sending a trigger notification at current frequency when and while the threshold is met. (This reflects the same behavior as the "Send an alert every time a threshold is met" checkbox in the Honeycomb UI.)
Default "on_change"
Enum"on_change""on_true"
disabledboolean

If true, the trigger will not be evaluated and alerts will not be sent.

Default false
recipientsArray of objects

A list of Recipients to notify when the Trigger fires. Using type+target is deprecated. First, create the Recipient via the Recipients API, and then specify the ID.

evaluation_schedule_typestring

The schedule type used by the trigger. The default is frequency, where the trigger runs at the specified frequency. The window type means that the trigger will run at the specified frequency, but only in the time window specified in the evaluation_schedule field.

Enum"frequency""window"
evaluation_scheduleobject

A schedule that determines when the trigger is run. When the time is within the scheduled window, the trigger will be run at the specified frequency. Outside of the window, the trigger will not be run.

queryobject

A query ID or an inline query that is a strict subset of a Query Specification.

query_idstring

The ID of a Query that meets the criteria for being used as a Trigger, per above.

curl -i -X PUT \
  'https://api.honeycomb.io/1/triggers/{datasetSlug}/{triggerId}' \
  -H 'Content-Type: application/json' \
  -H 'X-Honeycomb-Team: YOUR_API_KEY_HERE' \
  -d '{
    "name": "string",
    "description": "string",
    "threshold": {
      "op": ">",
      "value": 0,
      "exceeded_limit": 1
    },
    "frequency": 0,
    "alert_type": "on_change",
    "disabled": false,
    "recipients": [
      {
        "id": "string",
        "type": "pagerduty",
        "target": "string",
        "details": {
          "pagerduty_severity": "critical"
        }
      }
    ],
    "evaluation_schedule_type": "frequency",
    "evaluation_schedule": {
      "window": {
        "days_of_week": [
          "sunday"
        ],
        "start_time": "14:00",
        "end_time": "21:00"
      }
    },
    "query": {},
    "query_id": "string"
  }'

Responses

Success

Bodyapplication/json
idstringread-only

The unique identifier (ID) for this Trigger.

namestring[ 1 .. 120 ] characters

A short, human-readable name for this Trigger, which will be displayed in the UI and when the trigger fires.

descriptionstring<= 1023 characters

A longer description, displayed on the Trigger's detail page.

thresholdobject

The threshold over which the trigger will fire, specified as both an operator and a value.

frequencyinteger

The interval in seconds in which to check the results of the query’s calculation against the threshold. Cannot be more than 4 times the query's duration (i.e. duration <= frequency*4). See A Caveat on Time for more information on specifying a query's duration. minimum: 60 maximum: 86400 multipleOf: 60 default: 900

alert_typestring

How often to fire an alert when a trigger threshold is crossed.

  • on_change sends a trigger notification when the result of the specified calculation crosses the threshold. The trigger resolves only when the result of the query no longer satisfies the threshold condition.
  • on_true keeps sending a trigger notification at current frequency when and while the threshold is met. (This reflects the same behavior as the "Send an alert every time a threshold is met" checkbox in the Honeycomb UI.)
Default "on_change"
Enum"on_change""on_true"
disabledboolean

If true, the trigger will not be evaluated and alerts will not be sent.

Default false
triggeredbooleanread-only

If true, the trigger has crossed its specified threshold without resolving.

recipientsArray of objects

A list of Recipients to notify when the Trigger fires. Using type+target is deprecated. First, create the Recipient via the Recipients API, and then specify the ID.

evaluation_schedule_typestring

The schedule type used by the trigger. The default is frequency, where the trigger runs at the specified frequency. The window type means that the trigger will run at the specified frequency, but only in the time window specified in the evaluation_schedule field.

Enum"frequency""window"
evaluation_scheduleobject

A schedule that determines when the trigger is run. When the time is within the scheduled window, the trigger will be run at the specified frequency. Outside of the window, the trigger will not be run.

created_atstring(date-time)read-only
updated_atstring(date-time)read-only
queryobject

A query ID or an inline query that is a strict subset of a Query Specification.

query_idstring

The ID of a Query that meets the criteria for being used as a Trigger, per above.

Response
application/json
{ "id": "string", "name": "string", "description": "string", "threshold": { "op": ">", "value": 0, "exceeded_limit": 1 }, "frequency": 0, "alert_type": "on_change", "disabled": false, "triggered": true, "recipients": [ {} ], "evaluation_schedule_type": "frequency", "evaluation_schedule": { "window": {} }, "created_at": "2019-08-24T14:15:22Z", "updated_at": "2019-08-24T14:15:22Z", "query": {}, "query_id": "string" }

Delete a Trigger

Request

Delete a trigger by specifying the trigger ID. The body of the DELETE request should be empty.

Path
datasetSlugstringrequired

The dataset slug.

triggerIdstringrequired

The unique identifier (ID) of a Trigger.

curl -i -X DELETE \
  'https://api.honeycomb.io/1/triggers/{datasetSlug}/{triggerId}' \
  -H 'X-Honeycomb-Team: YOUR_API_KEY_HERE'

Responses

Success - no content

Response
{ "error": "unknown API key - check your credentials" }

Get Triggers Associated with a Recipient

Request

List all triggers that will alert a given Recipient. Important: This request will return all Triggers associated with the specific Recipient across your entire Honeycomb team rather than being scoped to a dataset or environment.

Path
recipientIdstringrequired

Unique identifier (ID) of a Recipient.

curl -i -X GET \
  'https://api.honeycomb.io/1/recipients/{recipientId}/triggers' \
  -H 'X-Honeycomb-Team: YOUR_API_KEY_HERE'

Responses

Success

Bodyapplication/jsonArray [
idstringread-only

The unique identifier (ID) for this Trigger.

namestring[ 1 .. 120 ] characters

A short, human-readable name for this Trigger, which will be displayed in the UI and when the trigger fires.

descriptionstring<= 1023 characters

A longer description, displayed on the Trigger's detail page.

thresholdobject

The threshold over which the trigger will fire, specified as both an operator and a value.

frequencyinteger

The interval in seconds in which to check the results of the query’s calculation against the threshold. Cannot be more than 4 times the query's duration (i.e. duration <= frequency*4). See A Caveat on Time for more information on specifying a query's duration. minimum: 60 maximum: 86400 multipleOf: 60 default: 900

alert_typestring

How often to fire an alert when a trigger threshold is crossed.

  • on_change sends a trigger notification when the result of the specified calculation crosses the threshold. The trigger resolves only when the result of the query no longer satisfies the threshold condition.
  • on_true keeps sending a trigger notification at current frequency when and while the threshold is met. (This reflects the same behavior as the "Send an alert every time a threshold is met" checkbox in the Honeycomb UI.)
Default "on_change"
Enum"on_change""on_true"
disabledboolean

If true, the trigger will not be evaluated and alerts will not be sent.

Default false
triggeredbooleanread-only

If true, the trigger has crossed its specified threshold without resolving.

recipientsArray of objects

A list of Recipients to notify when the Trigger fires. Using type+target is deprecated. First, create the Recipient via the Recipients API, and then specify the ID.

evaluation_schedule_typestring

The schedule type used by the trigger. The default is frequency, where the trigger runs at the specified frequency. The window type means that the trigger will run at the specified frequency, but only in the time window specified in the evaluation_schedule field.

Enum"frequency""window"
evaluation_scheduleobject

A schedule that determines when the trigger is run. When the time is within the scheduled window, the trigger will be run at the specified frequency. Outside of the window, the trigger will not be run.

created_atstring(date-time)read-only
updated_atstring(date-time)read-only
queryobject

A query ID or an inline query that is a strict subset of a Query Specification.

query_idstring

The ID of a Query that meets the criteria for being used as a Trigger, per above.

]
Response
application/json
[ { "id": "string", "name": "string", "description": "string", "threshold": {}, "frequency": 0, "alert_type": "on_change", "disabled": false, "triggered": true, "recipients": [], "evaluation_schedule_type": "frequency", "evaluation_schedule": {}, "created_at": "2019-08-24T14:15:22Z", "updated_at": "2019-08-24T14:15:22Z", "query": {}, "query_id": "string" } ]

Errors

The Honeycomb API returns standardized error responses, as documented here.