Dashboard Admin KPIs

Base URL https://api.example.com
GET /api/v1/dashboard/admin/kpis

Get Admin Kpis

Return the Admin Overview KPI payload for the selected window (cached ~60s).

Parameters
refresh boolean query
Bypass the 60s cache and recompute
period any query
Preset window; ignored when from/to are given
from any query
Custom range start (YYYY-MM-DD)
to any query
Custom range end (YYYY-MM-DD)
country any query
ISO country code filter
Responses
  • 200Successful Response
  • 422Validation Error
GET /api/v1/dashboard/admin/kpis
curl -X GET 'https://api.example.com/api/v1/dashboard/admin/kpis' \
  -H 'Authorization: Bearer '
import httpx

resp = httpx.get(
    "https://api.example.com/api/v1/dashboard/admin/kpis",
    headers={"Authorization": "Bearer "},
)
resp.raise_for_status()
print(resp.json())
const resp = await fetch("https://api.example.com/api/v1/dashboard/admin/kpis", {
  method: "GET",
  headers: { "Authorization": "Bearer " }
});
const data = await resp.json();
console.log(data);
package main

import (
	"net/http"
)

func main() {
	req, _ := http.NewRequest("GET", "https://api.example.com/api/v1/dashboard/admin/kpis", nil)
	req.Header.Set("Authorization", "Bearer ")
	resp, _ := http.DefaultClient.Do(req)
	defer resp.Body.Close()
}
GET /api/v1/dashboard/admin/posthog-metrics

Get Posthog Metrics

Live PostHog event counts for the selected window, grouped by category.

Parameters
refresh boolean query
Bypass the 60s cache and recompute
period any query
Preset window; ignored when from/to are given
from any query
Custom range start (YYYY-MM-DD)
to any query
Custom range end (YYYY-MM-DD)
country any query
ISO country code filter
Responses
  • 200Successful Response
  • 422Validation Error
GET /api/v1/dashboard/admin/posthog-metrics
curl -X GET 'https://api.example.com/api/v1/dashboard/admin/posthog-metrics' \
  -H 'Authorization: Bearer '
import httpx

resp = httpx.get(
    "https://api.example.com/api/v1/dashboard/admin/posthog-metrics",
    headers={"Authorization": "Bearer "},
)
resp.raise_for_status()
print(resp.json())
const resp = await fetch("https://api.example.com/api/v1/dashboard/admin/posthog-metrics", {
  method: "GET",
  headers: { "Authorization": "Bearer " }
});
const data = await resp.json();
console.log(data);
package main

import (
	"net/http"
)

func main() {
	req, _ := http.NewRequest("GET", "https://api.example.com/api/v1/dashboard/admin/posthog-metrics", nil)
	req.Header.Set("Authorization", "Bearer ")
	resp, _ := http.DefaultClient.Do(req)
	defer resp.Body.Close()
}
GET /api/v1/dashboard/admin/campaigns

Get Campaigns

Per-campaign outreach performance for the selected window (cached ~60s).

Parameters
refresh boolean query
Bypass the 60s cache and recompute
period any query
Preset window; ignored when from/to are given
from any query
Custom range start (YYYY-MM-DD)
to any query
Custom range end (YYYY-MM-DD)
country any query
ISO country code filter
Responses
  • 200Successful Response
  • 422Validation Error
GET /api/v1/dashboard/admin/campaigns
curl -X GET 'https://api.example.com/api/v1/dashboard/admin/campaigns' \
  -H 'Authorization: Bearer '
import httpx

resp = httpx.get(
    "https://api.example.com/api/v1/dashboard/admin/campaigns",
    headers={"Authorization": "Bearer "},
)
resp.raise_for_status()
print(resp.json())
const resp = await fetch("https://api.example.com/api/v1/dashboard/admin/campaigns", {
  method: "GET",
  headers: { "Authorization": "Bearer " }
});
const data = await resp.json();
console.log(data);
package main

import (
	"net/http"
)

func main() {
	req, _ := http.NewRequest("GET", "https://api.example.com/api/v1/dashboard/admin/campaigns", nil)
	req.Header.Set("Authorization", "Bearer ")
	resp, _ := http.DefaultClient.Do(req)
	defer resp.Body.Close()
}
GET /api/v1/dashboard/admin/logs

Get Logs

Container logs from Loki (LogQL), super_admin only.

Parameters
container any query
level any query
search any query
minutes integer query
Lookback window
limit integer query
Responses
  • 200Successful Response
  • 422Validation Error
GET /api/v1/dashboard/admin/logs
curl -X GET 'https://api.example.com/api/v1/dashboard/admin/logs' \
  -H 'Authorization: Bearer '
import httpx

resp = httpx.get(
    "https://api.example.com/api/v1/dashboard/admin/logs",
    headers={"Authorization": "Bearer "},
)
resp.raise_for_status()
print(resp.json())
const resp = await fetch("https://api.example.com/api/v1/dashboard/admin/logs", {
  method: "GET",
  headers: { "Authorization": "Bearer " }
});
const data = await resp.json();
console.log(data);
package main

import (
	"net/http"
)

func main() {
	req, _ := http.NewRequest("GET", "https://api.example.com/api/v1/dashboard/admin/logs", nil)
	req.Header.Set("Authorization", "Bearer ")
	resp, _ := http.DefaultClient.Do(req)
	defer resp.Body.Close()
}
GET /api/v1/dashboard/admin/ga4

Get Admin Ga4

Return GA4 website acquisition metrics for the selected window (cached ~5min).

Parameters
refresh boolean query
Bypass the 5min cache and recompute
period any query
Preset window; ignored when from/to are given
from any query
Custom range start (YYYY-MM-DD)
to any query
Custom range end (YYYY-MM-DD)
country any query
ISO country code filter
Responses
  • 200Successful Response
  • 422Validation Error
GET /api/v1/dashboard/admin/ga4
curl -X GET 'https://api.example.com/api/v1/dashboard/admin/ga4' \
  -H 'Authorization: Bearer '
import httpx

resp = httpx.get(
    "https://api.example.com/api/v1/dashboard/admin/ga4",
    headers={"Authorization": "Bearer "},
)
resp.raise_for_status()
print(resp.json())
const resp = await fetch("https://api.example.com/api/v1/dashboard/admin/ga4", {
  method: "GET",
  headers: { "Authorization": "Bearer " }
});
const data = await resp.json();
console.log(data);
package main

import (
	"net/http"
)

func main() {
	req, _ := http.NewRequest("GET", "https://api.example.com/api/v1/dashboard/admin/ga4", nil)
	req.Header.Set("Authorization", "Bearer ")
	resp, _ := http.DefaultClient.Do(req)
	defer resp.Body.Close()
}
GET /api/v1/dashboard/admin/adapty

Get Admin Adapty

Return Adapty mobile install / subscription / revenue metrics (cached ~60s).

Parameters
refresh boolean query
Bypass the 60s cache and recompute
period any query
Preset window; ignored when from/to are given
from any query
Custom range start (YYYY-MM-DD)
to any query
Custom range end (YYYY-MM-DD)
Responses
  • 200Successful Response
  • 422Validation Error
GET /api/v1/dashboard/admin/adapty
curl -X GET 'https://api.example.com/api/v1/dashboard/admin/adapty' \
  -H 'Authorization: Bearer '
import httpx

resp = httpx.get(
    "https://api.example.com/api/v1/dashboard/admin/adapty",
    headers={"Authorization": "Bearer "},
)
resp.raise_for_status()
print(resp.json())
const resp = await fetch("https://api.example.com/api/v1/dashboard/admin/adapty", {
  method: "GET",
  headers: { "Authorization": "Bearer " }
});
const data = await resp.json();
console.log(data);
package main

import (
	"net/http"
)

func main() {
	req, _ := http.NewRequest("GET", "https://api.example.com/api/v1/dashboard/admin/adapty", nil)
	req.Header.Set("Authorization", "Bearer ")
	resp, _ := http.DefaultClient.Do(req)
	defer resp.Body.Close()
}
GET /api/v1/dashboard/admin/social

Get Admin Social

Return VayaPin follower counts + best-effort engagement (cached ~5min).

Parameters
refresh boolean query
Bypass the 5min cache and recompute
Responses
  • 200Successful Response
  • 422Validation Error
GET /api/v1/dashboard/admin/social
curl -X GET 'https://api.example.com/api/v1/dashboard/admin/social' \
  -H 'Authorization: Bearer '
import httpx

resp = httpx.get(
    "https://api.example.com/api/v1/dashboard/admin/social",
    headers={"Authorization": "Bearer "},
)
resp.raise_for_status()
print(resp.json())
const resp = await fetch("https://api.example.com/api/v1/dashboard/admin/social", {
  method: "GET",
  headers: { "Authorization": "Bearer " }
});
const data = await resp.json();
console.log(data);
package main

import (
	"net/http"
)

func main() {
	req, _ := http.NewRequest("GET", "https://api.example.com/api/v1/dashboard/admin/social", nil)
	req.Header.Set("Authorization", "Bearer ")
	resp, _ := http.DefaultClient.Do(req)
	defer resp.Body.Close()
}