The Notification Pipeline

The notification pipeline is a websocket connection that broadcasts the events of a hub. It broadcasts JSON messages over the socket, with a header field that can be used to determine the event that took place.

Auth Return
  • data

    The data object holding the token.

    Show child fields
Notificaiton Channel Message
  • topic

    A header topic, for the full list see the table included on this page.

  • object

    The ID of the notification and potential state and error information.

    Show child fields
  • context

    The context associated with this notification including but not limited to data on the hub, account, environment, DNS zone, cluster, or containers associated with this notification.

    Show child fields
  • flags

    Flags used internally, if returned will show null.


Connecting to the websocket is a two step process.

First you authenticate against the endpoint:


This returns a URL and a token you can use to create a websocket connection to the notification pipeline.

If you're using the TypeScript client this is automatically handled for you. The function calls are shown in the example area. If you're not using the TypeScript client its probably a good idea write a short script to handle the two steps.

The return from the authentication request will be a token, and the token will need to be appended to the URL as a parameter to complete the websocket connection.



Connecting to the Notification Pipeline

The hub pipeline will send notifications about the events happening on the hub (types listed below). It's at your discretion to use that information and decide whether to make a follow up API call for the rest.


HeaderTypeDescription credit state has changed. credit error has occurred. discount items state has changed. discount item error has occurred.
billing.invoice.state.changedHubA billing invoice has changed state.
billing.invoice.errorHubA billing invoice has encountered an error.
billing.invoice.createdHubA new billing invoice was created.
billing.method.state.changedHubThe billing method state has been changed.
billing.method.errorHubA billing method error has occurred.
billing.method.createdHubA billing method has been created.
billing.method.updatedHubThe billing method has been updated.
billing.order.state.changedHubAn order state has changed.
billing.order.errorHubAn order error has occurred.
billing.order.createdHubA new order has been created.
billing.order.updatedHubA billing order has been updated.
billing.service.state.changedHubA billing service state has changed.
billing.service.errorHubA billing service error has occurred.
container.createdHubA container has been created.
container.updatedHubA containers has been updated.
container.reconfiguredHubA container has been reconfigured.
container.state.changedHubA container state has changed.
container.desired_state.changedHubA container state change has been requested.
container.errorHubA container error has occurred.
container.instance.state.changedHubThere has been a state change in the container instance.
container.instance.errorHubThe container instance has produced an error container instance's health has changed. Possible status's are healthy and unhealthy
container.instances.reconfiguredHubThe container instance has been reconfigured.
dns.certificate.state.changedHubA certificate state has changed.
dns.certificate.errorHubA certificate error has occurred. DNS zone state change has occurred. DNS zone error has occurred. DNS zone has been created. DNS zone has been verified. DNS zone has been reconfigured. DNS Zone records have been reconfigured. DNS Zone record has changed state. DNS Zone record's certificate is ready. DNS Zone record's certificate is ready.
environment.startedHubAn environment has been started.
environment.stoppedHubAn environment has been stopped.
environment.createdHubAn environment has been created.
environment.updatedHubAn environment has been updated.
environment.state.changedHubThe state of an environment has changed.
environment.errorHubA environment error has occurred. environment service container has been reconfigured. new user for an environment VPN has been updated. load balancer has successfully acquired an IP.
environment.variable.createdHubAn environment secret variable has been created.
environment.variable.updatedHubAn environment secret variable has been updated.
environment.variable.state.changedHubAn environment secret variable's state has changed.
hub.state.changedHubThe state of a hub has changed.
hub.updatedHubA hub has been updated.
hub.membership.newHubThere has been a new hub membership event.
hub.api_key.state.changedHubThe state of a hub API key has changed.
hub.api_key.errorHubA hub API key error has occurred.
hub.api_key.createdHubA new hub API key has been created.
hub.api_key.updatedHubA hub API key has been updated.
image.state.changedHubThe state of an image has changed.
image.updatedHubAn image has been updated.
image.errorHubAn image error has occurred.
infrastructure.ips.assignment.state.changedHubThe IP assignment on the some infrastructure has changed state.
infrastructure.ips.assignment.errorHubThere was an error with the IP assignment on some infrastructure.
ips_pool.state.changedHubThe state of an IP Pool has changed.
ips_pool.errorHubAn IP Pool error has occurred.
infrastructure.server.state.changedHubThe state of a server has changed.
infrastructure.server.errorHubA server error has occurred.
infrastructure.server.newHubA new server has been added.
infrastructure.server.reconfiguredHubA server has been reconfigured.
job.createdHubThe job has been created.
job.state.changedHubThe job's state has changed.
stack.createdHubA new stack has been created.
stack.errorHubA stack error has occurred.
stack.state.changedHubThe state of a stack has changed.
stack.updatedHubA stack has updated. new stack build has been created. state of a stack build has changed. stack build error has occurred. stack build has been deployed. new SDN network has been created. SDN network has been reconfigured. state of a SDN network has changed. The SDN network was updated.
pipeline.state.changedHubA pipelines state has changed.
pipeline.errorHubA pipeline error has occurred.
pipeline.updatedHubA pipeline has been updated.
pipeline.createdHubA pipeline has been created.
pipeline.key.state.changedHubA pipeline key has encounterd a state change.
pipeline.key.errorHubA pipeline key error has occurred.
pipeline.key.updatedHubA pipeline key has been updated.
pipeline.key.createdHubA pipeline key has been created. pipeline run state change has occured. pipeline run error has occured. pipeline run has been created.


Example Hub Connection
# This will return the AUTH data object
$ curl \
"Authorization: Bearer API_KEY"
"X-Hub-Id: HUB_ID"
# Capture the Auth data object returned above and save the token to use in this call (AUTH_TOKEN)
$ curl -o - --http1.1 --include \
--no-buffer \
--header "Connection: Upgrade" \
--header "Upgrade: websocket" \
--header "Host:" \
--header "Origin:" \
"Sec-WebSocket-Key: API_KEY"
--header "Sec-WebSocket-Version: 13" \
"x-cycle-token: AUTH_TOKEN"
"Authorization: Bearer API_KEY"
"X-Hub-Id: HUB_ID"

GET /v1/hubs/current/notifications

Curl Example Auth Response
"data": {
"token": "Im3tH1omJkGH9pdtesNcPcgxl3iC7nGDsgH5pZU8g odJNzIaicp7ixkDMgrvKaadRrLcU1JtWmTsRvlC4AKh_D_DobPM0j_\n rgvQL4Cq017P6Wi5OuasC5VGxm4UATkdNEQRXbm820\n 9kYyif2g9YdEA 9RhrUz4cWbKMwjy3o41Eceno2nxvaTub_meLBmxljC"
Example Pipeline Event
"topic": "container.reconfigured",
"object": {
"id": "5d71fa31db2ab0000167b87e",
"state": "",
"error": ""
"context": {
"hub_id": "5d71fa31db2ab0000167b87e",
"account_id": "5d71fa31db2ab0000167b87e",
"environments": [
"dns_zones": [],
"clusters": [
"containers": [