Realtime
Return visitors active in the last few minutes.
curl -X GET "https://api.beacon.hard.al/v1/reports/realtime?tenantId=123e4567-e89b-12d3-a456-426614174000&sourceId=123e4567-e89b-12d3-a456-426614174000&windowMinutes=example_string" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_TOKEN"
import requests
import json
url = "https://api.beacon.hard.al/v1/reports/realtime?tenantId=123e4567-e89b-12d3-a456-426614174000&sourceId=123e4567-e89b-12d3-a456-426614174000&windowMinutes=example_string"
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/reports/realtime?tenantId=123e4567-e89b-12d3-a456-426614174000&sourceId=123e4567-e89b-12d3-a456-426614174000&windowMinutes=example_string", {
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/reports/realtime?tenantId=123e4567-e89b-12d3-a456-426614174000&sourceId=123e4567-e89b-12d3-a456-426614174000&windowMinutes=example_string", 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/reports/realtime?tenantId=123e4567-e89b-12d3-a456-426614174000&sourceId=123e4567-e89b-12d3-a456-426614174000&windowMinutes=example_string')
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": {
"windowMinutes": 5,
"consentedVisitors": 18,
"sessions": 42,
"events": 236
},
"timestamp": "2026-11-01T09:30:00.000Z",
"path": "/v1/reports/realtime",
"requestId": "req_01JD2V8Q9Z6R4XK7T3M5N8P2WA"
}
{
"success": false,
"error": {
"code": "tenant-required",
"message": "tenant-required"
},
"timestamp": "2026-11-01T09:30:00.000Z",
"path": "/v1/reports/realtime",
"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/reports/realtime",
"requestId": "req_01JD2V8Q9Z6R4XK7T3M5N8P2WA"
}
{
"success": false,
"error": {
"code": "bearer-required",
"message": "bearer-required"
},
"timestamp": "2026-11-01T09:30:00.000Z",
"path": "/v1/reports/realtime",
"requestId": "req_01JD2V8Q9Z6R4XK7T3M5N8P2WA"
}
{
"success": false,
"error": {
"code": "invalid-credential",
"message": "invalid-credential"
},
"timestamp": "2026-11-01T09:30:00.000Z",
"path": "/v1/reports/realtime",
"requestId": "req_01JD2V8Q9Z6R4XK7T3M5N8P2WA"
}
{
"success": false,
"error": {
"code": "credential-revoked",
"message": "credential-revoked"
},
"timestamp": "2026-11-01T09:30:00.000Z",
"path": "/v1/reports/realtime",
"requestId": "req_01JD2V8Q9Z6R4XK7T3M5N8P2WA"
}
{
"success": false,
"error": {
"code": "credential-expired",
"message": "credential-expired"
},
"timestamp": "2026-11-01T09:30:00.000Z",
"path": "/v1/reports/realtime",
"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/reports/realtime",
"requestId": "req_01JD2V8Q9Z6R4XK7T3M5N8P2WA"
}
{
"success": false,
"error": {
"code": "source-does-not-belong-to-tenant",
"message": "source-does-not-belong-to-tenant"
},
"timestamp": "2026-11-01T09:30:00.000Z",
"path": "/v1/reports/realtime",
"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/reports/realtime",
"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/reports/realtime",
"requestId": "req_01JD2V8Q9Z6R4XK7T3M5N8P2WA"
}
{
"success": false,
"error": {
"code": "source-not-found",
"message": "source-not-found",
"details": {
"sourceId": "7b0e5a54-1d43-4c8e-8d2f-5a9c3e6b1f27"
}
},
"timestamp": "2026-11-01T09:30:00.000Z",
"path": "/v1/reports/realtime",
"requestId": "req_01JD2V8Q9Z6R4XK7T3M5N8P2WA"
}
{
"success": false,
"error": {
"code": "rate-limited",
"message": "rate-limited",
"details": {
"retryAfterSeconds": 30
}
},
"timestamp": "2026-11-01T09:30:00.000Z",
"path": "/v1/reports/realtime",
"requestId": "req_01JD2V8Q9Z6R4XK7T3M5N8P2WA"
}
/v1/reports/realtime
Target server for requests. Edit to use your own host.
OAuth access token (token exchange) or organization API key.
UUID of the tenant to report on. Send it exactly once. GET /v1/workspace/access lists the tenants this credential can read.
UUID of one source of the tenant. Omit it to include every source of the tenant.
Length of the trailing window that ends now, in minutes, 1 to 60. Defaults to 30.
Request Preview
Response
Response will appear here after sending the request
Authentication
Bearer token. OAuth access token (token exchange) or organization API key.
Query Parameters
UUID of the tenant to report on. Send it exactly once. GET /v1/workspace/access lists the tenants this credential can read.
UUID of one source of the tenant. Omit it to include every source of the tenant.
Length of the trailing window that ends now, in minutes, 1 to 60. Defaults to 30.
Responses
true