Skip to main content
GET
/
v1
/
analytics
/
memory
/
dashboard
One-shot envelope of every memory analytics pipe
curl --request GET \
  --url https://api-sandbox.featherhq.com/v1/analytics/memory/dashboard \
  --header 'x-api-key: <api-key>'
{
  "ingestion": [
    {
      "time_bucket": "2023-11-07T05:31:56Z",
      "episodes": 123,
      "completed": 123,
      "failed": 123,
      "partial": 123,
      "skipped": 123,
      "messages_synced": 123,
      "success_rate_pct": 123
    }
  ],
  "coverage": {
    "users_with_memory": 123,
    "total_end_users": 123,
    "coverage_rate_pct": 123,
    "total_episodes": 123,
    "completed_episodes": 123
  },
  "recalls": [
    {
      "time_bucket": "2023-11-07T05:31:56Z",
      "total": 123,
      "hits": 123,
      "empties": 123,
      "cache_hits": 123,
      "errors": 123,
      "hit_rate_pct": 123,
      "cache_hit_rate_pct": 123,
      "avg_context_length": 123,
      "p50_ms": 123,
      "p90_ms": 123,
      "p95_ms": 123,
      "p99_ms": 123
    }
  ],
  "by_vendor": [
    {
      "vendor": "<string>",
      "total": 123,
      "hits": 123,
      "empties": 123,
      "cache_hits": 123,
      "errors": 123,
      "hit_rate_pct": 123,
      "cache_hit_rate_pct": 123,
      "avg_context_length": 123,
      "p50_ms": 123,
      "p90_ms": 123,
      "p95_ms": 123,
      "p99_ms": 123
    }
  ],
  "distribution": {
    "users": 123,
    "episodes_p50": 123,
    "episodes_p90": 123,
    "messages_p50": 123,
    "messages_p90": 123,
    "recalls_p50": 123,
    "recalls_p90": 123,
    "days_since_last_recall_p50": 123,
    "days_since_last_recall_p90": 123
  }
}

Authorizations

x-api-key
string
header
required

Query Parameters

granularity
string
default:hour
Pattern: ^(minute|hour|day|week)$
start_date
string<date>
required
end_date
string<date>
required

Response

Successful Response

Single envelope returned by /v1/analytics/memory/dashboard.

ingestion
MemoryIngestionTimeseriesRow · object[]
required
coverage
MemoryCoverageEnvelope · object
required

Single-object response for /v1/analytics/memory/coverage.

Numerator (users_with_memory and the episode counts) comes from Tinybird; total_end_users comes from Neo4j. The service merges both, computing coverage_rate_pct and clamping at 100 for the edge case where a user was deleted after their memory was synced.

recalls
RecallTimeseriesRow · object[]
required
by_vendor
RecallByVendorRow · object[]
required
distribution
UserDistributionRow · object
required