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_threadssort field and exacttotal_threadssemantics (observed 99 vs 27 top-level).- Full spectrum of
threadAccess/access/user_permissionvalues (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_uuidvsuuidvscontext_uuidin 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):
- The page-load entry
_spa/assets/index.html-*.jsreferencesbootstrap-*.js(the runtime contains all chunk mappings); - Extract 682 chunk filenames (
<name>-<hash8>.jspattern) from bootstrap; filter API-related by name (client/api/thread/collection/space/computer…); - 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-*; grep -o '/rest/[a-zA-Z0-9_/.$_{}-]*'yields the endpoint list (147);- Chunks also leak call shapes (e.g. export's
format:'md'andfile_content_64). - 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_threadsreplacing 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 enrichmentrate-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).