Salta ai contenuti

API e MCP

L’API REST e il server MCP di LetDraw permettono a strumenti esterni e client AI (Claude, Cursor) di lavorare con i tuoi diagrammi: elencare, leggere, creare, aggiornare, generare un diagramma dal codice, riconvertire in codice, condividere e generare da un prompt.

L’API e MCP sono disponibili per gli utenti Pro ed Enterprise. Nelle installazioni self-hosted, ogni membro che ha effettuato l’accesso può usarli. Gli utenti Free e ospiti non possono creare token.

  1. Accedi a LetDraw con un account Pro/Enterprise.
  2. Vai su Settings -> Developer.
  3. Crea un token: dagli un nome, scegli gli scope (vedi sotto) e, facoltativamente, limitalo a un singolo workspace.
  4. Il token ld_live_... generato viene mostrato una sola volta. Salvalo in un posto sicuro. Se viene divulgato, revocalo dalla stessa pagina.
ScopeAutorizzazione
diagrams:readLeggere workspace, cartelle e diagrammi
diagrams:writeCreare, aggiornare, eliminare e condividere diagrammi
exportEsportare un diagramma in codice Mermaid/D2
ai:generateGenerare un diagramma da un prompt (AI)

Invia il token come valore Bearer nell’intestazione Authorization in ogni richiesta:

Authorization: Bearer ld_live_...

Non è necessaria alcuna intestazione apikey aggiuntiva.

Base URL: https://api.letdraw.com/api-v1

Tutte le risposte sono in JSON. Gli errori vengono restituiti con un corpo standard: { "error": { "code", "message" } }.

MetodoPercorsoDescrizioneScope
GET/Info API (scope, endpoint)any
GET/workspacesI tuoi workspace (con ruolo)read
GET/folders?workspace=<id>Cartelle in un workspaceread
GET/documents?workspace=<id>Diagrammi in un workspace (paginati)read
GET/documents?folder=<id>Diagrammi in una cartella (paginati)read
POST/documentsCreare un diagrammawrite
GET/documents/:idDiagramma + scena (elementi)read
PATCH/documents/:idAggiornare nome e/o elementiwrite
DELETE/documents/:idEliminare un diagrammawrite
POST/documents/from-codeGenerare un diagramma dal codicewrite
POST/documents/generateGenerare un diagramma da un prompt (AI)ai:generate
GET/documents/:id/export?format=mermaid|d2Esportare un diagramma in codiceexport
POST/documents/:id/shareCreare un collegamento pubblico di sola letturawrite
DELETE/documents/:id/shareRimuovere il collegamento pubblicowrite

Gli endpoint di elenco accettano ?limit= (1-100, predefinito 50) e ?cursor=. La risposta restituisce un nextCursor; passalo come cursor per ottenere la pagina successiva.

120 richieste al minuto per token. Superarlo restituisce 429 rate_limited.

Terminal window
# List workspaces
curl -H "Authorization: Bearer ld_live_..." \
https://api.letdraw.com/api-v1/workspaces
# Generate a diagram from a docker-compose
curl -X POST -H "Authorization: Bearer ld_live_..." -H "Content-Type: application/json" \
-d '{"workspaceId":"<id>","code":"services:\n web:\n image: nginx\n depends_on: [db]\n db:\n image: postgres\n"}' \
https://api.letdraw.com/api-v1/documents/from-code
# Export a diagram to Mermaid
curl -H "Authorization: Bearer ld_live_..." \
"https://api.letdraw.com/api-v1/documents/<id>/export?format=mermaid"

I client Model Context Protocol (MCP) (Claude, Cursor) possono connettersi a LetDraw e lavorare con i tuoi diagrammi tramite strumenti.

  • URL: https://api.letdraw.com/mcp
  • Trasporto: Streamable HTTP (JSON-RPC 2.0 senza stato)
  • Auth: Authorization: Bearer ld_live_...
StrumentoDescrizione
list_workspacesWorkspace accessibili
list_diagramsDiagrammi in un workspace/cartella
get_diagramDiagramma + scena
create_diagramCreare un diagramma da un array di elementi (formato LetDraw o Excalidraw, rilevato automaticamente)
update_diagramAggiornare nome/elementi
delete_diagramEliminare un diagramma
diagram_from_codecompose, kubernetes, dot, plantuml, terraform, helm, sql -> diagramma
export_to_codeDiagramma -> Mermaid/D2
share_diagramCreare un collegamento pubblico
unshare_diagramRimuovere il collegamento pubblico
generate_from_promptDiagramma da linguaggio naturale (AI)

Puoi copiare blocchi di configurazione pronti con il tuo token dalla pagina Settings -> Developer. Sostituisci ld_live_... qui sotto con il tuo token.

~/.cursor/mcp.json (globale) oppure .cursor/mcp.json nella radice del progetto:

{
"mcpServers": {
"letdraw": {
"url": "https://api.letdraw.com/mcp",
"headers": { "Authorization": "Bearer ld_live_..." }
}
}
}

Claude Desktop si connette al server HTTP remoto tramite il bridge mcp-remote (Node.js richiesto). File di configurazione:

  • Windows: %APPDATA%\Claude\claude_desktop_config.json
  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"letdraw": {
"command": "npx",
"args": [
"-y", "mcp-remote",
"https://api.letdraw.com/mcp",
"--header", "Authorization:Bearer ld_live_..."
]
}
}
}

Riavvia il client dopo il salvataggio. Prompt di esempio:

  • “List my LetDraw workspaces.”
  • “Turn this docker-compose into a diagram in letdraw: …”
  • “Export diagram as Mermaid.”
  • “Generate an OAuth login flow diagram.”
  • “Draw this cloud architecture in letdraw: …” (composizione a forma libera)

create_diagram e update_diagram accettano l’array di elementi in due formati: lo schema di elementi proprio di LetDraw oppure il formato Excalidraw. Il formato viene rilevato automaticamente e gli elementi Excalidraw vengono convertiti in elementi LetDraw lato server (compresi contenitori annidati colorati, etichette collegate alle forme, frecce con binding, testo e frame).

Cosa significa questo: quando dici a ChatGPT, Gemini o Claude di “disegnare questa architettura in LetDraw”, il modello produce il JSON Excalidraw che già conosce molto bene dai suoi dati di addestramento e lo invia tramite MCP; LetDraw disegna l’esatto equivalente. Qualunque sia la qualità di layout del modello, è ciò che ottieni in LetDraw.

Puoi incorporare come SVG un diagramma condiviso pubblicamente in luoghi come un README o Notion. Ottieni prima un token di condivisione con share_diagram (o REST .../share), quindi:

https://api.letdraw.com/render-svg?token=<share-token>

Questo endpoint restituisce image/svg+xml e non richiede alcun token API (vengono resi solo i diagrammi condivisi), quindi puoi usarlo direttamente dentro <img src="...">.