Get the analytics catalog
curl --request GET \
--url https://api.burthq.com/api/v1/analytics/catalog \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.burthq.com/api/v1/analytics/catalog"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.burthq.com/api/v1/analytics/catalog', 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.burthq.com/api/v1/analytics/catalog",
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.burthq.com/api/v1/analytics/catalog"
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.burthq.com/api/v1/analytics/catalog")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.burthq.com/api/v1/analytics/catalog")
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{
"catalogVersion": "2026-10-20.1",
"models": [
{
"name": "agent_runs",
"description": "One row for each agent run; grouping by shipment_reference is the one exception and repeats a run once for each reference it holds. Sub-agent work and the supporting browser, phone, inbound-phone, and platform runs it starts are not counted separately. The date range filters on createdAt.",
"grain": "one agent run; sub-agent and supporting runs are not counted separately",
"eventClock": "createdAt",
"metrics": [
{
"name": "run_count",
"type": "number",
"description": "Agent runs, whatever their status.",
"additive": true,
"deprecated": null
},
{
"name": "completed_run_count",
"type": "number",
"description": "Agent runs that completed successfully (COMPLETED).",
"additive": true,
"deprecated": null
},
{
"name": "failed_run_count",
"type": "number",
"description": "Agent runs that failed (FAILED).",
"additive": true,
"deprecated": null
},
{
"name": "cancelled_run_count",
"type": "number",
"description": "Agent runs that were cancelled (CANCELLED).",
"additive": true,
"deprecated": null
},
{
"name": "active_run_count",
"type": "number",
"description": "Agent runs still working or waiting: PENDING, RUNNING, WAITING_FOR_SLOT, CANCELLING, AWAITING_REPLY, SLEEPING, PAUSING, or PAUSED.",
"additive": true,
"deprecated": null
},
{
"name": "run_success_rate",
"type": "number",
"description": "Completed agent runs divided by the sum of completed and failed runs. Cancelled and active runs are excluded from both sides. The result is null when the denominator is zero.",
"additive": false,
"deprecated": null
},
{
"name": "unique_initiator_count",
"type": "number",
"description": "Distinct identified starters. A starter may be a person or an automated starter. Starters without identifiers are excluded.",
"additive": false,
"deprecated": null
},
{
"name": "call_count",
"type": "number",
"description": "Phone calls placed or received for the agent run, including calls its sub-agents placed. Every linked call counts, whatever its outcome and whether or not a connect time was recorded. Calls count in the run's creation period, whatever day they happened. Manual test calls are not counted.",
"additive": true,
"deprecated": null
},
{
"name": "connected_call_count",
"type": "number",
"description": "Calls counted by call_count that have a recorded connect time. In practice that means calls on the current phone provider; older calls count in call_count but never here.",
"additive": true,
"deprecated": null
},
{
"name": "call_duration_seconds",
"type": "number",
"description": "Connect-to-end talk time in whole seconds, summed over the calls counted by connected_call_count that also have a recorded end time. Older calls have no connect time and add no duration.",
"additive": true,
"deprecated": null
}
],
"dimensions": [
{
"name": "agent_id",
"type": "string",
"description": "Task-agent identifier for the agent run. Filters accept either the agent UUID or its optional slug. Rows for soft-deleted agents are still returned. The agent_name companion comes from the current joined task-agent record, so renames affect historical results. Slug resolution is point-in-time: a slug filter matches whichever agent currently holds that slug, not the agent it identified when the filter was written. Because agent_id always returns the agent UUID, pin the UUID instead of the slug for filters that must stay stable across renames.",
"companions": [
{
"name": "agent_name",
"type": "string",
"description": "Current display name from the joined task-agent record. Soft-deleted agents remain joinable, but renames affect historical results."
}
],
"deprecated": null
},
{
"name": "user_identifier",
"type": "string",
"description": "Identifier for the person or automated starter that started the run, such as a normalized email address or phone number. Rows without an identifier group together and return null.",
"companions": [
{
"name": "user_name",
"type": "string",
"description": "Lexicographically greatest non-null display name in the user-identifier group."
}
],
"deprecated": null
},
{
"name": "user_type",
"type": "string",
"description": "Class of the starter: internal, external, automated, unknown, or null when absent. The automated value marks an automated starter, which is a schedule or integration rather than a person.",
"companions": [],
"deprecated": null
},
{
"name": "day",
"type": "date",
"description": "Creation day in the requested IANA timezone, formatted YYYY-MM-DD. Filters take the same format. Only days with data are returned; the series is not gap-filled.",
"companions": [],
"deprecated": null
},
{
"name": "run_id",
"type": "string",
"description": "Agent run identifier. Grouping by it returns one row per run, the raw run-level export; page through it with the cursor.",
"companions": [
{
"name": "created_at",
"type": "string",
"description": "Instant the run was created, in UTC, formatted as ISO 8601."
},
{
"name": "completed_at",
"type": "string",
"description": "Instant the run reached COMPLETED, FAILED, or CANCELLED, in UTC, formatted as ISO 8601. Null while the run is active."
},
{
"name": "shipment_references",
"type": "string",
"description": "Shipment references the run currently holds, comma-separated in stored order. Null when the run holds none. A reference can itself contain a comma, so to get each reference exactly, group by run_id and shipment_reference together for one row per run and reference."
}
],
"deprecated": null
},
{
"name": "shipment_reference",
"type": "string",
"description": "One shipment reference the run currently holds: a load, PO, BOL, PRO, container, booking, or similar number, all kinds mixed together. Values are normalized: uppercased, with labels such as \"Load #\" stripped, and the kind of reference is not recorded. A run holding several references appears in one group for each, so totals summed across groups overcount runs; runs holding none group under null. A filter value matches a reference exactly as returned or after the same normalization, so references the API returns always match when filtered on. Filters match runs holding any filtered value without fanning out; when the dimension is also grouped, only the filtered values come back as groups. A reference removed from a run no longer appears. One shipment can span several runs over time, because a new run starts when a message matches no active run's thread or references.",
"companions": [],
"deprecated": null
},
{
"name": "source",
"type": "string",
"description": "Trigger source that started the run, as recorded. The known values are manual, front_mention, front_email, slack_mention, slack_channel_message, teams_mention, outlook_email, gmail_email, agent_email, phone_inbound, text_message_inbound, cron, and script, the same values agent_user_activity.source uses. Self-serve webhook triggers record webhook, and older runs may carry other values. Runs without a recorded source group under null.",
"companions": [],
"deprecated": null
},
{
"name": "channel",
"type": "string",
"description": "Kind of channel that started the run, mapped from source: email (front_email, outlook_email, gmail_email, agent_email), sms (text_message_inbound), call (phone_inbound), chat (slack_mention, slack_channel_message, front_mention, teams_mention), schedule (cron), manual, or script. It names the channel that started the run, not every channel the run used later. Any other recorded source, such as webhook from self-serve webhook triggers, maps to other; runs without a recorded source group under null.",
"companions": [],
"deprecated": null
},
{
"name": "status",
"type": "string",
"description": "Current run status: PENDING, RUNNING, WAITING_FOR_SLOT, CANCELLING, AWAITING_REPLY, SLEEPING, PAUSING, or PAUSED while active; COMPLETED, FAILED, or CANCELLED once finished. It is read when the query runs, not frozen, so counts for older periods move as active runs finish, and a cursor walk does not freeze it either.",
"companions": [],
"deprecated": null
}
]
},
{
"name": "agent_user_activity",
"description": "One row each time a person is recorded as starting, being associated with, or interacting with an agent run. The date range filters on occurredAt.",
"grain": "one attribution record for an identified person and an agent run",
"eventClock": "occurredAt",
"metrics": [
{
"name": "attributed_run_count",
"type": "number",
"description": "Unique person-and-run combinations with at least one attribution record.",
"additive": false,
"deprecated": null
},
{
"name": "initiated_run_count",
"type": "number",
"description": "Unique person-and-run combinations in which the person started the run.",
"additive": false,
"deprecated": null
},
{
"name": "associated_run_count",
"type": "number",
"description": "associated_run_count = attributed_run_count - initiated_run_count. Both values come from the attribution records selected by the query's date range and filters.",
"additive": false,
"deprecated": null
},
{
"name": "interacted_run_count",
"type": "number",
"description": "Unique person-and-run combinations with at least one recorded interaction.",
"additive": false,
"deprecated": null
},
{
"name": "interaction_count",
"type": "number",
"description": "Recorded interactions. Unlike the run metrics above, every interaction counts.",
"additive": true,
"deprecated": null
},
{
"name": "completed_attributed_run_count",
"type": "number",
"description": "Unique person-and-run combinations whose run is currently COMPLETED.",
"additive": false,
"deprecated": null
},
{
"name": "failed_attributed_run_count",
"type": "number",
"description": "Unique person-and-run combinations whose run is currently FAILED.",
"additive": false,
"deprecated": null
},
{
"name": "cancelled_attributed_run_count",
"type": "number",
"description": "Unique person-and-run combinations whose run is currently CANCELLED.",
"additive": false,
"deprecated": null
},
{
"name": "active_attributed_run_count",
"type": "number",
"description": "Unique person-and-run combinations whose run currently has a non-terminal status.",
"additive": false,
"deprecated": null
}
],
"dimensions": [
{
"name": "agent_id",
"type": "string",
"description": "Task-agent identifier for the attributed agent run. Filters accept either the agent UUID or its optional slug. The agent_name companion comes from the current joined task-agent record. Slug resolution is point-in-time: a slug filter matches whichever agent currently holds that slug, not the agent it identified when the filter was written. Because agent_id always returns the agent UUID, pin the UUID instead of the slug for filters that must stay stable across renames.",
"companions": [
{
"name": "agent_name",
"type": "string",
"description": "Current display name from the joined task-agent record."
}
],
"deprecated": null
},
{
"name": "user_identifier",
"type": "string",
"description": "Normalized email address or E.164 phone number for the attributed person.",
"companions": [
{
"name": "user_name",
"type": "string",
"description": "Lexicographically greatest non-null captured display name in the user-identifier group."
}
],
"deprecated": null
},
{
"name": "user_domain",
"type": "string",
"description": "Lowercased email domain when the person is identified by an email address. Null when the person is identified by a phone number.",
"companions": [],
"deprecated": null
},
{
"name": "activity_type",
"type": "string",
"description": "Attribution activity: initiated, associated, or interacted.",
"companions": [],
"deprecated": null
},
{
"name": "run_initiation_type",
"type": "string",
"description": "How the agent run started: human, automated when an automated starter began it, or unknown. The value is frozen when the attribution record is written.",
"companions": [],
"deprecated": null
},
{
"name": "source",
"type": "string",
"description": "Channel that produced the attribution record.",
"companions": [],
"deprecated": null
},
{
"name": "day",
"type": "date",
"description": "Day of the attribution record in the requested IANA timezone, formatted YYYY-MM-DD. Filters use the same format.",
"companions": [],
"deprecated": null
}
]
}
]
}API Reference
Get the analytics catalog
Returns the versioned catalog of models, metrics, and dimensions accepted by the query endpoint. Use it to discover valid member names before building a query.
GET
/
api
/
v1
/
analytics
/
catalog
Get the analytics catalog
curl --request GET \
--url https://api.burthq.com/api/v1/analytics/catalog \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.burthq.com/api/v1/analytics/catalog"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.burthq.com/api/v1/analytics/catalog', 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.burthq.com/api/v1/analytics/catalog",
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.burthq.com/api/v1/analytics/catalog"
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.burthq.com/api/v1/analytics/catalog")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.burthq.com/api/v1/analytics/catalog")
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{
"catalogVersion": "2026-10-20.1",
"models": [
{
"name": "agent_runs",
"description": "One row for each agent run; grouping by shipment_reference is the one exception and repeats a run once for each reference it holds. Sub-agent work and the supporting browser, phone, inbound-phone, and platform runs it starts are not counted separately. The date range filters on createdAt.",
"grain": "one agent run; sub-agent and supporting runs are not counted separately",
"eventClock": "createdAt",
"metrics": [
{
"name": "run_count",
"type": "number",
"description": "Agent runs, whatever their status.",
"additive": true,
"deprecated": null
},
{
"name": "completed_run_count",
"type": "number",
"description": "Agent runs that completed successfully (COMPLETED).",
"additive": true,
"deprecated": null
},
{
"name": "failed_run_count",
"type": "number",
"description": "Agent runs that failed (FAILED).",
"additive": true,
"deprecated": null
},
{
"name": "cancelled_run_count",
"type": "number",
"description": "Agent runs that were cancelled (CANCELLED).",
"additive": true,
"deprecated": null
},
{
"name": "active_run_count",
"type": "number",
"description": "Agent runs still working or waiting: PENDING, RUNNING, WAITING_FOR_SLOT, CANCELLING, AWAITING_REPLY, SLEEPING, PAUSING, or PAUSED.",
"additive": true,
"deprecated": null
},
{
"name": "run_success_rate",
"type": "number",
"description": "Completed agent runs divided by the sum of completed and failed runs. Cancelled and active runs are excluded from both sides. The result is null when the denominator is zero.",
"additive": false,
"deprecated": null
},
{
"name": "unique_initiator_count",
"type": "number",
"description": "Distinct identified starters. A starter may be a person or an automated starter. Starters without identifiers are excluded.",
"additive": false,
"deprecated": null
},
{
"name": "call_count",
"type": "number",
"description": "Phone calls placed or received for the agent run, including calls its sub-agents placed. Every linked call counts, whatever its outcome and whether or not a connect time was recorded. Calls count in the run's creation period, whatever day they happened. Manual test calls are not counted.",
"additive": true,
"deprecated": null
},
{
"name": "connected_call_count",
"type": "number",
"description": "Calls counted by call_count that have a recorded connect time. In practice that means calls on the current phone provider; older calls count in call_count but never here.",
"additive": true,
"deprecated": null
},
{
"name": "call_duration_seconds",
"type": "number",
"description": "Connect-to-end talk time in whole seconds, summed over the calls counted by connected_call_count that also have a recorded end time. Older calls have no connect time and add no duration.",
"additive": true,
"deprecated": null
}
],
"dimensions": [
{
"name": "agent_id",
"type": "string",
"description": "Task-agent identifier for the agent run. Filters accept either the agent UUID or its optional slug. Rows for soft-deleted agents are still returned. The agent_name companion comes from the current joined task-agent record, so renames affect historical results. Slug resolution is point-in-time: a slug filter matches whichever agent currently holds that slug, not the agent it identified when the filter was written. Because agent_id always returns the agent UUID, pin the UUID instead of the slug for filters that must stay stable across renames.",
"companions": [
{
"name": "agent_name",
"type": "string",
"description": "Current display name from the joined task-agent record. Soft-deleted agents remain joinable, but renames affect historical results."
}
],
"deprecated": null
},
{
"name": "user_identifier",
"type": "string",
"description": "Identifier for the person or automated starter that started the run, such as a normalized email address or phone number. Rows without an identifier group together and return null.",
"companions": [
{
"name": "user_name",
"type": "string",
"description": "Lexicographically greatest non-null display name in the user-identifier group."
}
],
"deprecated": null
},
{
"name": "user_type",
"type": "string",
"description": "Class of the starter: internal, external, automated, unknown, or null when absent. The automated value marks an automated starter, which is a schedule or integration rather than a person.",
"companions": [],
"deprecated": null
},
{
"name": "day",
"type": "date",
"description": "Creation day in the requested IANA timezone, formatted YYYY-MM-DD. Filters take the same format. Only days with data are returned; the series is not gap-filled.",
"companions": [],
"deprecated": null
},
{
"name": "run_id",
"type": "string",
"description": "Agent run identifier. Grouping by it returns one row per run, the raw run-level export; page through it with the cursor.",
"companions": [
{
"name": "created_at",
"type": "string",
"description": "Instant the run was created, in UTC, formatted as ISO 8601."
},
{
"name": "completed_at",
"type": "string",
"description": "Instant the run reached COMPLETED, FAILED, or CANCELLED, in UTC, formatted as ISO 8601. Null while the run is active."
},
{
"name": "shipment_references",
"type": "string",
"description": "Shipment references the run currently holds, comma-separated in stored order. Null when the run holds none. A reference can itself contain a comma, so to get each reference exactly, group by run_id and shipment_reference together for one row per run and reference."
}
],
"deprecated": null
},
{
"name": "shipment_reference",
"type": "string",
"description": "One shipment reference the run currently holds: a load, PO, BOL, PRO, container, booking, or similar number, all kinds mixed together. Values are normalized: uppercased, with labels such as \"Load #\" stripped, and the kind of reference is not recorded. A run holding several references appears in one group for each, so totals summed across groups overcount runs; runs holding none group under null. A filter value matches a reference exactly as returned or after the same normalization, so references the API returns always match when filtered on. Filters match runs holding any filtered value without fanning out; when the dimension is also grouped, only the filtered values come back as groups. A reference removed from a run no longer appears. One shipment can span several runs over time, because a new run starts when a message matches no active run's thread or references.",
"companions": [],
"deprecated": null
},
{
"name": "source",
"type": "string",
"description": "Trigger source that started the run, as recorded. The known values are manual, front_mention, front_email, slack_mention, slack_channel_message, teams_mention, outlook_email, gmail_email, agent_email, phone_inbound, text_message_inbound, cron, and script, the same values agent_user_activity.source uses. Self-serve webhook triggers record webhook, and older runs may carry other values. Runs without a recorded source group under null.",
"companions": [],
"deprecated": null
},
{
"name": "channel",
"type": "string",
"description": "Kind of channel that started the run, mapped from source: email (front_email, outlook_email, gmail_email, agent_email), sms (text_message_inbound), call (phone_inbound), chat (slack_mention, slack_channel_message, front_mention, teams_mention), schedule (cron), manual, or script. It names the channel that started the run, not every channel the run used later. Any other recorded source, such as webhook from self-serve webhook triggers, maps to other; runs without a recorded source group under null.",
"companions": [],
"deprecated": null
},
{
"name": "status",
"type": "string",
"description": "Current run status: PENDING, RUNNING, WAITING_FOR_SLOT, CANCELLING, AWAITING_REPLY, SLEEPING, PAUSING, or PAUSED while active; COMPLETED, FAILED, or CANCELLED once finished. It is read when the query runs, not frozen, so counts for older periods move as active runs finish, and a cursor walk does not freeze it either.",
"companions": [],
"deprecated": null
}
]
},
{
"name": "agent_user_activity",
"description": "One row each time a person is recorded as starting, being associated with, or interacting with an agent run. The date range filters on occurredAt.",
"grain": "one attribution record for an identified person and an agent run",
"eventClock": "occurredAt",
"metrics": [
{
"name": "attributed_run_count",
"type": "number",
"description": "Unique person-and-run combinations with at least one attribution record.",
"additive": false,
"deprecated": null
},
{
"name": "initiated_run_count",
"type": "number",
"description": "Unique person-and-run combinations in which the person started the run.",
"additive": false,
"deprecated": null
},
{
"name": "associated_run_count",
"type": "number",
"description": "associated_run_count = attributed_run_count - initiated_run_count. Both values come from the attribution records selected by the query's date range and filters.",
"additive": false,
"deprecated": null
},
{
"name": "interacted_run_count",
"type": "number",
"description": "Unique person-and-run combinations with at least one recorded interaction.",
"additive": false,
"deprecated": null
},
{
"name": "interaction_count",
"type": "number",
"description": "Recorded interactions. Unlike the run metrics above, every interaction counts.",
"additive": true,
"deprecated": null
},
{
"name": "completed_attributed_run_count",
"type": "number",
"description": "Unique person-and-run combinations whose run is currently COMPLETED.",
"additive": false,
"deprecated": null
},
{
"name": "failed_attributed_run_count",
"type": "number",
"description": "Unique person-and-run combinations whose run is currently FAILED.",
"additive": false,
"deprecated": null
},
{
"name": "cancelled_attributed_run_count",
"type": "number",
"description": "Unique person-and-run combinations whose run is currently CANCELLED.",
"additive": false,
"deprecated": null
},
{
"name": "active_attributed_run_count",
"type": "number",
"description": "Unique person-and-run combinations whose run currently has a non-terminal status.",
"additive": false,
"deprecated": null
}
],
"dimensions": [
{
"name": "agent_id",
"type": "string",
"description": "Task-agent identifier for the attributed agent run. Filters accept either the agent UUID or its optional slug. The agent_name companion comes from the current joined task-agent record. Slug resolution is point-in-time: a slug filter matches whichever agent currently holds that slug, not the agent it identified when the filter was written. Because agent_id always returns the agent UUID, pin the UUID instead of the slug for filters that must stay stable across renames.",
"companions": [
{
"name": "agent_name",
"type": "string",
"description": "Current display name from the joined task-agent record."
}
],
"deprecated": null
},
{
"name": "user_identifier",
"type": "string",
"description": "Normalized email address or E.164 phone number for the attributed person.",
"companions": [
{
"name": "user_name",
"type": "string",
"description": "Lexicographically greatest non-null captured display name in the user-identifier group."
}
],
"deprecated": null
},
{
"name": "user_domain",
"type": "string",
"description": "Lowercased email domain when the person is identified by an email address. Null when the person is identified by a phone number.",
"companions": [],
"deprecated": null
},
{
"name": "activity_type",
"type": "string",
"description": "Attribution activity: initiated, associated, or interacted.",
"companions": [],
"deprecated": null
},
{
"name": "run_initiation_type",
"type": "string",
"description": "How the agent run started: human, automated when an automated starter began it, or unknown. The value is frozen when the attribution record is written.",
"companions": [],
"deprecated": null
},
{
"name": "source",
"type": "string",
"description": "Channel that produced the attribution record.",
"companions": [],
"deprecated": null
},
{
"name": "day",
"type": "date",
"description": "Day of the attribution record in the requested IANA timezone, formatted YYYY-MM-DD. Filters use the same format.",
"companions": [],
"deprecated": null
}
]
}
]
}Authorizations
Organization API key with the analytics:read scope.
Headers
Optional caller-supplied request ID. Values must contain 1–64 ASCII letters, digits, or ._:/=-; invalid values are replaced with a generated UUID.
Required string length:
1 - 64Pattern:
^[A-Za-z0-9._:/=-]+$