SSpiderIQ
SSpiderIQ

Docs / api-reference/dashboard-live-theater

Dashboard Live Theater

1 endpoints from the published OpenAPI import.

GET/api/v1/dashboard/client/events/recent

List Recent Events

Synthesize the last N campaign-lifecycle events from existing tables and return them in SSE-envelope shape. Skips events fired in the last 60 seconds — the SSE stream handles those, prevents double-render when prefill + live race.

V1.2: enriched payloads + card variety:

  • campaign.location.completed now JOINs campaign_workflow_jobs for real per-location sitesCrawled/emailsVerified counts (previously hardcoded 0 → all KPIs except BUSINESSES showed 0).
  • Synthesized campaign.vayapin.exported events from public.results worker_type='vayapin' so PINS KPI ticks and the Intel Feed has VayapinExportedCard variety.
  • Synthesized campaign.business.found events from campaign_workflow_jobs (capped per campaign so business cards don't dominate the rolling buffer).
  • Per-event-type response quota — instead of chronological top-N biased toward whichever type has highest cadence, return up to per_type of each type. Keeps the Intel Feed visually varied.

Default window 7 days, max 30 days. Default 50 events, max 200.

Parameters

NameInTypeRequiredDescription
limitqueryintegerfalse
hoursqueryintegerfalse
Try it
Query

Examples

cURL
curl -X GET 'https://spideriq.ai/api/v1/dashboard/client/events/recent' \
  -H 'Authorization: Bearer <token>'
Python
import httpx

resp = httpx.get(
    "https://spideriq.ai/api/v1/dashboard/client/events/recent",
    headers={"Authorization": "Bearer <token>"},
)
resp.raise_for_status()
print(resp.json())
JavaScript
const resp = await fetch("https://spideriq.ai/api/v1/dashboard/client/events/recent", {
  method: "GET",
  headers: { "Authorization": "Bearer <token>" }
});
const data = await resp.json();
console.log(data);
Go
package main

import (
	"net/http"
)

func main() {
	req, _ := http.NewRequest("GET", "https://spideriq.ai/api/v1/dashboard/client/events/recent", nil)
	req.Header.Set("Authorization", "Bearer <token>")
	resp, _ := http.DefaultClient.Do(req)
	defer resp.Body.Close()
}

Responses

StatusDescription
200Successful Response
422Validation Error