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

Burn Alerts

Operations

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

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

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

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

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

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

List all API Keys

Request

Path
teamSlugstringrequired

The slug of the Team

Query
page[next]string

The string value of the next attribute from a previous result page. The cursor value must be empty or omitted for the first request of a cursor-paginated query.

Example: page[next]=eyxJjcmAVhdGVkX
page[size]number[ 1 .. 100 ]

The number of entries to include per response. Maximum

Default 20
Example: page[size]=10
curl -i -X GET \
  'https://api.honeycomb.io/2/teams/{teamSlug}/api-keys?page%5Bnext%5D=string&page%5Bsize%5D=20' \
  -H 'Authorization: Bearer <YOUR_HONEYCOMB_KEY_ID:HONEYCOMB_KEY_SECRET_HERE>'

Responses

Success

Headers
Ratelimitstring

The (draft07) recommended header from the IETF on rate limiting. The value of the header is formatted "limit=X, remaining=Y, reset=Z". Where:

  • X is the maximum number of requests allowed in the window
  • Y is the number of requests remaining in the window
  • Z is the number of seconds until the limit resets
Example: "limit=100, remaining=50, reset=60"
RateLimitPolicystring

The (draft07) recommended header from the IETF on rate limiting. The value of the header is formatted "X;w=Y". Where:

  • X is the maximum number of requests allowed in a window
  • Y is the size of the window in seconds
Example: "100;w=60"
Bodyapplication/vnd.api+json
dataArray of objects(ApiKeyObject)required
data[].​idstringread-only

The unique identifier of the API Key

Example: "hcxik_12345678901234567890123456"
data[].​typestringread-only
Value"api-keys"
data[].​attributesobject(ApiKeyAttributes)
data[].​relationshipsobject
data[].​linksobject
linksobject(PaginationLinks)

Links to iterate through the pages of results.

Response
application/vnd.api+json
{ "data": [ {} ], "links": { "next": "/2/teams/my-team/api-keys?page[after]=3025fa645ad1100d&page[size]=10" } }

Create an API Key

Request

This creates an API Key, which will return the API Key components in the response. The Key ID will be found at data.id and the Key Secret will be found at data.attributes.secret. For security reasons the Key Secret will only be available during creation so make sure to save it.

To use a newly-created Ingest Key it should be passed in the X-Honeycomb-Team header with the API Key's ID and secret concatenated (and with no separator). For example, X-Honeycomb-Team: hcxik_1234567890123456789012345612345678901234567890123456789012

Check out our best practices for API Keys.

Path
teamSlugstringrequired

The slug of the Team

Bodyapplication/vnd.api+jsonrequired
dataobjectrequired
Example: {"type":"api-keys","attributes":{"name":"my ingest key","key_type":"ingest","permissions":{"create_datasets":true}},"relationships":{"environment":{"data":{"id":"hcxen_12345678901234567890123456","type":"environments"}}}}
data.​typestringrequired
Value"api-keys"
Example: "api-keys"
data.​attributesobject(IngestKeyAttributes)required
Example: {"name":"my ingest key","key_type":"ingest","permissions":{"create_datasets":true}}
data.​attributes.​key_typestringrequired

The type of API Key

Value"ingest"
Example: "ingest"
data.​attributes.​namestring<= 100 charactersrequired

A human-readable name for the API Key

Example: "my ingest key"
data.​attributes.​disabledboolean

Whether the API Key is disabled

Default false
Example: false
data.​attributes.​permissionsobject

The permissions granted to this API Key

Example: {"create_datasets":true}
data.​relationshipsobjectrequired
Example: {"environment":{"data":{"id":"hcxen_12345678901234567890123456","type":"environments"}}}
data.​relationships.​environmentobject(EnvironmentRelationship)required

The Environment this object is associated with.

Example: {"data":{"id":"hcxen_12345678901234567890123456","type":"environments"}}
data.​relationships.​environment.​dataobjectrequired
Example: {"id":"hcxen_12345678901234567890123456","type":"environments"}
data.​relationships.​environment.​data.​idstringrequired

The ID of the Environment this object is associated with.

Example: "hcxen_12345678901234567890123456"
data.​relationships.​environment.​data.​typestringrequired
Value"environments"
Example: "environments"
curl -i -X POST \
  'https://api.honeycomb.io/2/teams/{teamSlug}/api-keys' \
  -H 'Authorization: Bearer <YOUR_HONEYCOMB_KEY_ID:HONEYCOMB_KEY_SECRET_HERE>' \
  -H 'Content-Type: application/vnd.api+json' \
  -d '{
    "data": {
      "type": "api-keys",
      "attributes": {
        "name": "my ingest key",
        "key_type": "ingest",
        "permissions": {
          "create_datasets": true
        }
      },
      "relationships": {
        "environment": {
          "data": {
            "id": "hcxen_12345678901234567890123456",
            "type": "environments"
          }
        }
      }
    }
  }'

Responses

Created

Headers
Ratelimitstring

The (draft07) recommended header from the IETF on rate limiting. The value of the header is formatted "limit=X, remaining=Y, reset=Z". Where:

  • X is the maximum number of requests allowed in the window
  • Y is the number of requests remaining in the window
  • Z is the number of seconds until the limit resets
Example: "limit=100, remaining=50, reset=60"
RateLimitPolicystring

The (draft07) recommended header from the IETF on rate limiting. The value of the header is formatted "X;w=Y". Where:

  • X is the maximum number of requests allowed in a window
  • Y is the size of the window in seconds
Example: "100;w=60"
Bodyapplication/vnd.api+json
dataobjectrequired
data.​idstringread-onlyrequired

The unique identifier of the API Key

Example: "hcxik_12345678901234567890123456"
data.​typestringread-onlyrequired
Value"api-keys"
data.​attributesobject(IngestKeyAttributes)required
data.​attributes.​key_typestringrequired

The type of API Key

Value"ingest"
Example: "ingest"
data.​attributes.​namestring<= 100 charactersrequired

A human-readable name for the API Key

Example: "us-west-2 collectors key"
data.​attributes.​disabledboolean

Whether the API Key is disabled

Default false
Example: false
data.​attributes.​permissionsobject

The permissions granted to this API Key

data.​attributes.​timestampsobjectread-only
data.​attributes.​secretstringread-only

The API Key secret. This is the only time it will be returned.

Example: "12345678901234567890123456789"
data.​relationshipsobjectrequired
data.​relationships.​environmentobject(EnvironmentRelationship)required

The Environment this object is associated with.

data.​relationships.​environment.​dataobjectrequired
data.​relationships.​environment.​data.​idstringrequired

The ID of the Environment this object is associated with.

Example: "hxenv_12345678901234567890123456"
data.​relationships.​environment.​data.​typestringrequired
Value"environments"
data.​relationships.​creatorobject(CreatorRelationship)read-onlyrequired

The User who initially created this resource.

data.​relationships.​creator.​dataobjectrequired
data.​relationships.​creator.​data.​idstringrequired

The ID of this user.

data.​relationships.​creator.​data.​typestringrequired
Value"users"
data.​relationships.​editorobject(EditorRelationship)read-onlyrequired

The User who last edited this resource.

data.​relationships.​editor.​dataobjectrequired
data.​relationships.​editor.​data.​idstringrequired

The ID of this user.

data.​relationships.​editor.​data.​typestringrequired
Value"users"
data.​linksobjectrequired
data.​links.​selfstringread-only

The URL of this resource

Example: "/2/teams/my-team/api-keys/hcxik_12345678901234567890123456"
Response
application/vnd.api+json
{ "data": { "id": "hcxik_12345678901234567890123456", "type": "api-keys", "attributes": {}, "relationships": {}, "links": {} } }

Get an API Key

Request

Path
teamSlugstringrequired

The slug of the Team

IDstringrequired

A unique identifier

curl -i -X GET \
  'https://api.honeycomb.io/2/teams/{teamSlug}/api-keys/{ID}' \
  -H 'Authorization: Bearer <YOUR_HONEYCOMB_KEY_ID:HONEYCOMB_KEY_SECRET_HERE>'

Responses

Success

Headers
Ratelimitstring

The (draft07) recommended header from the IETF on rate limiting. The value of the header is formatted "limit=X, remaining=Y, reset=Z". Where:

  • X is the maximum number of requests allowed in the window
  • Y is the number of requests remaining in the window
  • Z is the number of seconds until the limit resets
Example: "limit=100, remaining=50, reset=60"
RateLimitPolicystring

The (draft07) recommended header from the IETF on rate limiting. The value of the header is formatted "X;w=Y". Where:

  • X is the maximum number of requests allowed in a window
  • Y is the size of the window in seconds
Example: "100;w=60"
Bodyapplication/vnd.api+json
dataobject(ApiKeyObject)required
data.​idstringread-only

The unique identifier of the API Key

Example: "hcxik_12345678901234567890123456"
data.​typestringread-only
Value"api-keys"
data.​attributesobject(ApiKeyAttributes)
data.​relationshipsobject
data.​linksobject
Response
application/vnd.api+json
{ "data": { "id": "hcxik_12345678901234567890123456", "type": "api-keys", "attributes": {}, "relationships": {}, "links": {} } }

Update an API Key

Request

Path
teamSlugstringrequired

The slug of the Team

IDstringrequired

A unique identifier

Bodyapplication/vnd.api+jsonrequired
dataobjectrequired
data.​idstringrequired

The unique identifier of the API Key

Example: "hcxik_12345678901234567890123456"
data.​typestringrequired
Value"api-keys"
data.​attributesobjectrequired
data.​attributes.​namestring

A human-readable name for the API Key

Example: "updated key name"
data.​attributes.​enabledboolean

Whether the API Key is enabled

Example: false
curl -i -X PATCH \
  'https://api.honeycomb.io/2/teams/{teamSlug}/api-keys/{ID}' \
  -H 'Authorization: Bearer <YOUR_HONEYCOMB_KEY_ID:HONEYCOMB_KEY_SECRET_HERE>' \
  -H 'Content-Type: application/vnd.api+json' \
  -d '{
    "data": {
      "id": "hcxik_12345678901234567890123456",
      "type": "api-keys",
      "attributes": {
        "name": "updated key name",
        "enabled": false
      }
    }
  }'

Responses

Success

Headers
Ratelimitstring

The (draft07) recommended header from the IETF on rate limiting. The value of the header is formatted "limit=X, remaining=Y, reset=Z". Where:

  • X is the maximum number of requests allowed in the window
  • Y is the number of requests remaining in the window
  • Z is the number of seconds until the limit resets
Example: "limit=100, remaining=50, reset=60"
RateLimitPolicystring

The (draft07) recommended header from the IETF on rate limiting. The value of the header is formatted "X;w=Y". Where:

  • X is the maximum number of requests allowed in a window
  • Y is the size of the window in seconds
Example: "100;w=60"
Bodyapplication/vnd.api+json
dataobject(ApiKeyObject)required
data.​idstringread-only

The unique identifier of the API Key

Example: "hcxik_12345678901234567890123456"
data.​typestringread-only
Value"api-keys"
data.​attributesobject(ApiKeyAttributes)
data.​relationshipsobject
data.​linksobject
Response
application/vnd.api+json
{ "data": { "id": "hcxik_12345678901234567890123456", "type": "api-keys", "attributes": {}, "relationships": {}, "links": {} } }

Delete an API Key

Request

This deletes and immediately deactivates the API Key. This is an irreversible operation.

Path
teamSlugstringrequired

The slug of the Team

IDstringrequired

A unique identifier

curl -i -X DELETE \
  'https://api.honeycomb.io/2/teams/{teamSlug}/api-keys/{ID}' \
  -H 'Authorization: Bearer <YOUR_HONEYCOMB_KEY_ID:HONEYCOMB_KEY_SECRET_HERE>'

Responses

No Content

Headers
Ratelimitstring

The (draft07) recommended header from the IETF on rate limiting. The value of the header is formatted "limit=X, remaining=Y, reset=Z". Where:

  • X is the maximum number of requests allowed in the window
  • Y is the number of requests remaining in the window
  • Z is the number of seconds until the limit resets
Example: "limit=100, remaining=50, reset=60"
RateLimitPolicystring

The (draft07) recommended header from the IETF on rate limiting. The value of the header is formatted "X;w=Y". Where:

  • X is the maximum number of requests allowed in a window
  • Y is the size of the window in seconds
Example: "100;w=60"
Response
{ "error": "unknown API key - check your credentials" }

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

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

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

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

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

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

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

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

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

Errors

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