Traduction automatique
Cette page a été traduite automatiquement par IA et peut contenir des erreurs. En cas de doute, référez-vous à la source anglaise.
Référence API : GraphQL¶
1. GraphQL (requêtes persistées / APQ)¶
- Point d'accès :
POST https://www.perplexity.ai/rest/perplexity_ask/graphql - Forme : requête persistée — le corps contient operationName + variables + un hash sha256 (pas de texte de requête nécessaire).
- Implémentation :
pplx_export/sites/perplexity/graphql.py.
1.1 LibraryThreadsRelayQuery (liste première page)¶
- sha256 :
a5229c390a6a00f81764187a21885cff655670029355c663fe393cc6e98f9ebe - Variables :
{includeSearchPreview:false, searchTerm:null, sortOrder:"NEWEST", statuses:null, threadTypes:null, sources:null, includeTemporary:null} - Chemin de réponse :
data.viewer.recentGroup.threads{edges[].node, pageInfo{hasNextPage,endCursor}} - Champs de nœud (utilisés par l'adaptateur) :
name(title),entryId(entryUUID),slug(href),mode,displayModel.modelID,updatedAt(lastUpdated),status,space{spaceUuid,title,slug} - Contrat côté archive (2026-07-22 V5-01) : le
lastUpdateddeweb_archive/**/thread.jsonest toujours égal à ce champ (écrit sur le disque avec une précision ISO complète, textuellement) ; la comparaison d'idempotence d'exportation par lot/unique (is_unchanged) est basée sur celui-ci, et non plus sur le format de présentation de la couche de rendu (YYYY-MM-DD HH:MM UTC). - Enrichissement côté archive (2026-07-23) : la clé
search_modedes lignes d'index (index/library_*.json) est un champ d'enrichissement côté archive — le nœud de cette requête ne contient pas search_mode ; il est rempli parpplx-export search-mode-backfillà partir des données au niveau du fil (entries[].search_modedeGET /rest/thread/<uuid>) (d'abord local brut, repli en ligne) ; l'actualisationindexle fusionne et le préserve par entryUUID. Le filtragebatch --modepréfère le mappage faisant autorité de ce champ.
1.2 LibraryRecentThreadsPaginationQuery (pagination)¶
- sha256 :
4f6dfcb8e9d3c065aca20ca1e82ca7fe464aaffc1faefade295bb7e333199629 - Variables : variables de première page +
{cursor, count}(les noms de variables sont cursor/count, pas after/first) - Même structure de réponse que ci-dessus. Lorsque
hasNextPageest vrai mais queendCursorest vide, arrêtez (sinon la même page se répète).
1.3 Groupe d'opérations du tableau de bord Computer (extrait du chunk de route 2026-07-20, non enregistré sur le serveur)¶
Le chunk ComputerDashboardPage-*.js intègre les textes complets des requêtes Relay + les identifiants persistés (méthode d'extraction dans §7).
Essentiels structurels : viewer.threadGroup(type: RECENT|ARCHIVED|PINNED|NEEDS_ATTENTION|SCHEDULED|SPACE, filter:{modes:[COMPUTER]})
— c'est-à-dire une liste de fils filtrée par threadGroup + mode ; le nœud contient contextUUID/entryId/readWriteToken/isPinned/isArchived/isUnread.
| opération | identifiant persisté (16 premiers caractères) |
|---|---|
| ComputerDashboardRecentThreadsPaginationQuery | d713e695c82e7927… |
| ComputerDashboardArchivedThreadsPaginationQuery | 1e9bcdb45cd611ca… |
| ComputerDashboardPinnedThreadsPaginationQuery | 814c1d1748157d57… |
| ComputerDashboardNeedsAttentionThreadsPaginationQuery | 2363d5af84392787… |
| ComputerDashboardScheduledThreadsPaginationQuery | 51b18409b05f2e43… |
| ComputerDashboardSpaceThreadsPaginationQuery | da08f207c2d8bbcd… |
| ComputerDashboardThreadGroupsUpdatesRelaySubscription | bcce76383fb03d7e… (abonnement WebSocket) |
Testé : appeler /rest/perplexity_ask/graphql avec ces identifiants retourne PERSISTED_QUERY_NOT_FOUND
(non enregistré dans le déploiement actuel — décalage de version ou contexte de tableau de bord requis ; les textes complets des requêtes et les identifiants sont conservés dans les notes d'exploration /tmp ;
si nécessaire, envoyez le texte de la requête directement ou extrayez-le à nouveau du bundle en direct).
1.4 Remarques¶
- Aucun appel graphql observé sur la page de l'espace web ou la page d'accueil (tout passe par /rest) ; graphql est confirmé pour la liste /library et le tableau de bord Computer.
- Les hash sha256 peuvent changer avec les versions du frontend ; le mode de défaillance est
PERSISTED_QUERY_NOT_FOUND— puis extrayez à nouveau depuis la capture réseau du navigateur (outil WebBridgenetworkfiltrantperplexity_ask/graphql), ou extrayez à nouveau du bundle en direct (§7).
1.5 Clés de connexion du tableau de bord extraites (clés de cache Relay, pour débogage)¶
ComputerDashboard(Recent|Archived|Pinned|NeedsAttention|Scheduled|Space)Threads_viewer_threads