Server Side Analytics APIs

Patrick Madsen Updated by Patrick Madsen

Authentication

Authenticate to the Tracking API by sending your account's Write Key along with a request. Authentication uses HTTP Basic Auth, which involves a username:password that is base64 encoded and prepended with the string Basic.

In practice that means taking a Dreamdata source API Key, 'abc123', as the username, adding a colon, and then the password field is left empty:

curl -u "abc123:" -X POST https://api.dreamdata.cloud/v1/batch \
-H 'Content-Type: application/json' \
-d ...

Payloads: Track & Identify

The endpoint only supports batch events of up to 500kb worth of data (the total size of the body of the request). The below example shows how to construct such a request with an a couple of identify and track events in it:

{
"messageId": "6f47f5a0-4118-42de-9e15-95cf9ed2a426",
"sentAt": "2015-12-02T00:30:08.276Z",
"batch": [
{
"type": "identify",
"messageId":"6ad2be86-6d78-43bd-8a5b-846ddbc042c2",
"userId": "019mr8mf4r",
"traits": {
"email": "jake@yahoo.com",
"name": "Jake Peterson",
"age": 26
},
"context": {
"ip": "24.5.68.47",
"library": {
"name": "customer",
"version": "v1"
},
"campaign": {
"name": "my_campaign",
"source": "demo",
"medium": "calendly",
"term": "",
"content": ""
}
},
"timestamp": "2012-12-02T00:30:08.276Z"
},
{
"type": "track",
"messageId":"3f8236bc-c010-43bb-a341-cd30b5228e9d",
"userId": "019mr8mf4r",
"event": "Song Played",
"properties": {
"name": "Fallin for You",
"artist": "Dierks Bentley"
},
"context": {
"ip": "24.5.68.47",
"library": {
"name": "customer",
"version": "v1"
},
"campaign": {
"name": "my_campaign",
"source": "demo",
"medium": "calendly",
"term": "",
"content": ""
}
},
"timestamp": "2012-12-02T00:30:12.984Z"
},
{
"type": "identify",
"messageId":"8f9b32ce-5809-411b-8b26-c780e4a1cee1",
"anonymousId": "971msfsdfsdfberj8mk7p",
"traits": {
"email": "cindy@example.com",
"name": "Cindy Gonzalez",
"age": 23
},
"context": {
"ip": "24.5.68.47",
"library": {
"name": "customer",
"version": "v1"
},
"campaign": {
"name": "my_campaign",
"source": "demo",
"medium": "calendly",
"term": "",
"content": ""
}
},
"timestamp": "2015-2-02T00:30:08.276Z"
},
{
"type": "track",
"messageId":"092c8cc9-b0f0-48e2-b602-b34d235533d8",
"anonymousId": "971msfsdfsdfberj8mk7p",
"event": "Song Played",
"properties": {
"name": "Get Right",
"artist": "Jennifer Lopez"
},
"context": {
"ip": "24.5.68.47",
"library": {
"name": "customer",
"version": "v1"
},
"campaign": {
"name": "my_campaign",
"source": "demo",
"medium": "calendly",
"term": "",
"content": ""
}
},
"timestamp": "2015-2-02T00:30:12.984Z"
}
]
}

Endpoint

To send a list of events to the Dreamdata Analytics Serverside APIs send a POST request to the following endpoint. The example uses the example payload from above:

curl -u "abc123:" -X POST https://api.dreamdata.cloud/v1/batch \
-H 'Content-Type: application/json' \
-d @example.json

SDKs

The Node SDK is documented in the public GitHub repository here.

https://github.com/dreamdata-io/analytics-node

Go SDK

The Go SDK is documented in the public GitHub repository here.

https://github.com/dreamdata-io/analytics-go

Curl

Combining the above sections into an example payload, and with the above batch payload example written to a file called example.json , the below would be the curl request that would result in those events being tracked by the dreamdata analytics api:

curl -u "abc123:" -X POST https://api.dreamdata.cloud/v1/batch \
-H 'Content-Type: application/json' \
-d @example.json

How did we do?

Query parameters

Setting up Dreamdata Web tracking (analytics.js)

Contact