Skip to content

Endpoint Discovery and Improvement Roadmap

Part of the Perplexity web API reference — full map at the API index.

6. Known unexplored / TBD items

  • list_collection_threads sort field and exact total_threads semantics (observed 99 vs 27 top-level).
  • Full spectrum of threadAccess/access/user_permission values (observed: threadAccess 5 normal, 1 with 🔒; collection access 1; permission 4 owner / 2 can edit; assets data also carries thread_access).
  • Correct parameter shapes for list_ask_threads, list_scheduled_computer_tasks (direct GET 400).
  • Response structures of collections/*/request-access-info, spaces/<uuid>/recurring_tasks, assets/<id>/members.
  • Why the dashboard GraphQL operations are unregistered (PERSISTED_QUERY_NOT_FOUND): version skew or context gating; when needed, re-extract with live hashes from network capture.
  • Division of labor among frontend_uuid vs uuid vs context_uuid in computer threads.
  • API signal fields of cross-account space-shared branch threads (branch_of) (parent pointer / branch marker) — mechanism confirmed (end of §3.3); no archived instance yet; verify and record when the first appears.

7. Endpoint discovery method: frontend bundle static analysis (zero API cost; established 2026-07-20)

Discovered 147 /rest/ endpoints in one pass; the method is reusable (re-run after frontend revamps):

  1. The page-load entry _spa/assets/index.html-*.js references bootstrap-*.js (the runtime contains all chunk mappings);
  2. Extract 682 chunk filenames (<name>-<hash8>.js pattern) from bootstrap; filter API-related by name (client/api/thread/collection/space/computer…);
  3. Download directly from the public CDN https://pplx-next-static-public.perplexity.ai/_spa/assets/<chunk>.js (no cookie needed); hub modules: platform-core-* (API client), spa-shell-*, spa-metadata-*;
  4. grep -o '/rest/[a-zA-Z0-9_/.$_{}-]*' yields the endpoint list (147);
  5. Chunks also leak call shapes (e.g. export's format:'md' and file_content_64).
  6. Sourcemaps also exist: https://pplx-static-sourcemaps.perplexity.ai/_spa/assets/<chunk>.js.map (not explored).

Appendix: 147 endpoints grouped by category (archive-relevance marked)

  • thread: /rest/thread/{entry_uuid_or_slug}, /rest/thread/export★, /rest/thread/{uuid}/members, /rest/thread/list_recent, /rest/thread/list_ask_threads, /rest/thread/list_pinned_ask_threads, /rest/thread/list_scheduled_computer_tasks, /rest/thread/request-access-info/{uuid}
  • collections/spaces★: see the §3.3 full table (incl. batch_move/batch_remove, list_user_collections, request-access-info, recurring_tasks, pins/threads, scheduled_threads)
  • assets★: /rest/assets/{asset_id}/data, /rest/assets/{asset_id}/members, /rest/assets/{asset_id}/published-access, /rest/assets/sites/{site_id}/publish-info
  • analytics: /rest/analytics/computer/usage, /rest/analytics/computer/usage/members (both 403 NOT_ORG_MEMBER — org accounts only)
  • models/skills: /rest/models/config(/v2), /rest/skills, /rest/skills/selectable, /rest/skills/grants, /rest/skills/submissions(/source)
  • files/uploads: /rest/file-repository/* (list/download/get-file-upload-urls/delete-files…), /rest/files/list(/list-infinite/list-errors), /rest/uploads/(batch_)create_upload_url(s), /rest/connectors/attachments/upload
  • tasks/computer: /rest/tasks/, /rest/tasks/{task_id}, /rest/tasks/shortcuts/mentions, /rest/tasks/shortcuts/paste/{copy_token}, /rest/computer/asset, /rest/computer/menu, /rest/computer/onboarding_cards
  • user/auth: /rest/user/settings, /rest/user/get_user_ai_profile, /rest/user/promotions, /rest/user/site-instructions, /rest/auth/get_special_profile, /rest/visitor/*
  • billing/stripe: /rest/billing/* (credits/paypal/subscription…), /rest/stripe/*
  • enterprise/org: /rest/enterprise/*, /rest/organizations/{id}/credit-limits*, /rest/pplx-api/v2/enterprise-api-org
  • sse: /rest/sse/attachment_processing/subscribe, /rest/sse/index_files, /rest/sse/perplexity_terminate, /rest/sse/related-queries/{entry_uuid}
  • verticals (irrelevant to archiving): /rest/finance/*, /rest/sports/*, /rest/travel/hotels/{slug}, /rest/health-assistant/*, /rest/article/{uuid_or_slug}
  • misc: /rest/pins, /rest/rate-limit/(all|status), /rest/notifications/web-push/*, /rest/attribution/*, /rest/homepage-widgets/upsell, /rest/ntp/upsell/, /rest/sidebar/upsell/, /rest/incentives/comet-activation, /rest/connector-service/usage

(★ = directly relevant to archiving)

8. Endpoint → tool improvement roadmap (sorted 2026-07-20)

Implemented

Endpoint Tool capability
collections/get_collection spaces --fetch-meta: space owner/member index
collections/list_collection_threads space-index defaults to direct REST (with context_uuid dual-ID mapping); browser rendering demoted to --transport webbridge fallback
assets/<uuid>/data assets-backfill --online: fresh signed-URL refresh for expired assets
LibraryThreadsRelayQuery, etc. index/batch: full indexing and incremental early-stop

P0 — Official export source (POST /rest/thread/export; md/pdf/docx tested)

  • ~~Report fidelity~~ (disproven and recorded): this endpoint returns whole-thread markdown, without the report body (§3.6); report.md's signed-URL chain is already the official report source — no change needed
  • Multi-format archiving: reports/threads can also be saved as pdf/docx (direct from the export endpoint; no pandoc or other external tools)
  • Reconciliation: diffing official thread markdown vs self-rendered conversation.md can serve as renderer regression tests

P1 — Listing and discovery

  • ~~collections/list_collection_threads replacing the browser space-index~~ (implemented; REST default, browser demoted to fallback)
  • collections/list_user_collections: automatic account-space enumeration (new-space discovery, authoritative list for spaces rebuild)

P2 — Metadata and risk control

  • credits/thread-usage (discovered, §3.5): archive per-thread credit usage (needs context_uuid) — can feed thread.json/index enrichment
  • rate-limit/status: read limit status before/during batch for adaptive throttling (further anti-ban)
  • file-repository/list-files: potential enumeration/rescue path for toolu_ cloud-workspace handles (270 assets without a download channel)
  • pins, models/config/v2, tasks/{id}: index enrichment (pin status, model display names, computer work duration)
  • thread/<uuid>/members: thread-level share relations (feeds the relations graph)

P3 — Relations and enhancement

  • ~~sse/related-queries/<uuid>: related-question clues, add "related" edges to the relations graph~~ (disproven 2026-07-23: related_query item uuids are not thread uuids, recommendation texts have zero overlap with other threads' queries — not resolvable into thread relations, see the §4 field notes; SSE endpoint value reassessed, no edges)
  • Dashboard GraphQL (threadGroup+modes filter): if the hashes recover, per-mode incremental indexing becomes possible (currently PERSISTED_QUERY_NOT_FOUND, blocked)

Not adopted

  • analytics/computer/usage(/members): 403 NOT_ORG_MEMBER (org accounts only)
  • thread/request-access-info: tested as org-join related, unrelated to threadAccess semantics
  • billing/stripe/enterprise/finance/sports, etc.: irrelevant to archiving

This document complements pplx_export/README.md (tool architecture) and overview.md (system design).