API-Referenz

Graph-API

Die Graph-API bietet Zugriff auf den vollständigen Graphen des Notion-Workspaces — alle Knoten (Seiten, Datenbanken, Nutzer) und ihre Beziehungen (Kanten). Dies ist der primäre Endpunkt, den die 3D-Visualisierung von IVGraph nutzt.

GET /api/notion-graph/

Gibt den vollständigen Graphen für den Workspace des authentifizierten Nutzers zurück.

Authentifizierung: JWT (oder ohne Authentifizierung im Demomodus)

Parameter:

Parameter Typ Erforderlich Standardwert Beschreibung
demo string nein — Setze den Wert auf true, um Demodaten zu erhalten (ohne Authentifizierung)
workspace_id UUID nein primary Bestimmter Workspace, der geladen werden soll
connection_id UUID nein — Bestimmte Airbyte-Verbindung
admin_user int nein — Nutzer-ID überschreiben (nur für Mitarbeitende)

Beispielanfrage:

# 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`);

Antwort:

{
  "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
  }
}

Antwort bei Überschreitung des Knotenlimits des Abonnements (nur zur Information, der Graph wird weiterhin zurückgegeben):

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

Antwort, wenn keine Verbindung vorhanden ist:

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

Datenschemata

Knoten

Feld Typ Beschreibung
id UUID ID der Notion-Seite, der Notion-Datenbank oder des Notion-Nutzers
type string page, database oder user
title string Seitentitel oder Datenbankname
url string Notion-URL
icon object|null Symboldaten (siehe unten)
connections_in int Anzahl eingehender Kanten
connections_out int Anzahl ausgehender Kanten
connections_total int Gesamtzahl der Kanten
pagerank float PageRank-Wert (0.0 — 1.0)

Symbol

Feld Typ Beschreibung
type string emoji, file oder external
emoji string Emoji-Zeichen (wenn type=emoji)
file.url string Datei-URL (wenn type=file)
external.url string Externe URL (wenn type=external)

Kante

Feld Typ Beschreibung
id UUID Kantenkennung
source UUID ID des Quellknotens
target UUID ID des Zielknotens
type string reference, parent, mention oder relation

Kantentypen

Typ Beschreibung
reference Seite verlinkt auf eine andere Seite
parent Seite ist einer Datenbank oder Seite untergeordnet
mention Seite erwähnt eine andere Seite oder einen Nutzer
relation Datenbankeigenschaft vom Typ Relation