Events API

Canvas can receive events data pushed from your event stream directly.

0. Ask the Canvas team to enable the API

Before proceeding, ask the Canvas team to enable the Events API for your team.

1. Create an API key

This step can only be done by a user with Owner permissions. Navigate to the Settings page and scroll to the Events API section. Click the Create token button, then copy the generated key. This key is only generated one time and is not recoverable. You can create new keys.

Important: this key has permission to populate tables in your warehouse. Control access to the key as such.

2. Configure the API call

Configure your event stream to post the events data to events.canvasapp.com/v1/event. Here's code with an example payload:

POST /v1/event HTTP/1.1
Host: events.canvasapp.com
Content-Type: application/json
X-Auth-Token: [your api token]
Content-Length: 237

{
  "version": 1,
  "type": "event",
  "event": "Purchased an Item",
  "properties": {
    "revenue": "39.95",
    "shippingMethod": "2-day"
  },
  "timestamp": "2012-12-02T00:30:08.276Z"
}

For Python:

import requests

url = "https://events.canvasapp.com/v1/event"

payload="{\"version\": 1,\"type\": \"event\",\"event\": \"Purchased an Item\",\"properties\" : {\"revenue\": \"39.95\",\"shippingMethod\" : \"2-day\"},\"timestamp\" : \"2012-12-02T00:30:08.276Z\"}"
headers = {
  'Content-Type': 'application/json',
  'X-Auth-Token': '[your_api_token]'
}

response = requests.request("POST", url, headers=headers, data=payload)

print(response.text)

For NodeJS:

var axios = require('axios');
var data = JSON.stringify({
  version: 1,
  type: 'event',
  event: 'Purchased an Item',
  properties: { revenue: '39.95', shippingMethod: '2-day' },
  timestamp: '2012-12-02T00:30:08.276Z',
});

var config = {
  method: 'post',
  url: 'https://events.canvasapp.com/v1/event',
  headers: {
    'Content-Type': 'application/json',
    'X-Auth-Token': '[your_api_token]',
  },
  data: data,
};

axios(config)
  .then(function (response) {
    console.log(JSON.stringify(response.data));
  })
  .catch(function (error) {
    console.log(error);
  });
© 2024 Infinite Canvas Inc.
Twitter logo
LinkedIn logo
Spotify logo