Referência da API

API de grafos

A API de grafos dá acesso ao grafo completo do espaço de trabalho do Notion — todos os nós (páginas, bancos de dados, usuários) e seus relacionamentos (arestas). Este é o principal endpoint usado pela visualização 3D do IVGraph.

GET /api/notion-graph/

Retorna o grafo completo do espaço de trabalho do usuário autenticado.

Autenticação: JWT (ou sem autenticação no modo de demonstração)

Parâmetros:

Parâmetro Tipo Obrigatório Padrão Descrição
demo string não — Defina como true para usar dados de demonstração (sem autenticação)
workspace_id UUID não primary Espaço de trabalho específico a carregar
connection_id UUID não — Conexão específica do Airbyte
admin_user int não — Substituição do ID do usuário (somente equipe interna)

Exemplo de requisição:

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

Resposta:

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

Resposta quando o limite de nós da assinatura é excedido (apenas informativa; o grafo ainda é retornado):

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

Resposta quando não há conexão:

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

Esquemas de dados

Nó

Campo Tipo Descrição
id UUID ID da página, do banco de dados ou do usuário no Notion
type string page, database ou user
title string Título da página ou nome do banco de dados
url string URL do Notion
icon object|null Dados do ícone (veja abaixo)
connections_in int Contagem de arestas de entrada
connections_out int Contagem de arestas de saída
connections_total int Contagem total de arestas
pagerank float Pontuação PageRank (0.0 — 1.0)

Ícone

Campo Tipo Descrição
type string emoji, file ou external
emoji string Caractere de emoji (se type=emoji)
file.url string URL do arquivo (se type=file)
external.url string URL externa (se type=external)

Aresta

Campo Tipo Descrição
id UUID Identificador da aresta
source UUID ID do nó de origem
target UUID ID do nó de destino
type string reference, parent, mention ou relation

Tipos de aresta

Tipo Descrição
reference A página contém um link para outra página
parent A página é filha de um banco de dados ou de uma página
mention A página menciona outra página ou um usuário
relation Propriedade de Relação de um banco de dados