MemorySyncMemorySync
Debugging

Support & Escalation

Before you contact support, make sure you've exhausted the self-service debugging tools. Most issues can be diagnosed with the health endpoint, request tracing, and audit log. This page defines what to include in a support request, how to use built-in tracing for faster resolution, and what the support team can (and cannot) do.

Before You Contact Support

Run through this triage checklist first. Support will ask you these questions anyway — coming prepared saves a full round-trip:

  1. Check GET /health — is the platform operational? If any component is "unhealthy", the issue may resolve itself once infrastructure recovers.
  2. Read the error code — look at error.code in the response body. Is it VALIDATION_ERROR, RATE_LIMIT_EXCEEDED, TENANT_CONTEXT_REQUIRED? Each code has specific fixes documented in Common Errors.
  3. Copy the X-Request-ID — from the response headers of the failing request. This is the single most valuable piece of information for the support team.
  4. Check the audit log — in Dashboard → Audit Logs, filter by your resource type and look for entries with success: false around the time of the failure.
  5. Check your billing status — in Dashboard → Billing. If you have hit your monthly quota, you may be in silent mode — new add requests return 200 OK but no memory is stored or embedded, and queries return empty results. This is the #1 cause of “my queries return no results” reports.
  6. Confirm the environment — are you using the same environment (development/production) and project for both writes and reads?

Information to Include

When you do contact support, include all of the following. Missing information means the support team has to ask for it, adding a full reply cycle to the resolution time:

Field Where to Find It Why It Matters
X-Request-IDResponse headersLets support trace the exact request through every subsystem
X-Trace-IDResponse headersCorrelates related requests (e.g., ingest → webhook → delivery)
TimestampYour logs / system clockNarrows the search window in server logs (include timezone)
HTTP method + endpointYour requestIdentifies which service handled the request
Full error response bodyAPI responseContains the error code, message, and details array
Request body (redacted)Your requestAllows reproduction — redact API keys, passwords, and PII
Environment + Project IDDashboard / API key settingsScoping context — critical for "missing memory" issues
# Good support request template:
Request ID:   a1b2c3d4-e5f6-7890-abcd-ef1234567890
Trace ID:     trace-xyz-123
Timestamp:    2026-05-09T14:30:00Z (UTC)
Endpoint:     POST /memory/query
Environment:  production
Project:      proj_abc123

Error response:
{
  "error": { "code": "...", "message": "..." },
  "request_id": "a1b2c3d4-..."
}

Request body (redacted):
{ "query": "user preferences", "user_id": "user_42" }

Request Tracing for Support

The X-Request-ID and X-Trace-ID headers form the backbone of MemorySync's observability. Here's how support uses them to trace your issue:

Single-request issues (e.g., "this specific call failed"):

  • Support searches by X-Request-ID to find the exact request in server logs
  • The request log includes: method, path, status code, duration, user ID, tenant ID, and any errors
  • If the request triggered background work (such as a webhook dispatch), those operations are linked by the same trace ID.

Cross-system issues (e.g., "I stored a memory but the webhook didn't fire"):

  • Support searches by X-Trace-ID to find all related operations
  • This reveals the full chain: API request → memory stored → webhook dispatched → delivery attempted.
  • The exact point of failure in the chain becomes visible

✅ Pro tip: Send your own X-Trace-ID with every request (e.g., X-Trace-ID: myapp-session-12345). This lets you correlate multiple MemorySync calls that belong to the same user session or business transaction, making cross-system issues trivial to trace.

Audit Log as Evidence

The audit log is your first line of evidence before contacting support. Every mutating API call is recorded with a structured schema that makes it searchable:

Useful audit log queries for debugging:

Issue Filter By What to Look For
API key was revoked unexpectedlycategory: "api_key"Look for api_key.revoked action — check actor_email to see who did it
Webhook endpoint was modifiedcategory: "webhook"Look for webhook.endpoint_updated — the changes field shows what was modified
Webhook deliveries failingcategory: "webhook", success: falseThe severity field shows "warning" (retries left) vs "critical" (final attempt)
Unauthorized access attemptcategory: "api_key", success: falseCheck ip_address and the failure reason in metadata
Webhook secret was rotatedaction: "webhook.secret_rotated"Check timestamp — deliveries after this point use the new secret

Sharing relevant audit log entries with support (screenshot or export) gives them immediate context without needing to search server logs.

Escalation Tiers

Support response times and channels depend on your plan tier:

Tier Channel Response Target Available On
Self-ServiceDocumentation, communityImmediate (docs)All plans
StandardSupport tickets via dashboardWithin 24 business hoursStarter and above
PriorityPriority tickets, emailWithin 4 business hoursPro and above
DedicatedDedicated Slack channel, video callsWithin 1 hour (critical issues)Scale and Enterprise

Severity classification:

  • Critical — all API requests failing, data loss suspected, security incident. Triggers immediate escalation on Priority/Dedicated tiers.
  • High — a specific feature is broken for your organization (e.g., all webhook deliveries failing)
  • Medium — intermittent errors, performance degradation, non-blocking issues
  • Low — questions, feature requests, documentation issues

Common Misdiagnoses

These are the most frequent "false alarms" that reach the support team. Check for these before escalating:

Symptom What Users Think What's Actually Happening
Queries return empty results“The API is down”Billing silent mode — the cycle’s quota has been exhausted, so new writes are not stored and queries return empty. Check the billing dashboard.
Stored memory not in results"Memory was lost"Environment mismatch — stored in dev, querying in prod (or different project).
Getting 429 errors"Billing quota exceeded"Rate limiting (per-second/minute/hour). Billing quota causes silent mode, not 429s.
Webhook not received"Webhook is broken"Endpoint isn't subscribed to the relevant event type, or the endpoint URL is wrong.
Same memory submitted, not duplicated“API isn’t working”Input-level dedup — identical text submitted within the dedup window is silently treated as a duplicate.
Old fact returned instead of new"Ranking is wrong"Query contains "recent" keyword, triggering time-sensitive weight preset instead of default.

What Support Cannot Do

For security and data integrity reasons, the support team has the following limitations:

  • Reset billing counters mid-cycle — usage counters are atomic and tamper-proof. They reset automatically at the start of each billing cycle. If you've hit your limit, upgrade your plan or wait for the next cycle.
  • Bypass rate limits — rate limits are enforced at the infrastructure level and cannot be selectively disabled. Upgrade your API key's tier or distribute load across multiple keys.
  • Access or return raw memory content — support can trace request flow and identify errors, but cannot read or export your stored memory data. All data access must go through the API with proper authentication.
  • Override tenant isolation — each tenant's data is strictly isolated. Support cannot move memories between tenants, merge tenant data, or grant cross-tenant access.
  • Modify the ranking algorithm per-tenant — the ranking weights, importance floor, and semantic dedup threshold are system-wide constants. They cannot be customized for individual organizations.

💡 What support can do: Trace request flow using your request ID, identify server-side errors, verify your billing and rate-limit status, check webhook delivery records, confirm whether a specific memory exists and its current state (importance, deleted/active, environment), and escalate confirmed platform bugs to engineering.