Skip to content

Health checklist

A cross-cutting starting point when something is broken and you're not sure where to look.

Something in Retidal is broken and you’re not sure where to start looking — a request fails, a console page looks wrong, or a feature stopped behaving as documented, but you can’t yet tell which subsystem is at fault.

  1. Authentication is the first thing to rule out on any surface — confirm which credential the request used and what it returned.

    bash
    curl -s -o /dev/null -w "%{http_code}\n" -X POST https://api.retidal.com/api/v1/t \
    -H "X-API-Key: $RETIDAL_API_KEY" -H "Content-Type: application/json" \
    -d '{"eventName": "health_check", "visitorId": "vid_healthcheck"}'
    # 202 (or 200 with ?sync=1) = the key is valid; 401 = missing or invalid key.
    # Do not probe with an empty body: `{}` is valid JSON, so it is accepted (202) and
    # only marked invalid downstream — POST /api/v1/t returns 400 solely for malformed
    # JSON or a batch over 100 events, never as a "key is fine" signal.
    # This route has no scope gate and never returns a scope error; a scoped route
    # (decide, profile, coupons) returns a scope error for a valid key missing the
    # required scope.
  2. Your project role or key scopes don’t match the operation you’re calling.

    Console → Projects → Settings → API Keys — check the key’s scope list; Console → Projects → Members — check your session’s project role.

  3. The issue is isolated to one surface (ingestion vs. Management API vs. console UI) rather than a system-wide outage.

    Console → Projects → Debug — recent ingestion activity for this project, independent of the console UI.

If authentication, scopes, and surface isolation all check out: Events not arriving for ingestion-shaped symptoms, Decisioning not firing for decision or reward symptoms, or Email not delivered for delivery symptoms.