Traducción automática
Esta página fue traducida automáticamente por IA y puede contener errores. Si algo no está claro, consulte la fuente en inglés.
Referencia de la API: GraphQL¶
1. GraphQL (consultas persistentes / APQ)¶
- Endpoint:
POST https://www.perplexity.ai/rest/perplexity_ask/graphql - Forma: consulta persistente — el cuerpo lleva operationName + variables + un hash sha256 (no se necesita texto de consulta).
- Implementación:
pplx_export/sites/perplexity/graphql.py.
1.1 LibraryThreadsRelayQuery (listar primera página)¶
- sha256:
a5229c390a6a00f81764187a21885cff655670029355c663fe393cc6e98f9ebe - Variables:
{includeSearchPreview:false, searchTerm:null, sortOrder:"NEWEST", statuses:null, threadTypes:null, sources:null, includeTemporary:null} - Ruta de respuesta:
data.viewer.recentGroup.threads{edges[].node, pageInfo{hasNextPage,endCursor}} - Campos de nodo (usados por el adaptador):
name(title),entryId(entryUUID),slug(href),mode,displayModel.modelID,updatedAt(lastUpdated),status,space{spaceUuid,title,slug} - Contrato del lado del archivo (2026-07-22 V5-01): el
lastUpdateddeweb_archive/**/thread.jsonsiempre es igual a este campo (escrito en disco con precisión ISO completa, textualmente); la comparación de idempotencia de exportación por lotes/individual (is_unchanged) se basa en él, ya no en el formato de presentación de la capa de renderizado (YYYY-MM-DD HH:MM UTC). - Enriquecimiento del lado del archivo (2026-07-23): la clave
search_modede las filas de índice (index/library_*.json) es un campo de enriquecimiento del lado del archivo — el nodo de esta consulta no contiene search_mode; se rellena mediantepplx-export search-mode-backfilla partir de datos a nivel de hilo (entries[].search_modedeGET /rest/thread/<uuid>) (primero raw local, fallback en línea); la actualizaciónindexfusiona y lo conserva por entryUUID. El filtradobatch --modeprefiere la asignación autoritativa de este campo.
1.2 LibraryRecentThreadsPaginationQuery (paginación)¶
- sha256:
4f6dfcb8e9d3c065aca20ca1e82ca7fe464aaffc1faefade295bb7e333199629 - Variables: variables de primera página +
{cursor, count}(los nombres de variable son cursor/count, no after/first) - Misma estructura de respuesta que arriba. Cuando
hasNextPagees verdadero peroendCursorestá vacío, detenerse (de lo contrario, la misma página se repite).
1.3 Grupo de operaciones del panel de Computer (extraído del chunk de ruta 2026-07-20, no registrado en el servidor)¶
El chunk ComputerDashboardPage-*.js incrusta textos completos de consultas Relay + ids persistentes (método de extracción en §7).
Elementos estructurales esenciales: viewer.threadGroup(type: RECENT|ARCHIVED|PINNED|NEEDS_ATTENTION|SCHEDULED|SPACE, filter:{modes:[COMPUTER]})
— es decir, una lista de hilos filtrada por threadGroup + mode; el nodo contiene contextUUID/entryId/readWriteToken/isPinned/isArchived/isUnread.
| operación | id persistente (primeros 16 caracteres) |
|---|---|
| ComputerDashboardRecentThreadsPaginationQuery | d713e695c82e7927… |
| ComputerDashboardArchivedThreadsPaginationQuery | 1e9bcdb45cd611ca… |
| ComputerDashboardPinnedThreadsPaginationQuery | 814c1d1748157d57… |
| ComputerDashboardNeedsAttentionThreadsPaginationQuery | 2363d5af84392787… |
| ComputerDashboardScheduledThreadsPaginationQuery | 51b18409b05f2e43… |
| ComputerDashboardSpaceThreadsPaginationQuery | da08f207c2d8bbcd… |
| ComputerDashboardThreadGroupsUpdatesRelaySubscription | bcce76383fb03d7e… (suscripción WebSocket) |
Probado: llamar a /rest/perplexity_ask/graphql con estos ids devuelve PERSISTED_QUERY_NOT_FOUND
(no registrado en la implementación actual — desfase de versión o contexto de panel requerido; los textos completos de consulta y los ids se mantienen en las notas de exploración /tmp;
si es necesario, enviar el texto de consulta directamente o reextraer del bundle en vivo).
1.4 Notas¶
- No se observaron llamadas graphql en la página de espacio web ni en la página de inicio (todas pasan por /rest); graphql está confirmado para la lista /library y el panel de Computer.
- Los hashes sha256 pueden cambiar con las versiones del frontend; el modo de fallo es
PERSISTED_QUERY_NOT_FOUND— luego reextraer de la captura de red del navegador (herramienta WebBridgenetworkfiltrandoperplexity_ask/graphql), o reextraer del bundle en vivo (§7).
1.5 Claves de conexión del panel extraídas (claves de caché de Relay, para depuración)¶
ComputerDashboard(Recent|Archived|Pinned|NeedsAttention|Scheduled|Space)Threads_viewer_threads