{"openapi":"3.1.0","info":{"title":"Diagram API","version":"1.0.0","description":"Diagram hosts diagrams drawn by AI at permanent, private or public links. Publish from Claude, ChatGPT, Claude Code, Codex, Cursor, or CI, and every update lands at the same URL. Create an API key by signing in at https://diagram.la."},"servers":[{"url":"https://diagram.la/api/v1"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Diagram API key (dgm_...)"}}},"paths":{"/projects":{"get":{"operationId":"listProjects","summary":"List projects you own or were added to","responses":{"200":{"description":"{ projects }","content":{"application/json":{"schema":{"type":"object"}}}}}},"post":{"operationId":"createProject","summary":"Create a project","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"slug":{"type":"string","pattern":"^[a-z0-9](?:[a-z0-9-]{0,62}[a-z0-9])?$"},"name":{"type":"string","minLength":1,"maxLength":120},"org":{"description":"Org slug to put the project in; omit for a personal project","type":"string","pattern":"^[a-z0-9](?:[a-z0-9-]{0,62}[a-z0-9])?$"}},"required":["slug"]}}}},"responses":{"201":{"description":"{ project }","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/projects/{slug}":{"get":{"operationId":"getProject","summary":"A project and its diagrams","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"{ project, diagrams }","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/projects/{slug}/members":{"post":{"operationId":"addMember","summary":"Give an email read access","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"email":{"type":"string","format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"}},"required":["email"]}}}},"responses":{"200":{"description":"{ project }","content":{"application/json":{"schema":{"type":"object"}}}}}},"delete":{"operationId":"removeMember","summary":"Remove an email","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"email":{"type":"string","format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"}},"required":["email"]}}}},"responses":{"200":{"description":"{ project }","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/projects/{slug}/diagrams":{"get":{"operationId":"listDiagrams","summary":"List a project's diagrams","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"{ diagrams }","content":{"application/json":{"schema":{"type":"object"}}}}}},"post":{"operationId":"createDiagram","summary":"Create a diagram from self-contained HTML; returns its permanent url","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":200},"html":{"type":"string","minLength":1},"visibility":{"default":"private","type":"string","enum":["public","private"]}},"required":["title","html"]}}}},"responses":{"201":{"description":"{ diagram }","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/diagrams/{id}":{"get":{"operationId":"getDiagram","summary":"A diagram, with its HTML when html=1","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"html","in":"query","required":false,"schema":{"type":"string","enum":["1"]}}],"responses":{"200":{"description":"{ diagram, html? }","content":{"application/json":{"schema":{"type":"object"}}}}}},"put":{"operationId":"updateDiagram","summary":"New HTML (a new version at the same url), title, visibility, or project (moves it; same url)","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":200},"html":{"type":"string","minLength":1},"visibility":{"type":"string","enum":["public","private"]},"project":{"description":"Move the diagram to another project you own; the link stays the same","type":"string","pattern":"^[a-z0-9](?:[a-z0-9-]{0,62}[a-z0-9])?$"}}}}}},"responses":{"200":{"description":"{ diagram, changed }","content":{"application/json":{"schema":{"type":"object"}}}}}},"delete":{"operationId":"deleteDiagram","summary":"Delete a diagram and its versions","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"{ deleted }","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/diagrams/{id}/versions":{"get":{"operationId":"listVersions","summary":"A diagram's versions","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"{ versions }","content":{"application/json":{"schema":{"type":"object"}}}}}}}}}