Referencia de la API

API de grafos

La API de grafos permite acceder al grafo completo del espacio de trabajo de Notion: todos los nodos (páginas, bases de datos, usuarios) y sus relaciones (aristas). Este es el endpoint principal que utiliza la visualización 3D de IVGraph.

GET /api/notion-graph/

Devuelve el grafo completo del espacio de trabajo del usuario autenticado.

Autenticación: JWT (o sin autenticación en el modo de demostración)

Parámetros:

Parámetro Tipo Obligatorio Valor predeterminado Descripción
demo string no — Establece el valor en true para obtener datos de demostración (sin autenticación)
workspace_id UUID no primary Espacio de trabajo específico que se cargará
connection_id UUID no — Conexión específica de Airbyte
admin_user int no — Sustitución del ID de usuario (solo para el personal)

Ejemplo de solicitud:

# Authenticated user's graph
curl -H "Authorization: Bearer <jwt_token>" \
  "https://ivgraph.com/api/notion-graph/"

# Demo mode (no auth)
curl "https://ivgraph.com/api/notion-graph/?demo=true"

# Specific workspace
curl -H "Authorization: Bearer <jwt_token>" \
  "https://ivgraph.com/api/notion-graph/?workspace_id=abc-123"
import requests

resp = requests.get(
    "https://ivgraph.com/api/notion-graph/",
    headers={"Authorization": "Bearer <jwt_token>"}
)
graph = resp.json()
print(f"{graph['stats']['nodes']} nodes, {graph['stats']['links']} edges")
const resp = await fetch("https://ivgraph.com/api/notion-graph/", {
  headers: { Authorization: "Bearer <jwt_token>" }
});
const graph = await resp.json();
console.log(`${graph.stats.nodes} nodes, ${graph.stats.links} edges`);

Respuesta:

{
  "nodes": [
    {
      "id": "550e8400-e29b-41d4-a716-446655440001",
      "type": "page",
      "title": "Project Alpha",
      "url": "https://www.notion.so/Project-Alpha-550e8400...",
      "icon": {"type": "emoji", "emoji": "\ud83d\ude80"},
      "connections_in": 5,
      "connections_out": 12,
      "connections_total": 17,
      "pagerank": 0.42
    }
  ],
  "links": [
    {
      "id": "edge-uuid",
      "source": "550e8400-e29b-41d4-a716-446655440001",
      "target": "550e8400-e29b-41d4-a716-446655440002",
      "type": "reference"
    }
  ],
  "metadata": {
    "generated_at": "2026-04-10T12:00:00Z",
    "user": "username",
    "connection_id": "conn-uuid",
    "sync_time": "2026-04-10T10:00:00Z"
  },
  "stats": {
    "nodes": 342,
    "links": 1205,
    "total_blocks": 4500
  }
}

Respuesta cuando se supera el límite de nodos de la suscripción (informativa; el grafo se devuelve igualmente):

{
  "nodes": ["..."],
  "links": ["..."],
  "metadata": {},
  "stats": {},
  "node_limit_exceeded": true,
  "node_limit": 500,
  "node_count": 742
}

Respuesta cuando no existe ninguna conexión:

{
  "nodes": [],
  "links": [],
  "metadata": {"status": "no_connection"},
  "stats": {"nodes": 0, "links": 0, "total_blocks": 0}
}

Esquemas de datos

Nodo

Campo Tipo Descripción
id UUID ID de la página, base de datos o usuario de Notion
type string page, database o user
title string Título de la página o nombre de la base de datos
url string URL de Notion
icon object|null Datos del icono (ver más abajo)
connections_in int Número de aristas entrantes
connections_out int Número de aristas salientes
connections_total int Número total de aristas
pagerank float Puntuación de PageRank (0.0 — 1.0)

Icono

Campo Tipo Descripción
type string emoji, file o external
emoji string Carácter emoji (si type=emoji)
file.url string URL del archivo (si type=file)
external.url string URL externa (si type=external)

Arista

Campo Tipo Descripción
id UUID Identificador de la arista
source UUID ID del nodo de origen
target UUID ID del nodo de destino
type string reference, parent, mention o relation

Tipos de aristas

Tipo Descripción
reference La página enlaza a otra página
parent La página tiene como elemento padre una base de datos u otra página
mention La página menciona otra página o a un usuario
relation Propiedad de tipo Relación de una base de datos