curl --request GET \
--url https://api.datalyr.com/v1/onboarding \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.datalyr.com/v1/onboarding"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.datalyr.com/v1/onboarding', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.datalyr.com/v1/onboarding",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.datalyr.com/v1/onboarding"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.datalyr.com/v1/onboarding")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.datalyr.com/v1/onboarding")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"workspace": {
"id": "<string>",
"name": "<string>",
"created": true,
"created_at": "2023-11-07T05:31:56Z",
"active": true,
"plan": "<string>"
},
"tracking": {
"first_event_seen_at": "2023-11-07T05:31:56Z",
"last_event_seen_at": "2023-11-07T05:31:56Z",
"sdk_detected": [
"<string>"
],
"events_last_30d": 123
},
"connections": [
{
"platform": "<string>",
"status": "<string>",
"error": "<string>",
"last_synced_at": "2023-11-07T05:31:56Z"
}
],
"next_steps": [
"<string>"
],
"complete": true
}{
"error": "<string>"
}{
"error": "<string>"
}Get onboarding status
What is set up in this workspace, and what a person still has to do. Every other endpoint reports what the numbers say, which reads the same for a workspace with no traffic and a workspace whose tracking was never installed. This one separates them.
first_event_seen_at is the install signal. null means this workspace has never received an event, ever — it is not a windowed answer and it is not a query that gave up. If the tracking data cannot be read, this endpoint returns 503. It never reports absence it did not verify.
sdk_detected is a 30-day window of the transports that delivered events: web for the browser snippet, the mobile SDK names, and server-side sources such as shopify or stripe. It is not attribution source. A workspace with revenue webhooks but no web entry has a dead storefront snippet, which is exactly the state next_steps names.
next_steps is ordered by dependency, not severity: installation advice comes before integration advice, because connecting an ad account to a workspace that is tracking nothing accomplishes nothing. An empty checklist is expressed as a single sentence saying so, never as an empty array.
What an agent cannot do about any of it. Paying, approving a container script, and minting an API key are all human actions. See Agent-driven setup.
curl --request GET \
--url https://api.datalyr.com/v1/onboarding \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.datalyr.com/v1/onboarding"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.datalyr.com/v1/onboarding', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.datalyr.com/v1/onboarding",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.datalyr.com/v1/onboarding"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.datalyr.com/v1/onboarding")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.datalyr.com/v1/onboarding")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"workspace": {
"id": "<string>",
"name": "<string>",
"created": true,
"created_at": "2023-11-07T05:31:56Z",
"active": true,
"plan": "<string>"
},
"tracking": {
"first_event_seen_at": "2023-11-07T05:31:56Z",
"last_event_seen_at": "2023-11-07T05:31:56Z",
"sdk_detected": [
"<string>"
],
"events_last_30d": 123
},
"connections": [
{
"platform": "<string>",
"status": "<string>",
"error": "<string>",
"last_synced_at": "2023-11-07T05:31:56Z"
}
],
"next_steps": [
"<string>"
],
"complete": true
}{
"error": "<string>"
}{
"error": "<string>"
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Response
Successful response.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
One entry per configured integration, whatever its health.
Show child attributes
Show child attributes
Ordered actions for a person to take. Never empty: a workspace with nothing outstanding gets one sentence saying so.
True when every source answered. A partial read returns 503 instead.
Was this page helpful?