Référence de l’API

API de graphe

L’API de graphe donne accès à l’intégralité du graphe de l’espace de travail Notion — tous les nœuds (pages, bases de données, utilisateurs) et leurs liens (arêtes). Il s’agit du point de terminaison principal utilisé par la visualisation 3D d’IVGraph.

GET /api/notion-graph/

Renvoie le graphe complet de l’espace de travail de l’utilisateur authentifié.

Authentification : JWT (ou sans authentification en mode démo)

Paramètres :

Paramètre Type Obligatoire Valeur par défaut Description
demo string non — Définissez ce paramètre à true pour obtenir les données de démonstration (sans authentification)
workspace_id UUID non primary Espace de travail spécifique à charger
connection_id UUID non — Connexion Airbyte spécifique
admin_user int non — Remplacement de l’identifiant utilisateur (réservé au personnel)

Exemple de requête :

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

Réponse :

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

Réponse lorsque la limite de nœuds de l’abonnement est dépassée (à titre informatif, le graphe est tout de même renvoyé) :

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

Réponse lorsqu’aucune connexion n’existe :

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

Schémas de données

Nœud

Champ Type Description
id UUID Identifiant de la page, de la base de données ou de l’utilisateur Notion
type string page, database ou user
title string Titre de la page ou nom de la base de données
url string URL Notion
icon object|null Données de l’icône (voir ci-dessous)
connections_in int Nombre d’arêtes entrantes
connections_out int Nombre d’arêtes sortantes
connections_total int Nombre total d’arêtes
pagerank float Score PageRank (0.0 — 1.0)

Icône

Champ Type Description
type string emoji, file ou external
emoji string Caractère emoji (si type=emoji)
file.url string URL du fichier (si type=file)
external.url string URL externe (si type=external)

Arête

Champ Type Description
id UUID Identifiant de l’arête
source UUID Identifiant du nœud source
target UUID Identifiant du nœud cible
type string reference, parent, mention ou relation

Types d’arêtes

Type Description
reference La page contient un lien vers une autre page
parent La page est un élément enfant d’une base de données ou d’une page
mention La page mentionne une autre page ou un utilisateur
relation Propriété Relation d’une base de données