honeycombDocs
Honeycomb 0.6.1 and IAM 5 are live

The services have switched to IAM 5. Installer publication and the latest popup improvements are being verified. Read the migration guide →

Integrate / HONEYCOMB

HTTP API

Authentication, mutation headers, request examples, and every registered v1 route.

Discover the contract#

curl -fsS https://backend.honeycomb.teamofsilicons.com/api/contracts
curl -fsS https://backend.honeycomb.teamofsilicons.com/api/v1/iam \
  -H 'Honeycomb-API-Version: v1' \
  -H 'Honeycomb-Client-Version: 0.1.0'

/api/contracts remains available when a version retires. The API path selects the major contract. An explicit version header must match it. See Compatibility for lifecycle rules.

Headers#

Header Use
Authorization: Bearer … Honeycomb user session for authenticated operations.
Honeycomb-API-Version: v1 or v2 Explicit contract selection matching the URL.
Honeycomb-Client-Version: 0.3.0 Semantic client version for minimum-version policy (v1 minimum 0.1.0; v2 minimum 0.3.0).
Idempotency-Key Stable key for a logical mutation, 16–255 visible ASCII characters.
If-Match Current integer resource revision for revision-guarded mutations.
X-Testing-Environment-Key Explicit isolated environment root key when applicable.
X-Honeycomb-Telemetry: false Opt out of optional diagnostics for this request.

Do not send tokens to storage hosts or arbitrary redirect destinations. Use the official client when possible; it centralizes encoding, limits, and integrity checks.

Read a catalog page#

curl -fsS 'https://backend.honeycomb.teamofsilicons.com/api/v1/apps?q=briefcase&page=1'

Catalog pages contain items, page, per_page, and total. App records include app_id, org_id, name, description, visibility, state, configuration/IAM revisions, requested/effective config, latest release version, and aggregate community counts. Treat unknown response fields as compatible extensions.

Use percent-encoded path segments for application IDs: my-org%3Emy-app. An authenticated request can include accessible private results; anonymous results remain public.

Creation and uploads#

POST /api/v1/apps accepts the AppInput JSON. Updates use PUT /api/v1/apps/{id} with a complete input and If-Match.

Release uploads accept raw gzip archive bytes with Content-Type: application/gzip, not a multipart form. Include mutation headers. The maximum archive is 512 MiB. POST /api/v1/packages/validate validates the format-1 package, which retains semantic-version compatibility for historical archives.

Operation Legacy v1 Channel-aware v2
Upload POST /api/v1/apps/{id}/releases; production implicit, original semantic versions and retry keys retained POST /api/v2/apps/{id}/releases?channel=prod or ?channel=dev; channel required, version must be numeric x.y.z
List GET /api/v1/apps/{id}/releases; production only GET /api/v2/apps/{id}/releases?channel=dev; defaults to prod when omitted
Download GET /api/v1/apps/{id}/download?version=1.0.0; production only GET /api/v2/apps/{id}/download?channel=dev&version=1.0.0; channel defaults prod, version defaults latest in that channel
Promote Not available POST /api/v2/apps/{id}/releases/{dev_version}/promote with JSON {"version":"2.0.0"} and mutation headers

Release records include visibility, configuration_revision, permission_approval_required, and optional approval_status. For public apps, normal lists, downloads (including a requested version), and latest_version select only public releases. Managers can use the v2 list's include_private=true query to inspect pending releases; this does not grant install or update access to those releases. An upload receipt includes the stored release's status in its release object. Approval of the matching configuration publishes the release automatically after archive reconciliation.

The CLI, Rust client and console use v2 for release operations. Authentication, app configuration, catalog, publication and testing-environment APIs remain v1. There is no automatic major-version fallback. Existing immutable releases remain readable with their original versions and bytes.

Logo uploads use raw bytes with Content-Type: application/octet-stream at POST /api/v1/organizations/{org}/logos; limit 2 MiB. Releases and assets covers image rules and visibility.

GET /api/v2/apps/{id}/download?channel=prod&version=1.0.0 downloads an authorized production release. Verify its byte length and SHA-256 against the release record, then validate the archive before extracting it.

Errors and pending results#

Errors use an error object with code, message, and optional details. Failed CLI commands exit nonzero; a raw HTTP client must check the response status. Authentication failures require a fresh valid grant, revision conflicts require reading current state, and integration failures require repairing the named dependency.

Cross-service mutations may return durable pending work. Inspect its operation ID rather than assuming the change is active. Exact bodies and types are defined in the core models and client methods.

Registered routes#

The following index is generated from the server router. It lists implemented routes, not a claim that every dependent production integration is complete. Authentication and role checks still apply to each handler.

Method Path Handler
GET /health health
GET /api/contracts discovery
GET /api/v1/contract discovery
GET /api/v2/contract discovery_v2
GET /api/v1/cli/latest latest
GET /api/v1/iam iam
POST /api/v1/auth/login login
POST /api/v1/auth/refresh refresh
POST /api/v1/auth/logout logout
GET /api/v1/auth/status status
POST /api/v1/reports report
POST /api/v1/telemetry ingest
GET /api/v1/review-requests inbox
GET /api/v1/legacy-review-requests/{id} legacy_request
GET /api/v1/sent-requests sent
GET /api/v1/request-activity summary
POST /api/v1/requests/{id}/read mark_read
POST /api/v1/review-requests/{id}/activate activate
GET /api/v1/review-requests/{id}/{provider} detail
POST /api/v1/review-requests/{id}/{provider}/messages message
POST /api/v1/review-requests/{id}/plan retry_plan
POST /api/v1/review-requests/{id}/{provider}/decisions decide
GET /api/v1/organizations/{org}/scope-catalog scopes
GET /api/v1/bundles list
GET /api/v1/bundles/{id} get
PUT /api/v1/bundles/{id} configure
GET /api/v1/apps search
POST /api/v1/apps create_app
POST /api/v1/organizations/{org}/logos upload
GET /api/v1/apps/{id} get_app
PUT /api/v1/apps/{id} update_app
GET /api/v1/apps/{id}/operations app_operations
GET /api/v1/apps/{id}/webhook status
POST /api/v1/apps/{id}/webhook mutate
POST /api/v1/operations/{id}/webhook-retry retry
GET /api/v1/apps/{id}/reconciliation status
POST /api/v1/apps/{id}/reconciliation refresh
GET /api/v1/apps/{id}/releases releases_v1
POST /api/v1/apps/{id}/releases upload_release_v1
GET /api/v1/apps/{id}/download download_v1
GET /api/v2/apps/{id}/releases releases
POST /api/v2/apps/{id}/releases upload_release
POST /api/v2/apps/{id}/releases/{version}/promote promote_release
GET /api/v2/apps/{id}/download download
POST /api/v1/apps/{id}/secret-rotations rotate
POST /api/v1/operations/{id}/result recover
GET /api/v1/apps/{id}/reviews reviews
PUT /api/v1/apps/{id}/reviews review
PUT /api/v1/apps/{id}/star star
DELETE /api/v1/apps/{id}/star unstar
POST /api/v1/apps/{id}/publication request_publication
GET /api/v1/apps/{id}/publication publication
POST /api/v1/apps/{id}/publication/messages message
GET /api/v1/operations/{id} operation
POST /api/v1/operations/{id}/retry retry_operation
POST /api/v1/packages/validate validate_archive
GET /api/v1/organizations/{org}/drafts drafts
PUT /api/v1/organizations/{org}/drafts/{id} save_draft
GET /api/v1/environments environments
POST /api/v1/environments create_environment
GET /api/v1/environments/{id} environment
POST /api/v1/environments/{id}/key environment_key
POST /api/v1/environments/{id}/actions/{action} environment_action
POST /api/v1/environments/{id}/imports import
GET /api/v1/environments/{id}/retention status
PUT /api/v1/environments/{id}/retention update
POST /api/v1/environments/{id}/apps/{app}/activity report
POST /webhook/ webhook
POST /api/v1/obo/apps/list delegated_list
GET /api/v1/organizations/{org}/apps member_list
POST /api/v1/storage-authorizations start
GET /api/v1/storage-authorizations/{id} status
POST /api/v1/storage-authorizations/{id}/complete complete
GET /api/v1/ata-verifications list_mine
GET /api/v1/apps/{app}/ata-verifications list
POST /api/v1/apps/{app}/ata-verifications create
POST /api/v1/apps/{app}/ata-verifications/preview preview
POST /api/v1/apps/{app}/ata-verifications/{id}/revoke revoke