links.arjun.tv/docs/end-user/troubleshooting-and-support

Troubleshooting and Support

Use this guide when login, routing, domain, or analytics flows fail.

Triage checklist

  1. Reproduce once and capture the full URL.
  2. Confirm handle, slug, and domain values.
  3. Confirm auth mode (JWT, PAT, or visitor flow).
  4. Capture the HTTP status code and error code from the response body.
  5. Check the common error reference below.
  6. If unresolved, submit a support report with request context.

Common error reference

StatusError codeMeaningNext step
400invalid_*Request body or parameter is malformedCheck the field named in the error code
401missing_bearer_tokenNo Authorization header sentAdd Authorization: Bearer {token}
401invalid_tokenToken format is unrecognizedVerify token is a valid JWT or PAT
401token_expiredJWT or PAT has expiredRe-authenticate or generate a new token
401expired_magic_linkMagic link older than 15 minutesRequest a new magic link
401used_magic_linkMagic link already consumedRequest a new magic link
403insufficient_roleYour role lacks permission for this actionAsk the handle owner to upgrade your role
403insufficient_scopePAT token missing required scopeCreate a new PAT with the needed scope
403feature_lockedFeature requires a higher planSee Plans, Quotas, and Feature Gates
404not_foundResource does not existVerify handle, slug, or ID values
404handle_not_foundHandle does not existCheck for typos in the handle name
409connect_not_configuredStripe Connect not set up for this handleComplete Stripe Connect onboarding
410file_expiredFile has passed its expiry dateUpload a new file if needed
429rate_limitedDaily write quota or rate limit exceededWait and retry, or upgrade your plan

Escalation and support

Submitting a support report

POST /v2/support/report

{
  "handle": "acme",
  "summary": "Redirect returns 404 for slug 'launch'",
  "details": "Slug was created 10 minutes ago. Public URL returns 404.",
  "sessionId": "optional_browser_session_id",
  "requestId": "optional_api_request_id"
}

Include as much context as possible: the handle, slug, error code, and any request/session IDs.

Operator escalation

For urgent issues, operators can submit an escalation:

POST /v2/operator/escalations

{
  "handle": "acme",
  "severity": "HIGH",
  "summary": "All redirects returning 503 for handle acme"
}

Severity levels: LOW, MEDIUM, HIGH. Escalations trigger owner alerts and are logged to the audit trail.

Content reports (public)

Anyone can report abusive content without authentication:

POST /v2/public/content-report

{
  "handle": "suspicious-handle",
  "reason": "phishing",
  "details": "Link redirects to a credential harvesting page.",
  "reporterEmail": "reporter@example.com"
}

Rate limit: 5 reports per IP per hour.

SLA reference

AreaTargetNotes
Analytics freshnessUnder 60 minutesCloudFront logs to dashboard
System health checks15-minute staleness thresholdAlerts if data is older than 15 minutes
Link health check timeout4 secondsHEAD/GET request to destination URL
Webhook delivery attempts5 retries with exponential backoff5s, 10s, 20s, 40s, 80s
Magic link validity15 minutesSingle-use
Visitor session duration30 daysCookie-based
Audit event retention90 daysAutomatic TTL cleanup

Health checks

System health

GET /v2/system/health

Returns the status of platform subsystems:

  • usage_meters_connectivity — database connectivity
  • redirect_analytics_freshness — analytics pipeline lag
  • targeting_profile_freshness — targeting profile projection lag
  • targeting_rollup_freshness — segment rollup pipeline lag

Each check returns PASS, FAIL, or UNKNOWN with a severity of INFO, WARN, or CRITICAL.

Link health

POST /v2/handles/{handle}/links/health-check

Validates that destination URLs are reachable. Returns HTTP status codes for each link checked.

Audit trail

GET /v2/handles/{handle}/audit-events

Returns the most recent audit events for a handle (default 50, max 100). Requires OPERATOR role or above, or a PAT with system.audit.read scope.

Use the audit trail to:

  • Verify who made a configuration change and when.
  • Trace billing, collaborator, or link modification events.
  • Provide incident context in support reports.

API fallback

  • POST /v2/support/report
  • POST /v2/operator/escalations
  • POST /v2/public/content-report
  • GET /v2/system/health
  • GET /v2/handles/{handle}/audit-events
  • POST /v2/handles/{handle}/links/health-check

Related: