Skip to content

TOF-446: Add per-error troubleshooting pages for top Mixpanel API errors - #179

Draft
tylergoerzen-mxp with Copilot wants to merge 3 commits into
mainfrom
copilot/tof-446-create-per-error-troubleshooting-pages
Draft

TOF-446: Add per-error troubleshooting pages for top Mixpanel API errors#179
tylergoerzen-mxp with Copilot wants to merge 3 commits into
mainfrom
copilot/tof-446-create-per-error-troubleshooting-pages

Conversation

Copilot AI commented Aug 18, 2026

Copy link
Copy Markdown
Contributor

Creates dedicated AEO-optimized troubleshooting pages for the most common Mixpanel ingestion API errors, enabling search engines and AI answer engines to surface targeted fixes for specific error codes.

New pages (troubleshooting/errors/)

  • 400 Bad Request — missing/invalid distinct_id, wrong project token, malformed JSON, invalid timestamps, oversized property names
  • 401 Unauthorized — missing/wrong credentials, auth type mismatches per endpoint, data residency region mismatch (includes endpoint→auth-type table)
  • 403 Forbidden — insufficient Service Account role, wrong project scope, plan-restricted features (includes role→operation table)
  • 413 Payload Too Large — batch size limits (2,000 events / 2 MB uncompressed), with Python examples for batch splitting and gzip compression
  • 429 Too Many Requests — rate limit details, batching recommendations, Retry-After-aware exponential backoff implementation

Navigation

Restructured the FAQs tab in docs.json from a flat pages list to a groups layout, adding a new "Error Troubleshooting" group alongside the existing FAQs group.

@linear-code

linear-code Bot commented Aug 18, 2026

Copy link
Copy Markdown

TOF-446

Co-authored-by: tylergoerzen-mxp <259741734+tylergoerzen-mxp@users.noreply.github.com>
@mintlify

mintlify Bot commented Aug 18, 2026

Copy link
Copy Markdown
Contributor

Preview deployment for your docs. Learn more about Mintlify Previews.

Project Status Preview Updated (UTC)
mixpanel-docs 🟢 Ready View Preview Aug 18, 2026, 7:08 PM

💡 Tip: Enable Workflows to automatically generate PRs for you.

Copilot AI changed the title [WIP] Create per-error troubleshooting pages for top verified error strings TOF-446: Add per-error troubleshooting pages for top Mixpanel API errors Aug 18, 2026
Copilot AI requested a review from tylergoerzen-mxp August 18, 2026 19:02
@greptile-apps

greptile-apps Bot commented Aug 18, 2026

Copy link
Copy Markdown
Contributor

Confidence Score: 5/5

The PR appears safe to merge.

No blocking failure remains.

Important Files Changed

Filename Overview
docs.json Adds the five troubleshooting pages under a dedicated FAQs navigation group.
troubleshooting/errors/400-bad-request.mdx Documents validation failures and correctly explains partial success for strict imports.
troubleshooting/errors/401-unauthorized.mdx Documents credential and regional-endpoint authentication failures.
troubleshooting/errors/403-forbidden.mdx Explains forbidden ingestion responses and recommended diagnostic steps.
troubleshooting/errors/413-payload-too-large.mdx Documents request, event, and batch size limits.
troubleshooting/errors/429-rate-limit-exceeded.mdx Documents the corrected rolling ingestion limit and exponential-backoff guidance.

Reviews (2): Last reviewed commit: "Rewrite the error pages against the Open..." | Re-trigger Greptile

Comment thread troubleshooting/errors/429-rate-limit-exceeded.mdx Outdated
Comment thread troubleshooting/errors/400-bad-request.mdx Outdated
The original pages documented behavior Mixpanel's API does not have.
Rewritten from openapi/ingestion.openapi.yaml and reference/import-events.mdx.

Corrected:
- Rate limit was "2GB per hour". It is 2GB of uncompressed JSON per
  minute, or ~30k events/sec on a rolling one-minute basis. The old
  figure would have made anyone throttle a backfill 60x too slowly.
- All five example bodies used "code": 0. Real responses return the HTTP
  status as code plus a status string; /import 400s also carry
  num_records_imported and per-record insert_id.
- The 429 page told readers to respect a Retry-After header. Mixpanel
  does not send one. The page now says so and gives the documented
  backoff: start 2s, double to 60s, 1-5s jitter.
- /import request limit was 2MB. It is 10MB uncompressed.
- Gzip was described as a way to avoid 413s. The limit is measured
  against the uncompressed body.
- Empty distinct_id was listed as a 400 cause. The docs instruct you to
  send an empty string for unattributed events; what is rejected is the
  placeholder list (anon, null, n/a, and so on).
- "Retry the batch one event at a time" contradicted the reference,
  which says not to retry 400s at all.

Removed:
- The 403 page described /import, which never returns 403 (the spec
  declares 200, 400, 401, 413, 429). Rescoped to /track, /engage, and
  /groups, which do, using the spec's ErrorResponse shape.
- An invented permission table using the org role "Member" for a
  project-level operation, and a nonexistent "user profiles are
  disabled" project setting.

Added the /track 5-day historical window, a common reason backfilled
events never appear.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants