Breakdown Options
List available funnel breakdown dimensions.
curl -X GET "https://api.beacon.hard.al/v1/funnels/options/breakdowns?tenantId=123e4567-e89b-12d3-a456-426614174000" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_TOKEN"
import requests
import json
url = "https://api.beacon.hard.al/v1/funnels/options/breakdowns?tenantId=123e4567-e89b-12d3-a456-426614174000"
headers = {
"Content-Type": "application/json",
"Authorization": "Bearer YOUR_API_TOKEN"
}
response = requests.get(url, headers=headers)
print(response.json())
const response = await fetch("https://api.beacon.hard.al/v1/funnels/options/breakdowns?tenantId=123e4567-e89b-12d3-a456-426614174000", {
method: "GET",
headers: {
"Content-Type": "application/json",
"Authorization": "Bearer YOUR_API_TOKEN"
}
});
const data = await response.json();
console.log(data);
package main
import (
"fmt"
"net/http"
)
func main() {
req, err := http.NewRequest("GET", "https://api.beacon.hard.al/v1/funnels/options/breakdowns?tenantId=123e4567-e89b-12d3-a456-426614174000", nil)
if err != nil {
panic(err)
}
req.Header.Set("Content-Type", "application/json")
req.Header.Set("Authorization", "Bearer YOUR_API_TOKEN")
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
fmt.Println("Response Status:", resp.Status)
}
require 'net/http'
require 'json'
uri = URI('https://api.beacon.hard.al/v1/funnels/options/breakdowns?tenantId=123e4567-e89b-12d3-a456-426614174000')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Get.new(uri)
request['Content-Type'] = 'application/json'
request['Authorization'] = 'Bearer YOUR_API_TOKEN'
response = http.request(request)
puts response.body
{
"success": true,
"data": {
"items": [
{
"breakdownKey": "source",
"breakdownLabel": "Source"
},
{
"breakdownKey": "medium",
"breakdownLabel": "Medium"
},
{
"breakdownKey": "channel",
"breakdownLabel": "Channel"
},
{
"breakdownKey": "country",
"breakdownLabel": "Country"
},
{
"breakdownKey": "city",
"breakdownLabel": "City"
},
{
"breakdownKey": "device",
"breakdownLabel": "Device"
},
{
"breakdownKey": "browser",
"breakdownLabel": "Browser"
},
{
"breakdownKey": "os",
"breakdownLabel": "Operating System"
}
]
},
"timestamp": "2026-11-01T09:30:00.000Z",
"path": "/v1/funnels/options/breakdowns",
"requestId": "req_01JD2V8Q9Z6R4XK7T3M5N8P2WA"
}
{
"success": false,
"error": {
"code": "tenant-required",
"message": "tenant-required"
},
"timestamp": "2026-11-01T09:30:00.000Z",
"path": "/v1/funnels/options/breakdowns",
"requestId": "req_01JD2V8Q9Z6R4XK7T3M5N8P2WA"
}
{
"success": false,
"error": {
"code": "validation-error",
"message": "Validation failed: Expected number to be greater or equal to 1",
"details": {
"field": "",
"message": "Expected number to be greater or equal to 1"
}
},
"timestamp": "2026-11-01T09:30:00.000Z",
"path": "/v1/funnels/options/breakdowns",
"requestId": "req_01JD2V8Q9Z6R4XK7T3M5N8P2WA"
}
{
"success": false,
"error": {
"code": "bearer-required",
"message": "bearer-required"
},
"timestamp": "2026-11-01T09:30:00.000Z",
"path": "/v1/funnels/options/breakdowns",
"requestId": "req_01JD2V8Q9Z6R4XK7T3M5N8P2WA"
}
{
"success": false,
"error": {
"code": "invalid-credential",
"message": "invalid-credential"
},
"timestamp": "2026-11-01T09:30:00.000Z",
"path": "/v1/funnels/options/breakdowns",
"requestId": "req_01JD2V8Q9Z6R4XK7T3M5N8P2WA"
}
{
"success": false,
"error": {
"code": "credential-revoked",
"message": "credential-revoked"
},
"timestamp": "2026-11-01T09:30:00.000Z",
"path": "/v1/funnels/options/breakdowns",
"requestId": "req_01JD2V8Q9Z6R4XK7T3M5N8P2WA"
}
{
"success": false,
"error": {
"code": "credential-expired",
"message": "credential-expired"
},
"timestamp": "2026-11-01T09:30:00.000Z",
"path": "/v1/funnels/options/breakdowns",
"requestId": "req_01JD2V8Q9Z6R4XK7T3M5N8P2WA"
}
{
"success": false,
"error": {
"code": "tenant-not-granted",
"message": "tenant-not-granted",
"details": {
"tenantId": "2f1c7c3e-6c1a-4f1e-9b7a-2d8e4c1a9f10"
}
},
"timestamp": "2026-11-01T09:30:00.000Z",
"path": "/v1/funnels/options/breakdowns",
"requestId": "req_01JD2V8Q9Z6R4XK7T3M5N8P2WA"
}
{
"success": false,
"error": {
"code": "insufficient-scope",
"message": "insufficient-scope",
"details": {
"required": "reports:read"
}
},
"timestamp": "2026-11-01T09:30:00.000Z",
"path": "/v1/funnels/options/breakdowns",
"requestId": "req_01JD2V8Q9Z6R4XK7T3M5N8P2WA"
}
{
"success": false,
"error": {
"code": "tenant-not-found",
"message": "tenant-not-found",
"details": {
"tenantId": "2f1c7c3e-6c1a-4f1e-9b7a-2d8e4c1a9f10"
}
},
"timestamp": "2026-11-01T09:30:00.000Z",
"path": "/v1/funnels/options/breakdowns",
"requestId": "req_01JD2V8Q9Z6R4XK7T3M5N8P2WA"
}
{
"success": false,
"error": {
"code": "rate-limited",
"message": "rate-limited",
"details": {
"retryAfterSeconds": 30
}
},
"timestamp": "2026-11-01T09:30:00.000Z",
"path": "/v1/funnels/options/breakdowns",
"requestId": "req_01JD2V8Q9Z6R4XK7T3M5N8P2WA"
}
GET
/v1/funnels/options/breakdowns
GET
Base URLstring
Target server for requests. Edit to use your own host.
Bearer Token
Bearer Tokenstring
RequiredOAuth access token (token exchange) or organization API key.
OAuth access token (token exchange) or organization API key.
query
tenantIdstring
RequiredUUID of the tenant to report on. Send it exactly once. GET /v1/workspace/access lists the tenants this credential can read.
Format: uuid
Request Preview
Response
Response will appear here after sending the request
Authentication
header
Authorizationstring
RequiredBearer token. OAuth access token (token exchange) or organization API key.
Query Parameters
tenantIdstring
RequiredUUID of the tenant to report on. Send it exactly once. GET /v1/workspace/access lists the tenants this credential can read.
Responses
successboolean
RequiredAllowed values:
truedataobject
Requiredtimestampstring
Requiredpathstring
RequiredrequestIdstring
RequiredWas this page helpful?