Observability
Use Overview to review recorded activity, then open Activity to inspect the signed records. Observability also provides latency, token and cost aggregates for submitted actions. It does not establish that every action was captured.
Recorded activity
The Overview chart is available on Free. Choose 24 hours, 7, 30 or 90 days, or a custom range of up to 90 days with the shared time selector. Counts reflect records still retained in your workspace. Selecting an older period does not restore records removed by your retention policy.
The chart uses hourly buckets for ranges up to two days and daily buckets for longer ranges. Dates on the chart are UTC; custom inputs use your browser’s local time. The first and last buckets can cover partial periods.
API access
Create an API key in Settings → API and store it in your environment. These endpoints use X-API-Key authentication and return data for the key’s organization.
curl --fail-with-body "https://api.asqav.com/api/v1/observability/summary" \
-H "X-API-Key: $ASQAV_API_KEY"
The summary returns total_actions, total_agents_active, total_tokens, total_cost_usd and avg_latency_ms for a 24-hour window. A missing latency value means no usable latency was reported.
curl --fail-with-body --get "https://api.asqav.com/api/v1/observability/activity" \
-H "X-API-Key: $ASQAV_API_KEY" \
--data-urlencode "start=2026-09-01T00:00:00Z" \
--data-urlencode "end=2026-09-08T00:00:00Z"
Replace the example dates with your reporting period. start is inclusive and end is exclusive; both require a timezone. The response contains start, end, interval and buckets of time and count. Missing buckets have no retained records. This endpoint counts stored receipts directly and does not wait for metric aggregation.
Performance and cost metrics
These routes are included in the current Free feature set. They use pre-computed aggregates, so recent records can appear in Activity before performance metrics update.
| Route | Use | Parameters and limits |
|---|---|---|
GET /observability/metrics | Per-agent time buckets | window_type: 5min, 1hr or 1day; hours: 1–168; optional agent_id. Up to 500 rows. |
GET /observability/agents/{agent_id} | Agent detail | Returns windows, total_actions_24h, total_cost_24h and latest_latency. |
GET /observability/costs | Cost attribution | hours: 1–720. Returns agents, total_cost_usd and hours. |
Prefix each route with https://api.asqav.com/api/v1. Metric rows contain window_start, total_actions, successful_actions, failed_actions and a nested latency object. A capped metrics response is not a complete organization total; use the activity endpoint for date-range counts.
Rejected attempts log
Every 4xx rejection on sign, verify, replay, and applied-attestation is persisted to the rejected_attempts table. Probes, suspended-agent rejects, cross-org access attempts, bad signatures, and counterparty-key mismatches all leave a row.
Query the log on all plans via GET /api/v1/observability/rejected-attempts. Filters: failure_reason, agent_id, time window. Pagination is offset-based.
curl "https://api.asqav.com/api/v1/observability/rejected-attempts?failure_reason=agent_suspended&hours=24" \
-H "X-API-Key: sk_live_..."
Public verify rejections (no organization context, e.g. probes against an unknown signature_id) are admin-only and do not surface to tenant queries.
| failure_reason | Endpoint | Trigger |
|---|---|---|
signature_not_found | verify | Unknown signature_id, including probes. |
signature_expired | verify | Past valid_until on a record signed with replay protection. |
signer_key_mismatch | verify | Agent's current key differs from the key that signed. |
agent_suspended | sign, countersign | Agent suspended by policy auto-remediation or operator action. |
agent_revoked | sign, countersign | Agent revoked. |
agent_decommissioned | sign, countersign | Agent decommissioned. |
agent_quarantined | sign, countersign | Critical-alert quarantine on Enterprise. |
cross_org_access | any | API key from a different organization than the resource. |
executor_key_mismatch | applied-attestation | Counterparty pinning mismatch. See Attestation. |