Workspace
Dateien, Ordner, Freigaben und eingebundene Laufwerke.
Dateien, Ordner, Freigaben und eingebundene Laufwerke.
Dateien, Ordner, Fassungen, Freigaben und Änderungen - derselbe Bestand, den die Oberfläche unter /workspace zeigt, als HTTP-Schnittstelle.
Alles ist ein Knoten. Ein Ordner ist ein Knoten mit Kindern, eine Datei ein Knoten mit Inhalt. Die Id ist der Vertrag: sie bleibt beim Umbenennen und beim Verschieben gleich. Baue Automatisierung auf Ids, nicht auf Pfaden.
Jede Datei trägt eine revision, die bei jedem Schreiben um eins steigt. Schreibende Aufrufe nehmen die Revision entgegen, die du gesehen hast; passt sie nicht mehr, antwortet der Server 409 REVISION_CONFLICT statt die Arbeit eines anderen zu überschreiben. Lies neu, wende deine Änderung erneut an, schicke nochmal.
| Parameter | Type | Description |
|---|---|---|
id | uuid | Stabile Kennung eines Knotens. Ändert sich nie, auch nicht beim Umbenennen oder Verschieben. |
type | "folder" | "file" | Ordner oder Datei. Bestimmt, welche Felder gesetzt sind: childCount nur bei Ordnern, sizeBytes und revision nur bei Dateien. |
kind | "document" | "presentation" | "sheet" | "sketch" | "text" | "markdown" | "code" | "pdf" | "image" | null | Die Art der Datei, vom Server aus dem MIME-Typ abgeleitet. Baue sie nicht selbst nach, sonst pflegst du dieselbe Zuordnung zweimal. |
revision | integer | Zähler des Dateiinhalts. Steigt bei jedem Schreiben um eins und ist die Grundlage jeder Konfliktprüfung. |
role | "owner" | "editor" | "commenter" | "viewer" | Deine Rolle auf diesem Knoten, geerbt über die Ordnerkette. owner darf alles, editor darf schreiben, commenter darf kommentieren, viewer darf lesen. |
projectId | uuid | null | Gesetzt, wenn der Knoten in einer Projektablage liegt statt in der persönlichen. Ein Umzug zwischen beiden ist nicht möglich. |
mountId | uuid | null | Gesetzt, wenn der Knoten aus einem eingebundenen Laufwerk stammt. Solche Knoten gehören dem Quellsystem: hinein oder heraus verschieben ist gesperrt. |
1curl "https://app.anymize.ai/api/v1/workspace/usage" \2 -H "Authorization: Bearer YOUR_API_KEY" Ordner und Dateien anlegen, lesen, ändern und in den Papierkorb legen. Das ist der Kern der API; alles Weitere hängt an einer Knoten-Id.
Kinder eines Ordners, oder die Wurzel, wenn kein Elternteil angegeben ist. Ordner tragen childCount für den Füllstand, Dateien den Zustand ihrer Vorschau.
/api/v1/workspace/nodesQuery
| Parameter | Type | Description |
|---|---|---|
parentId | uuid | Elternordner. Ohne Angabe die Wurzel. |
projectId | uuid | Projektablage statt persönlicher Ablage. |
{
"nodes": [
{
"id": "1c9f6d2a-3b48-4c11-9a7e-2f5b8d0c4e63",
"type": "folder",
"name": "Angebote",
"kind": null,
"color": "teal",
"icon": "chart",
"childCount": 14,
"thumbnailState": "unsupported",
"updatedAt": "2026-08-11T09: 12: 00.000Z"
},
{
"id": "7f2a5e91-0c6d-4b83-8e14-9d3f7a2c6b05",
"type": "file",
"name": "Q3.xlsx",
"kind": "sheet",
"sizeBytes": 48213,
"revision": 3,
"thumbnailState": "ready",
"updatedAt": "2026-08-11T09: 20: 00.000Z"
}
],
"breadcrumbs": [],
"role": "owner"
}| 404 | NOT_FOUND | Den Knoten gibt es nicht, oder du darfst ihn nicht sehen. Beides antwortet gleich - eine API, die zwischen den beiden unterscheidet, verrät die Existenz fremder Dateien. |
1curl "https://app.anymize.ai/api/v1/workspace/nodes?parentId=1c9f6d2a-3b48-4c11-9a7e-2f5b8d0c4e63" \2 -H "Authorization: Bearer YOUR_API_KEY" Metadaten eines Knotens. Den Brotkrumenpfad und den Inhalt gibt es nur mit content=1.
/api/v1/workspace/nodes/:idQuery
| Parameter | Type | Description |
|---|---|---|
content | "1" | Mit 1 kommt bei Word-Dateien zusätzlich der Editorinhalt als JSON zurück, samt Formatvorlagen, Kopf- und Fußzeilen und Kommentaren. |
{
"node": {
"id": "6f1c2b7e-9a44-4f0d-8f2b-1e7d3c5a9b10",
"parentId": null,
"projectId": null,
"type": "file",
"name": "Angebot Q3.docx",
"mimeType": "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
"sizeBytes": 48213,
"revision": 3,
"starred": false,
"color": null,
"icon": null,
"description": null,
"trashedAt": null,
"role": "owner",
"updatedAt": "2026-08-24T09: 20: 00.000Z"
}
}| 404 | NOT_FOUND | Den Knoten gibt es nicht, oder du darfst ihn nicht sehen. Beides antwortet gleich - eine API, die zwischen den beiden unterscheidet, verrät die Existenz fremder Dateien. |
| 415 | NOT_READABLE | Diese Datei lässt sich nicht als Editorinhalt lesen. Lade sie stattdessen herunter. |
| 422 | IMPORT_FAILED | Das Dokument ließ sich nicht in die Editorform übersetzen. Herunterladen und in Word öffnen geht weiterhin. |
| 502 | BLOB_UNAVAILABLE | Die Zeile lebt, das gespeicherte Objekt nicht mehr. Kein Fehler deines Aufrufs; melde die Datei, wenn das häufiger vorkommt. |
Legt einen Ordner an oder eine leere Word-, Excel- bzw. PowerPoint-Datei aus der jeweiligen Vorlage.
/api/v1/workspace/nodesBody
| Parameter | Type | Description |
|---|---|---|
kindrequired | "folder" | "doc" | "sheet" | "slides" | "sketch" | Art des neuen Knotens. |
namerequired | string (1-255) | Name, maximal 255 Zeichen. |
parentId | uuid | null | Elternordner. Ohne Angabe die Wurzel. |
projectId | uuid | null | Projektablage statt persönlicher Ablage. |
sheetName | string (1-31) | Name des ersten Tabellenblatts einer neuen Mappe. Ohne Angabe heißt es Tabelle1. |
{
"node": {
"id": "6f1c2b7e-9a44-4f0d-8f2b-1e7d3c5a9b10",
"parentId": null,
"projectId": null,
"type": "file",
"name": "Angebot Q3.docx",
"mimeType": "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
"kind": "document",
"sizeBytes": 48213,
"revision": 3,
"starred": false,
"isAnonymized": false,
"anonymizationStatus": "none",
"anonymizationStale": false,
"color": null,
"icon": null,
"childCount": null,
"thumbnailState": "ready",
"updatedAt": "2026-08-24T09: 20: 00.000Z",
"createdAt": "2026-08-11T09: 12: 00.000Z"
}
}| 400 | INVALID_BODY | Der Rumpf passt nicht zum erwarteten Schema. |
| 403 | FORBIDDEN | Im Zielordner darfst du nicht schreiben. |
| 413 | QUOTA_EXCEEDED | Der Speicher des Kontos ist voll, oder die Datei würde ihn sprengen. Papierkorb und aufgehobene Fassungen zählen mit. |
1curl -X POST "https://app.anymize.ai/api/v1/workspace/nodes" \2 -H "Authorization: Bearer YOUR_API_KEY" \3 -H "Content-Type: application/json" \4 -d '{"kind":"sheet","name":"Umsatz Q3","parentId":null}' Umbenennen, markieren, Ordneraussehen setzen oder den Editorinhalt speichern. Genau eine dieser Formen je Aufruf.
/api/v1/workspace/nodes/:idBody
| Parameter | Type | Description |
|---|---|---|
name | string (1-255) | Neuer Name. |
parentId | uuid | null | Verschieben. null bedeutet Wurzel der persönlichen Ablage. |
description | string (0-2000) | null | Freie Beschreibung, höchstens 2000 Zeichen. null entfernt sie. |
starred | boolean | Persönliche Markierung setzen oder lösen. |
color | string | null | Farbschlüssel des Ordners (amber, tuareg, teal, green, red, purple, pink, slate). null setzt zurück. |
icon | string | null | Symbolschlüssel des Ordners (star, team, project, document, image, chart, money, lock, code, cloud, flag, heart). null entfernt das Symbol. |
agentRead | boolean | null | Ordnerriegel: dürfen Agenten hier lesen? null bedeutet, die Einstellung wird von oben geerbt. |
agentWrite | boolean | null | Ordnerriegel: dürfen Agenten hier schreiben? null bedeutet, die Einstellung wird von oben geerbt. |
doc | object | Editorinhalt; verlangt zusätzlich revision. |
revision | integer | Die Revision, auf der deine Änderung aufsetzt. Pflicht bei jedem inhaltlichen Schreiben. |
| 400 | INVALID_BODY | Der Rumpf trägt keine oder mehr als eine der erlaubten Formen. |
| 403 | FORBIDDEN | Dir fehlt das Recht für diese Änderung. Verschieben und der Agentenriegel sind dem Eigentümer vorbehalten. |
| 409 | REVISION_CONFLICT | Jemand hat die Datei zwischenzeitlich geändert. Lies neu, wende deine Änderung auf den neuen Stand an und schicke nochmal. |
| 400 | NOT_A_FOLDER | Farbe und Symbol gibt es nur an Ordnern. Der Server weist sie an einer Datei ab, statt sie still zu schlucken. |
| 422 | SCOPE_CHANGE | Quelle und Ziel liegen in verschiedenen Bereichen. Ein Umzug zwischen persönlicher und Projektablage ist nicht vorgesehen. |
| 422 | MOUNT_TARGET | Quelle oder Ziel gehört zu einem eingebundenen Laufwerk. Der nächste Abgleich würde die Verschiebung zerlegen. |
1curl -X PATCH "https://app.anymize.ai/api/v1/workspace/nodes/1c9f6d2a-3b48-4c11-9a7e-2f5b8d0c4e63" \2 -H "Authorization: Bearer YOUR_API_KEY" \3 -H "Content-Type: application/json" \4 -d '{"color":"teal","icon":"chart"}' Legt den Knoten in den Papierkorb. Bei einem Ordner wandert der ganze Teilbaum mit.
/api/v1/workspace/nodes/:id| 404 | NOT_FOUND | Den Knoten gibt es nicht, oder du darfst ihn nicht sehen. Beides antwortet gleich - eine API, die zwischen den beiden unterscheidet, verrät die Existenz fremder Dateien. |
Holt den Knoten an seinen alten Platz zurück. Gibt es den Elternordner nicht mehr, landet er in der Wurzel.
/api/v1/workspace/nodes/:id/restore| 404 | NOT_FOUND | Den Knoten gibt es nicht, oder du darfst ihn nicht sehen. Beides antwortet gleich - eine API, die zwischen den beiden unterscheidet, verrät die Existenz fremder Dateien. |
Entfernt einen Knoten, der bereits im Papierkorb liegt, unwiderruflich - samt aller aufgehobenen Fassungen.
/api/v1/workspace/nodes/:id/permanent| 404 | NOT_FOUND | Den Knoten gibt es nicht, oder du darfst ihn nicht sehen. Beides antwortet gleich - eine API, die zwischen den beiden unterscheidet, verrät die Existenz fremder Dateien. |
| 409 | NOT_IN_TRASH | Der Knoten liegt nicht im Papierkorb. |
| 409 | PURGE_CONFLICT | Der Knoten wird gerade verändert. Versuche es gleich noch einmal. |
Persönliche Markierung. Lesezugriff genügt: wer einen Knoten sehen darf, darf ihn für sich markieren. Idempotent.
/api/v1/workspace/nodes/:id/star{
"starred": true
}Nimmt die persönliche Markierung zurück. Idempotent.
/api/v1/workspace/nodes/:id/star{
"starred": false
}Die Id ist der Vertrag, der Pfad die Bequemlichkeit. Wenn du eine Datei nur unter ihrem Namen kennst, löse sie einmal zu einer Id auf und arbeite danach mit dieser.
Nimmt einen Pfad wie /Verträge/Miete.docx und liefert den Knoten samt Brotkrumen. Gedacht als Einstieg: danach arbeitest du mit der zurückgelieferten Id weiter.
/api/v1/workspace/nodes/by-pathQuery
| Parameter | Type | Description |
|---|---|---|
pathrequired | string | Absoluter Pfad, mit / beginnend. Segmente werden gegen die Namen der Kinder verglichen, Groß- und Kleinschreibung spielt keine Rolle. / allein bezeichnet die Wurzel. |
children | "1" | Mit 1 kommen bei einem Ordner zusätzlich seine direkten Kinder zurück - spart den zweiten Aufruf. |
{
"node": {
"id": "7f2a5e91-0c6d-4b83-8e14-9d3f7a2c6b05",
"type": "file",
"name": "Miete.docx",
"kind": "document",
"revision": 4
},
"path": "/Vertraege/Miete.docx",
"breadcrumbs": [
{
"id": "1c9f6d2a-3b48-4c11-9a7e-2f5b8d0c4e63",
"name": "Vertraege"
}
],
"role": "owner"
}| 400 | INVALID_PATH | Der Pfad ist leer, geht tiefer als 32 Ebenen, enthält ein Segment aus lauter Punkten oder ein verbotenes Zeichen. Ein fehlender führender Schrägstrich ist dagegen erlaubt. |
| 404 | NOT_FOUND | Ein Segment des Pfades gibt es nicht, oder du darfst es nicht sehen. Beides antwortet gleich, damit die Route keine fremden Ordnernamen verrät. |
1curl -G "https://app.anymize.ai/api/v1/workspace/nodes/by-path" \2 --data-urlencode "path=/Vertraege/Miete.docx" \3 -H "Authorization: Bearer YOUR_API_KEY" Ein Endpunkt für Lesen, Schreiben, Ersetzen, Anlegen, Verschieben und Löschen über Pfade - derselbe Weg, den die Agentenwerkzeuge nehmen. Praktisch für Textdateien und Tabellen, wenn du keine Ids verwalten willst.
/api/v1/workspace/fsBody
| Parameter | Type | Description |
|---|---|---|
aktionrequired | "read" | "write" | "edit" | "manage" | "create_xlsx" | "update_xlsx" | Welche Handlung. read liest eine Textdatei, write legt sie an oder ersetzt sie, edit tauscht eine Textstelle, manage legt Ordner an, verschiebt und löscht, create_xlsx und update_xlsx schreiben Arbeitsmappen. |
path | string | Absoluter Pfad in der persönlichen Ablage. |
content | string | Der neue vollständige Inhalt bei aktion=write. |
alt / neu | string | Bei aktion=edit: alt ist die Stelle, die ersetzt wird, neu der Ersatz. Kommt alt mehrfach vor, brauchst du alle_vorkommen. |
unteraktion | "mkdir" | "move" | "delete" | Bei aktion=manage: mkdir legt einen Ordner an, move verschiebt nach to, delete legt in den Papierkorb. |
name | string (1-200) | Nur bei aktion=create_xlsx: Name der neuen Arbeitsmappe, höchstens 200 Zeichen. |
folder_id | uuid | null | Nur bei aktion=create_xlsx: Zielordner. Ohne Angabe die Wurzel. |
workbook | object | Der Mappenbaum: Blätter mit Zeilen und Zellen. Pflicht bei create_xlsx und update_xlsx. |
node_id | uuid | Nur bei aktion=update_xlsx: welche Mappe geändert wird. |
revision | integer | Nur bei aktion=update_xlsx: die Revision, auf der deine Änderung aufsetzt. |
| 403 | FORBIDDEN | Der Pfad zeigt aus der persönlichen Ablage heraus, oder ein Agentenriegel sperrt den Ordner. |
| 409 | REVISION_CONFLICT | Jemand hat die Datei zwischenzeitlich geändert. Lies neu, wende deine Änderung auf den neuen Stand an und schicke nochmal. |
| 409 | WOULD_DESTROY_CONTENT | Nur bei aktion=update_xlsx. Der Vollersatz ist gesperrt, weil die Mappe nicht von anymize erzeugt wurde oder Inhalte trägt, die wir nicht verlustfrei nachbauen (Diagramme, verbundene Zellen). Der hint nennt den Grund. Für gezielte Zellenänderungen nimm PATCH /nodes/:id/sheet. |
| 415 | NOT_A_XLSX | Die Datei ist keine Excel-Arbeitsmappe. |
Inhalte hineinbringen und wieder herausholen. Kleine Dateien in einem Aufruf, große in Teilen, und der Export in neun Formate.
Legt eine neue Datei an und erzeugt dabei gleich ihre Vorschau. Der Server prüft, ob der Inhalt zur Endung passt, und weist Zip-Pakete mit verdächtigem Packverhältnis ab.
/api/v1/workspace/uploadRequest: multipart/form-data
Body
| Parameter | Type | Description |
|---|---|---|
filerequired | File | Der Dateiinhalt als Formularfeld file. |
parentId | uuid | Elternordner. Ohne Angabe die Wurzel. |
projectId | uuid | Projektablage statt persönlicher Ablage. |
withAnonymization | "true" | "1" | Bittet darum, das Dokument beim Hochladen zu anonymisieren. |
| 400 | FILE_MISSING | Im Formular fehlt das Feld file, oder es enthält keine Datei. |
| 413 | FILE_TOO_LARGE | Die Datei überschreitet 50 MiB. |
| 415 | CONTENT_MISMATCH | Der Inhalt passt nicht zur Dateiendung. Eine als .docx benannte PDF wird abgelehnt, damit der Editor sie nicht später zerlegt. |
| 415 | ZIP_RATIO_SUSPICIOUS | Das Office-Paket packt sich verdächtig stark aus, enthält zu viele Einträge oder ist entpackt zu groß. |
1curl -X POST "https://app.anymize.ai/api/v1/workspace/upload" \2 -H "Authorization: Bearer YOUR_API_KEY" \3 -F "file=@Angebot.docx" \4 -F "parentId=1c9f6d2a-3b48-4c11-9a7e-2f5b8d0c4e63" Schreibt die Rohbytes einer bestehenden Datei neu, ohne einen zweiten Knoten anzulegen. Der bisherige Stand wandert in die Fassungen, die Revision steigt um eins.
/api/v1/workspace/nodes/:id/contentRequest: application/octet-stream
Query
| Parameter | Type | Description |
|---|---|---|
revision | integer | Die Revision, die du gesehen hast. Weicht sie ab, antwortet der Server 409 statt zu überschreiben. Lass sie weg, und du überschreibst blind. |
{
"node": {
"id": "7f2a…",
"revision": 5,
"sizeBytes": 51200
}
}| 403 | FORBIDDEN | Auf diesem Knoten hast du kein Schreibrecht. |
| 409 | REVISION_CONFLICT | Jemand hat die Datei zwischenzeitlich geändert. Lies neu, wende deine Änderung auf den neuen Stand an und schicke nochmal. |
| 413 | FILE_TOO_LARGE | Die Datei überschreitet 50 MiB. |
| 415 | CONTENT_MISMATCH | Der Inhalt passt nicht zur Dateiendung. Eine als .docx benannte PDF wird abgelehnt, damit der Editor sie nicht später zerlegt. |
1curl -X PUT "https://app.anymize.ai/api/v1/workspace/nodes/7f2a5e91-0c6d-4b83-8e14-9d3f7a2c6b05/content?revision=4 " \2 -H "Authorization: Bearer YOUR_API_KEY" \3 -H "Content-Type: application/octet-stream" \4 --data-binary @Angebot.docxLegt eine Upload-Sitzung an. Du bekommst eine Adresse zurück, an die du die Datei in Bereichen schickst; reißt die Verbindung ab, machst du an derselben Stelle weiter statt von vorn.
/api/v1/workspace/uploadsBody
| Parameter | Type | Description |
|---|---|---|
namerequired | string (1-255) | Name, maximal 255 Zeichen. |
sizeBytesrequired | integer | Die Gesamtgröße der Datei in Bytes. Der Server prüft damit vorab gegen Dateigrenze und Speicherstand, statt dich erst nach dem letzten Teil abzuweisen. |
parentId | uuid | null | Elternordner. Ohne Angabe die Wurzel. |
projectId | uuid | null | Projektablage statt persönlicher Ablage. |
nodeId | uuid | Statt eine neue Datei anzulegen, den Inhalt dieses vorhandenen Knotens ersetzen. |
revision | integer | Die Revision, die du gesehen hast. Weicht sie ab, antwortet der Server 409 statt zu überschreiben. Lass sie weg, und du überschreibst blind. |
{
"uploadUrl": "https://app.anymize.ai/api/v1/workspace/uploads/8f4c1a02-77d3-4b6e-9c31-5ad0e2f81b64",
"sessionId": "8f4c1a02-77d3-4b6e-9c31-5ad0e2f81b64",
"expiresAt": "2026-08-24T11: 20: 00.000Z",
"chunkSizeBytes": 8388608,
"nextExpectedRanges": [
"0-"
]
}| 413 | FILE_TOO_LARGE | Die Datei überschreitet 50 MiB. |
| 413 | QUOTA_EXCEEDED | Der Speicher des Kontos ist voll, oder die Datei würde ihn sprengen. Papierkorb und aufgehobene Fassungen zählen mit. |
| 415 | BLOCKED_TYPE | Dateien dieses Typs sind im Workspace gesperrt: ausführbar, mit Makros oder skriptfähig. |
| 415 | UNSUPPORTED_TYPE | Die Endung steht nicht auf der Freigabeliste, oder der Name hat gar keine. |
Schickt einen Bereich der Datei. Der Kopf Content-Range sagt, welchen. Solange noch etwas fehlt, antwortet der Server 202 und nennt in nextExpectedRanges, wo es weitergeht; mit dem letzten Bereich antwortet er 201 und liefert den fertigen Knoten.
/api/v1/workspace/uploads/:sessionIdRequest: application/octet-stream
{
"sessionId": "8f4c1a02…",
"nextExpectedRanges": [
"8388608-"
],
"expiresAt": "2026-08-24T11: 20: 00.000Z"
}{
"node": {
"id": "7f2a…",
"name": "Praesentation.pptx",
"revision": 1,
"sizeBytes": 41943040
}
}| 400 | INVALID_RANGE | Der Kopf Content-Range fehlt oder ist unlesbar. |
| 404 | SESSION_NOT_FOUND | Diese Sitzung gibt es nicht, oder sie gehört einem anderen Konto. |
| 409 | RANGE_MISMATCH | Der geschickte Bereich beginnt nicht dort, wo der letzte aufgehört hat. Die Antwort nennt in nextExpectedRanges die richtige Stelle. |
| 409 | REVISION_CONFLICT | Jemand hat die Datei zwischenzeitlich geändert. Lies neu, wende deine Änderung auf den neuen Stand an und schicke nochmal. |
| 410 | SESSION_EXPIRED | Die Sitzung ist abgelaufen. Beginne eine neue; die bereits geschickten Teile sind verworfen. |
| 413 | QUOTA_EXCEEDED | Der Speicher des Kontos ist voll, oder die Datei würde ihn sprengen. Papierkorb und aufgehobene Fassungen zählen mit. |
| 415 | CONTENT_MISMATCH | Der Inhalt passt nicht zur Dateiendung. Eine als .docx benannte PDF wird abgelehnt, damit der Editor sie nicht später zerlegt. |
1curl -X PUT "https://app.anymize.ai/api/v1/workspace/uploads/8f4c1a02-77d3-4b6e-9c31-5ad0e2f81b64" \2 -H "Authorization: Bearer YOUR_API_KEY" \3 -H "Content-Range: bytes 0 -8388607 /41943040 " \4 -H "Content-Type: application/octet-stream" \5 --data-binary @teil-1 .binSagt, wie viele Bytes lückenlos angekommen sind und wo es weitergeht. Nach einem Absturz des Clients ist das die einzige Frage, die zählt: ohne sie bliebe nur, blind bei null anzufangen.
/api/v1/workspace/uploads/:sessionId{
"sessionId": "8f4c1a02-77d3-4b6e-9c31-5ad0e2f81b64",
"name": "Praesentation.pptx",
"sizeBytes": 41943040,
"receivedBytes": 16777216,
"nextExpectedRanges": [
"16777216-"
],
"chunkSizeBytes": 8388608,
"expiresAt": "2026-08-24T11: 20: 00.000Z"
}| 404 | SESSION_NOT_FOUND | Diese Sitzung gibt es nicht, oder sie gehört einem anderen Konto. |
| 410 | SESSION_EXPIRED | Die Sitzung ist abgelaufen. Beginne eine neue; die bereits geschickten Teile sind verworfen. |
Bricht die Sitzung ab und räumt die bereits geschickten Teile weg. Ohne diesen Aufruf tut es die Ablaufzeit nach einer Stunde von selbst.
/api/v1/workspace/uploads/:sessionIdOhne format kommt die Datei so, wie sie gespeichert ist. Mit format wird sie umgewandelt.
/api/v1/workspace/nodes/:id/downloadResponse: application/octet-stream
Query
| Parameter | Type | Description |
|---|---|---|
format | "docx" | "pdf" | "odt" | "rtf" | "epub" | "md" | "txt" | "html" | "csv" | Zielformat der Umwandlung. Ohne Angabe kommt die Originaldatei. |
sheet | string | integer | Nur bei format=csv: welches Tabellenblatt, als Name oder als Nummer ab 0. Ohne Angabe das erste sichtbare. |
| 400 | INVALID_FORMAT | Das angefragte Format kennt der Server nicht, oder format wurde mehrfach angegeben. |
| 400 | INVALID_QUERY | Ein Abfrageparameter fehlt, ist doppelt angegeben oder unlesbar. |
| 415 | NOT_EXPORTABLE | Für diesen Dateityp gibt es das angeforderte Format nicht. |
| 502 | CONVERSION_FAILED | Der Umwandler hat die Datei nicht verarbeiten können. Ein erneuter Versuch hilft selten; lade das Original herunter. |
| 503 | CONVERTER_UNAVAILABLE | Der Umwandlungsdienst antwortet gerade nicht. Das ist vorübergehend - versuche es später erneut. |
1curl "https://app.anymize.ai/api/v1/workspace/nodes/7f2a5e91-0c6d-4b83-8e14-9d3f7a2c6b05/download?format=pdf" \2 -H "Authorization: Bearer YOUR_API_KEY" \3 -o Angebot.pdfLegt eine Kopie einer Datei an. Die Kopie startet bei Revision 1 und trägt keine Fassungen und keine Kommentare des Originals.
/api/v1/workspace/nodes/:id/copyBody
| Parameter | Type | Description |
|---|---|---|
namerequired | string (1-255) | Name der Kopie. Die Endung des Originals wird beibehalten. |
| 400 | NOT_A_FILE | Der Knoten ist ein Ordner; dieser Endpunkt arbeitet nur auf Dateien. |
| 409 | NAME_TAKEN | Im Zielordner gibt es diesen Namen schon. |
Liefert das fertige Vorschaubild. Es wird beim Hochladen erzeugt, nicht beim Abruf - deshalb kommt es sofort.
/api/v1/workspace/nodes/:id/thumbnailResponse: image/webp
| 404 | NO_THUMBNAIL | Es gibt kein Vorschaubild. Das Feld state der Antwort sagt, warum: unsupported für Formate ohne Vorschau, failed nach einem Fehlschlag. |
Liefert eine PowerPoint-Datei als PDF, damit du sie anzeigen kannst, ohne sie herunterzuladen. Das Ergebnis wird je Knoten und Revision zwischengespeichert.
/api/v1/workspace/nodes/:id/previewResponse: application/pdf
| 404 | UNSUPPORTED_TYPE | Nur Präsentationen haben eine solche Vorschau. |
| 503 | PREVIEW_UNAVAILABLE | Die Umwandlung ist fehlgeschlagen. Vorübergehend; das Original kannst du weiterhin herunterladen. |
Legt ein Bild ab, das in einem Dokument stehen soll, und liefert seine Adresse zurück. Erlaubt sind PNG, JPEG, GIF und WebP; geprüft wird an den ersten Bytes, nicht am Namen.
/api/v1/workspace/imagesRequest: multipart/form-data
Body
| Parameter | Type | Description |
|---|---|---|
filerequired | File (png, jpeg, gif, webp) | Das Bild als Formularfeld file. |
{
"url": "/api/v1/workspace/images/9f3c…webp"
}| 415 | UNSUPPORTED_TYPE | Der Inhalt ist kein PNG, JPEG, GIF oder WebP. |
Holt ein Bild von einer https-Adresse und legt es genauso ab wie ein hochgeladenes.
/api/v1/workspace/images/from-urlBody
| Parameter | Type | Description |
|---|---|---|
urlrequired | string (https) | Die Quelladresse. Nur https. |
| 400 | INVALID_URL | Die Adresse ist unbrauchbar oder kein https. |
| 502 | FETCH_FAILED | Die Quelle hat nicht oder mit einem Fehler geantwortet. |
Liefert ein abgelegtes Bild aus. Die Adresse dazu steht in der Antwort des Ablegens.
/api/v1/workspace/images/:nameResponse: image/*
Jedes Schreiben hebt die Vorfassung auf. Du kannst sie auflisten, vergleichen und zurücksetzen.
Die aufgehobenen Fassungen einer Datei, neueste zuerst. Lesen darf, wer die Datei sehen darf.
/api/v1/workspace/versionsQuery
| Parameter | Type | Description |
|---|---|---|
node_idrequired | uuid | Die Datei, um die es geht. |
{
"node_id": "7f2a5e91-0c6d-4b83-8e14-9d3f7a2c6b05",
"current_revision": 5,
"max_versionen": 10,
"versions": [
{
"id": "b41f…",
"revision": 4,
"size_bytes": 51200,
"actor": "user",
"agent_id": null,
"author": {
"id": "9b2e…",
"name": "Nora Berg"
},
"agent": null,
"author_source": "direct",
"pinned": false,
"label": null,
"created_at": "2026-08-24T09: 20: 00.000Z"
}
]
}| 400 | NOT_A_FILE | Der Knoten ist ein Ordner; dieser Endpunkt arbeitet nur auf Dateien. |
Macht eine ältere Fassung wieder zum aktuellen Stand - oder fragt vorher die Person, deren Arbeit dabei aus dem Stand fällt.
/api/v1/workspace/versionsBody
| Parameter | Type | Description |
|---|---|---|
node_idrequired | uuid | Die Datei, um die es geht. |
revisionrequired | integer | Die Fassung, die wieder gelten soll. |
{
"art": "wiederhergestellt",
"revision": 5
}{
"art": "angefragt",
"requestId": "5b1e…"
}| 409 | ALREADY_PENDING | Für diese Datei läuft schon eine Zustimmungsanfrage. |
| 409 | STALE | Jemand war schneller: der Stand hat sich seit deiner Liste geändert. |
approve stimmt zu, reject lehnt ab, override setzt sich darüber hinweg. Die drei enden in verschiedenen Zuständen und lesen sich in einem Prüfbericht verschieden - eine Überschreibung sieht nie aus wie eine Zustimmung. Ob du überschreiben darfst, entscheidet der Server anhand deiner Teamrolle, nicht der Aufruf.
/api/v1/workspace/restore-requests/:idBody
| Parameter | Type | Description |
|---|---|---|
actionrequired | "approve" | "reject" | "override" | Was du entscheidest. |
| 403 | FORBIDDEN | Diese Anfrage geht dich nichts an, oder deine Rolle erlaubt kein Überschreiben. |
| 409 | NOT_PENDING | Die Anfrage ist schon beantwortet. |
Zeigt zeilenweise, was sich zwischen einer Fassung und dem aktuellen Stand geändert hat.
/api/v1/workspace/nodes/:id/diffQuery
| Parameter | Type | Description |
|---|---|---|
revisionrequired | integer | Die Fassung, gegen die verglichen wird. |
| 409 | NO_BASELINE | Zu dieser Revision gibt es keine aufgehobene Fassung. |
| 410 | BLOB_UNAVAILABLE | Die Zeile lebt, das gespeicherte Objekt nicht mehr. Kein Fehler deines Aufrufs; melde die Datei, wenn das häufiger vorkommt. |
| 413 | TOO_LARGE | Die Datei ist für einen Vergleich zu groß. |
| 415 | UNSUPPORTED_FORMAT | Für dieses Format gibt es keinen Vergleich. |
Wer darf was sehen und ändern. Freigaben gelten an Personen und an Teamgruppen.
Alle Freigaben auf diesem Knoten, dazu die Gruppen, die du noch vergeben könntest.
/api/v1/workspace/nodes/:id/shares{
"shares": [
{
"id": "3a7f0c15-8b62-4d09-91ae-6c0f2d84b731",
"kind": "user",
"email": "kollege@firma.de",
"role": "editor",
"source": "manual",
"syncedAt": null
}
],
"pendingShares": [],
"availableGroups": [
{
"id": "b2c9…",
"name": "Vertrieb"
}
],
"isTeamMember": true,
"canManage": true,
"canManageGroups": true,
"role": "owner"
}Gibt einer Person oder einer Teamgruppe Zugriff. Bei kind=user gibst du email an, bei kind=group die groupId.
/api/v1/workspace/nodes/:id/sharesBody
| Parameter | Type | Description |
|---|---|---|
kindrequired | "user" | "group" | Person oder Teamgruppe. |
email | string | Adresse der Person. Nur bei kind=user. |
groupId | uuid | Kennung der Teamgruppe. Nur bei kind=group. |
rolerequired | "viewer" | "editor" | viewer darf lesen, editor darf ändern. |
| 400 | INVALID_ROLE | role muss viewer oder editor sein. |
| 400 | INVALID_KIND | kind muss user oder group sein, und das dazu passende Feld muss gesetzt sein. |
| 403 | FORBIDDEN | Du darfst auf diesem Knoten keine Freigaben verwalten. Gruppen darf außerdem nur der Eigentümer vergeben. |
| 404 | USER_NOT_FOUND | Zu dieser Adresse gibt es kein Konto. Lade die Person erst ein. |
| 409 | MANAGED_BY_SYNC | Diese Freigabe gehört dem Quellsystem und lässt sich hier nicht ändern. |
Nimmt eine einzelne Freigabe zurück.
/api/v1/workspace/nodes/:id/sharesQuery
| Parameter | Type | Description |
|---|---|---|
shareIdrequired | uuid | Die Kennung aus der Liste der Freigaben. |
| 409 | MANAGED_BY_SYNC | Diese Freigabe gehört dem Quellsystem und lässt sich hier nicht ändern. |
Kommentare am Dokument, der Änderungsverlauf, das eigene Postfach und der Agentenriegel.
Alle Kommentar-Stränge einer Datei, jeder mit seinen Nachrichten und seiner Verankerung im Text.
/api/v1/workspace/nodes/:id/comments{
"comments": [
{
"id": "c41f8e07-3b52-4a90-9d16-2c8e5b7a0f43",
"nodeId": "7f2a5e91-0c6d-4b83-8e14-9d3f7a2c6b05",
"status": "open",
"version": 1,
"anchor": {
"revision": 4,
"from": 120,
"to": 168,
"exactQuote": "Umsatz im dritten Quartal",
"prefix": "",
"suffix": ""
},
"author": {
"id": "9b2e…",
"displayName": "Nora Berg"
},
"resolvedBy": null,
"resolvedAt": null,
"createdAt": "2026-08-24T09: 22: 00.000Z",
"updatedAt": "2026-08-24T09: 22: 00.000Z",
"messages": [
{
"id": "m_1",
"body": "Zahl bitte pruefen.",
"isRoot": true,
"author": {
"id": "9b2e…",
"displayName": "Nora Berg"
},
"createdAt": "2026-08-24T09: 22: 00.000Z",
"updatedAt": "2026-08-24T09: 22: 00.000Z"
}
],
"messagesTruncated": false
}
],
"commentsTruncated": false,
"documentRevision": 4,
"portability": "workspace_only"
}Beginnt einen neuen Strang, wahlweise verankert an einer Textstelle.
/api/v1/workspace/nodes/:id/commentsBody
| Parameter | Type | Description |
|---|---|---|
bodyrequired | string (1-…) | Der Text des Kommentars. |
anchorrequired | object | Wo im Dokument der Kommentar hängt. Der Server prüft, ob die Stelle zur Datei passt. |
anchor.revisionrequired | integer | Die Dokumentrevision, auf die sich die Textstelle bezieht. |
anchor.from / torequired | integer | Anfang und Ende der Textstelle. to muss größer als from sein. |
anchor.exactQuoterequired | string | Der zitierte Text selbst, nicht leer. Er dient dem Wiederfinden, wenn sich das Dokument verschiebt. |
anchor.prefix / suffix | string | Text davor und dahinter. Hilft beim Wiederfinden, wenn das Zitat mehrfach vorkommt. |
| 400 | INVALID_BODY | anchor fehlt oder ist unvollständig. Ein Kommentar ohne Textstelle ist im Workspace nicht vorgesehen; das Schema nimmt zudem kein unbekanntes Feld an. |
| 403 | FORBIDDEN | Auf diesem Knoten hast du kein Schreibrecht. |
Ändert Text, Verankerung oder Zustand eines Strangs, etwa um ihn als erledigt zu markieren.
/api/v1/workspace/nodes/:id/comments/:threadIdBody
| Parameter | Type | Description |
|---|---|---|
versionrequired | integer | Der Stand des Strangs, den du gesehen hast. Schützt vor dem Löschen einer zwischenzeitlichen Antwort. |
status | "open" | "resolved" | open oder resolved. Damit hakst du einen Strang ab. |
anchor | object | Wo im Dokument der Kommentar hängt. Der Server prüft, ob die Stelle zur Datei passt. |
body | string | Der Text des Kommentars. |
| 400 | INVALID_BODY | Der Rumpf ändert nichts. Gib mindestens eines von status, anchor oder body an. |
| 404 | COMMENT_NOT_FOUND | Diesen Strang gibt es an dieser Datei nicht. |
| 409 | COMMENT_VERSION_CONFLICT | Jemand hat den Strang zwischenzeitlich geändert. Lies ihn neu und schicke die neue version mit. |
Entfernt einen Strang samt seiner Nachrichten. Antwortet 204 ohne Rumpf.
/api/v1/workspace/nodes/:id/comments/:threadIdQuery
| Parameter | Type | Description |
|---|---|---|
versionrequired | integer | Der Stand des Strangs, den du gesehen hast. Schützt vor dem Löschen einer zwischenzeitlichen Antwort. |
| 400 | INVALID_VERSION | version fehlt in der Abfrage oder ist keine positive Zahl. |
| 409 | COMMENT_VERSION_CONFLICT | Jemand hat den Strang zwischenzeitlich geändert. Lies ihn neu und schicke die neue version mit. |
Hängt eine Nachricht an einen bestehenden Strang.
/api/v1/workspace/nodes/:id/comments/:threadId/messagesBody
| Parameter | Type | Description |
|---|---|---|
versionrequired | integer | Der Stand des Strangs, den du gesehen hast. Schützt vor dem Löschen einer zwischenzeitlichen Antwort. |
bodyrequired | string | Der Text des Kommentars. |
| 409 | COMMENT_VERSION_CONFLICT | Jemand hat den Strang zwischenzeitlich geändert. Lies ihn neu und schicke die neue version mit. |
Bei einer Datei ihre eigene Geschichte, bei einem Ordner die seines Inhalts.
/api/v1/workspace/nodes/:id/activityQuery
| Parameter | Type | Description |
|---|---|---|
limit | integer | Wie viele Einträge höchstens. Der Server deckelt zusätzlich. |
Was dich betrifft: neue Freigaben, Kommentare an dich, Zustimmungsanfragen. Immer das eigene Postfach - die Nutzerkennung kommt aus der Anmeldung, nie aus dem Aufruf.
/api/v1/workspace/inboxQuery
| Parameter | Type | Description |
|---|---|---|
limit | integer | Wie viele Einträge höchstens. |
unread | "1" | Mit 1 nur die ungelesenen. |
Entweder eine Liste von Kennungen oder alles auf einmal. Eines von beiden muss gesetzt sein.
/api/v1/workspace/inboxBody
| Parameter | Type | Description |
|---|---|---|
ids | uuid[] (max 200) | Die Einträge, die abgehakt werden sollen. Höchstens 200. |
all | boolean | Alles abhaken. |
Sagt, ob Agenten diesen Knoten lesen und beschreiben dürfen. Gesetzt wird der Riegel über PATCH auf dem Knoten, und nur vom Eigentümer.
/api/v1/workspace/nodes/:id/agent-lock{
"read": true,
"write": false,
"readGeerbt": true,
"writeGeerbt": false
}Dateien finden und die Startseiten-Ansichten abrufen.
Sucht ohne Rücksicht auf Groß- und Kleinschreibung im Namen aller Knoten, die du sehen darfst. Alle Parameter sind optional und lassen sich kombinieren.
/api/v1/workspace/searchQuery
| Parameter | Type | Description |
|---|---|---|
q | string (max 255) | Der Suchbegriff. Ohne ihn kommen alle sichtbaren Knoten, gefiltert nach den übrigen Angaben. |
kind | "all" | "folder" | "file" | Nur Ordner, nur Dateien oder beides. |
owner | "alle" | "ich" | "andere" | ich beschränkt auf deine eigenen Knoten, andere auf die dir freigegebenen. |
locationId | uuid | Ordner, in dem gesucht wird. |
modifiedFrom | ISO-8601 | Nur Knoten, die seit diesem Zeitpunkt geändert wurden. |
modifiedTo | ISO-8601 | Nur Knoten, die bis zu diesem Zeitpunkt geändert wurden. |
| 400 | INVALID_QUERY | Ein Abfrageparameter fehlt, ist doppelt angegeben oder unlesbar. |
Die Ansichten der Startseite: zuletzt benutzt, mit dir geteilt, markiert, Papierkorb und der Änderungsstrom. home liefert zusätzlich die Ordner.
/api/v1/workspace/overviewQuery
| Parameter | Type | Description |
|---|---|---|
view | "home" | "activity" | "recent" | "shared" | "starred" | "trash" | Welche Ansicht. |
| 400 | INVALID_VIEW | Diese Ansicht gibt es nicht. |
Was hat sich seit dem letzten Abruf geändert? Damit hältst du eine Kopie aktuell, ohne den ganzen Baum abzufragen.
Der Ablauf ist immer derselbe: erster Aufruf ohne cursor, danach mit dem zuletzt erhaltenen. Die Antwort trägt IMMER einen neuen Zeiger, auch wenn nichts kam. Wie er aufgebaut ist, geht dich nichts an - reiche ihn unverändert zurück.
Eine Seite des Änderungsstroms samt dem Zeiger für den nächsten Aufruf.
/api/v1/workspace/deltaQuery
| Parameter | Type | Description |
|---|---|---|
cursor | string | Der Zeiger aus der letzten Antwort. Beim ersten Aufruf weglassen. |
limit | integer | Wie viele Änderungen höchstens je Seite. Der Server deckelt zusätzlich. |
{
"changes": [
{
"id": "3f8a1c47-2e5b-4d90-8a16-7c0e9b4d2f31",
"action": "updated",
"at": "2026-08-24T09: 20: 00.000Z",
"node": {
"id": "7f2a5e91-0c6d-4b83-8e14-9d3f7a2c6b05",
"name": "Q3.xlsx",
"type": "file",
"parent_id": "1c9f6d2a-3b48-4c11-9a7e-2f5b8d0c4e63",
"revision": 4,
"trashed_at": null
},
"actor": {
"user_id": "9b2e…",
"agent_id": null
}
},
{
"id": "5d0c7b22-9a13-4e68-b7f4-3e1a8c0d5629",
"action": "trashed",
"at": "2026-08-24T09: 24: 00.000Z",
"node": {
"id": "1c9f6d2a-3b48-4c11-9a7e-2f5b8d0c4e63",
"name": "Angebote",
"type": "folder",
"parent_id": null,
"revision": null,
"trashed_at": "2026-08-24T09: 24: 00.000Z"
},
"actor": {
"user_id": "9b2e…",
"agent_id": null
}
}
],
"cursor": "eyJ0IjoiMjAyNi0wOC0yNFQwOToyNDowMFoiLCJpIjoiMWM5Zi4uLiJ9",
"has_more": false
}1let cursor = null 2for (;;) {3 const url = new URL("https://app.anymize.ai/api/v1/workspace/delta" )4 if (cursor) url.searchParams.set("cursor" , cursor)5 const page = await fetch(url, {6 headers: { Authorization: `Bearer ${process.env.ANYMIZE_API_KEY}` },7 }).then((r) => r.json())89 // change.action + change.node.* - siehe die Antwortform oben. 10 for (const change of page.changes) apply(change.action, change.node)11 cursor = page.cursor1213 // has_more heisst: sofort weiterfragen. Erst bei false warten. 14 if (!page.has_more) break15}Excel-Arbeitsmappen blattweise lesen, durchsuchen, auswerten und verändern.
Liefert ein Fenster eines Tabellenblatts. Formeln werden nach Möglichkeit lokal ausgewertet; ist das nicht möglich, kommt der zuletzt gespeicherte Wert.
/api/v1/workspace/nodes/:id/sheetQuery
| Parameter | Type | Description |
|---|---|---|
sheet | string | integer | Welches Blatt, als Name oder als Nummer ab 0. Ohne Angabe das erste sichtbare. |
fromRow | integer | Erste Zeile des Fensters, ab 1 gezählt. |
toRow | integer | Letzte Zeile des Fensters. Der Server deckelt die Fenstergröße. |
view | "externalData" | Mit externalData kommt statt der Blattprojektion das Verzeichnis der Fremdbezüge zurück. |
| 400 | XLSX_INVALID_ADDRESS | Eine Zell- oder Bereichsadresse ist unlesbar. |
| 404 | XLSX_SHEET_NOT_FOUND | Dieses Blatt gibt es in der Mappe nicht. |
| 415 | NOT_A_XLSX | Die Datei ist keine Excel-Arbeitsmappe. |
Nimmt eine Liste von Vorgängen entgegen: Zellen schreiben, Zeilen und Spalten einfügen oder löschen, sortieren und importieren, Blätter anlegen oder umbenennen, Regeln setzen, externe Daten trennen. Genau eine der sechs Listen je Aufruf, sonst 400 INVALID_BODY.
/api/v1/workspace/nodes/:id/sheetBody
| Parameter | Type | Description |
|---|---|---|
revisionrequired | integer | Die Revision, auf der deine Änderung aufsetzt. Pflicht bei jedem inhaltlichen Schreiben. |
operations | object[] | Zellvorgänge: Werte, Formeln, Formate. |
structureOperations | object[] | Zeilen und Spalten einfügen, löschen, verbergen, in der Breite ändern. |
dataOperations | object[] | Sortieren, Duplikate entfernen, Text importieren, Text in Spalten teilen. |
sheetOperations | object[] | Blätter anlegen, umbenennen, verschieben, löschen. |
ruleOperations | object[] | Bedingte Formatierung und Pivot-Regeln anlegen, ändern oder entfernen. |
externalDataOperations | object[] | Fremdbezüge der Mappe pflegen. Dasselbe Verzeichnis, das GET mit view=externalData liest. |
| 400 | INVALID_BODY | Der Rumpf passt nicht zum Schema, oder es ist nicht genau eine der sechs Vorgangslisten gesetzt. Zwei Listen auf einmal sind derselbe Fehler wie keine. |
| 400 | FORMULA_TRANSLATION_FAILED | Die Formel ließ sich nicht lesen. Der hint nennt Blatt, Zelle und Stelle. Fast immer steckt eine übersetzte Schreibweise dahinter: Semikolon statt Komma zwischen den Argumenten oder ein Funktionsname in Landessprache. |
| 409 | REVISION_CONFLICT | Jemand hat die Datei zwischenzeitlich geändert. Lies neu, wende deine Änderung auf den neuen Stand an und schicke nochmal. |
| 409 | DATA_VALIDATION_CONFIRMATION_REQUIRED | Die Änderung verletzt eine Gültigkeitsregel der Mappe. Die Antwort listet die Verstöße; wiederhole den Aufruf mit der mitgelieferten Bestätigung, wenn du sie trotzdem willst. |
| 413 | BODY_TOO_LARGE | Der Rumpf überschreitet 8 MiB. Teile den Import in mehrere Aufrufe. |
| 422 | WOULD_OVERWRITE_CELLS | Der Vorgang hätte belegte Zellen überschrieben. Gib ausdrücklich an, dass du das willst, oder wähle einen anderen Bereich. |
Sucht über alle Blätter und ersetzt auf Wunsch. Zum Ersetzen brauchst du Schreibrecht und die aktuelle Revision.
/api/v1/workspace/nodes/:id/sheet/searchLiefert Kennzahlen über einen Bereich, ohne die Mappe zu verändern.
/api/v1/workspace/nodes/:id/sheet/analysisSeitenaufbau, Kopf- und Fußzeilen und die beiden Schreibhilfen.
Format, Ausrichtung und Ränder des Dokuments.
/api/v1/workspace/nodes/:id/docx/page-setupBody
| Parameter | Type | Description |
|---|---|---|
revisionrequired | integer | Die Revision, auf der deine Änderung aufsetzt. Pflicht bei jedem inhaltlichen Schreiben. |
format | "A4" | "Letter" | Seitenformat. |
orientation | "portrait" | "landscape" | Hochformat oder Querformat. |
margins | { top, right, bottom, left } | Ränder in Twips, einzeln setzbar. Ein Twip ist ein Zwanzigstel Punkt. |
| 400 | INVALID_BODY | Der Rumpf enthält keine Änderung. Gib mindestens eines von format, orientation oder margins an. |
| 400 | INVALID_PAGE_SETUP | Die Werte ergeben keinen gültigen Seitenaufbau, etwa weil die Ränder breiter sind als die Seite. |
| 415 | NOT_EDITABLE | Diese Route bearbeitet nur .docx-Dateien, und diese Datei ist keine. Nicht zu verwechseln mit 422 UNSUPPORTED_FEATURE: das ist eine .docx, deren Formatierung wir nicht verlustfrei zurückschreiben können. |
| 422 | UNSUPPORTED_FEATURE | Das Dokument enthält eine Formatierung, die wir nicht verlustfrei zurückschreiben können. Die Antwort nennt sie in features. |
Setzt Kopf- und Fußzeilen des Dokuments, wahlweise getrennt für erste Seite sowie gerade und ungerade Seiten.
/api/v1/workspace/nodes/:id/docx/header-footerBody
| Parameter | Type | Description |
|---|---|---|
revisionrequired | integer | Die Revision, auf der deine Änderung aufsetzt. Pflicht bei jedem inhaltlichen Schreiben. |
header / footer | object | Der neue Inhalt. Weglassen lässt die jeweilige Zeile unverändert. |
| 422 | UNSUPPORTED_FEATURE | Das Dokument enthält eine Formatierung, die wir nicht verlustfrei zurückschreiben können. Die Antwort nennt sie in features. |
Schlägt die nächsten drei bis vier Wörter vor. Passt nichts Naheliegendes, kommt completion: null zurück.
/api/v1/workspace/nodes/:id/completeBody
| Parameter | Type | Description |
|---|---|---|
prefixrequired | string | Der Text unmittelbar vor der Schreibmarke. |
language | "de" | "en" | "fr" | "da" | "es" | "no" | In welcher Sprache geantwortet wird. |
{
"completion": " im dritten Quartal"
}Meldet Rechtschreib- und Grammatikstellen mit Vorschlägen. Namen, Produktnamen, Adressen und Zahlen bleiben unangetastet.
/api/v1/workspace/nodes/:id/proofreadBody
| Parameter | Type | Description |
|---|---|---|
textrequired | string | Der zu prüfende Text. |
language | "de" | "en" | "fr" | "da" | "es" | "no" | In welcher Sprache geantwortet wird. |
{
"spelling": [
{
"word": "Angbot",
"suggestion": "Angebot"
}
],
"grammar": []
}Ein Laufwerk aus einem anderen Ablagesystem einbinden und abgleichen. Unterstützt werden google, microsoft, nextcloud und webdav.
Alle eingebundenen Laufwerke des Kontos samt Abgleichstand.
/api/v1/workspace/mountsBindet einen Ordner eines verbundenen Anbieters als Laufwerk ein. Der Anbieter muss vorher als Konnektor verbunden sein.
/api/v1/workspace/mountsBody
| Parameter | Type | Description |
|---|---|---|
providerrequired | "google" | "microsoft" | "nextcloud" | "webdav" | Der Anbieter des Laufwerks. |
labelrequired | string | Anzeigename des Laufwerks in der Ablage. |
remoteToken | string | Ordnerverweis aus der Dateiauswahl des Anbieters. Ohne Angabe die Wurzel. |
remoteName | string | Name des Ordners beim Anbieter, nur zur Anzeige. |
syncMode | "manual" | "auto" | manual gleicht auf Zuruf ab, auto selbsttätig. |
| 400 | NOT_A_FOLDER | Der Verweis zeigt auf eine Datei, nicht auf einen Ordner. |
| 409 | CONNECTOR_MISSING | Zu diesem Anbieter ist kein Konto verbunden, oder der Zugang ist abgelaufen. Verbinde ihn zuerst in den Einstellungen. |
Ändert Anzeigename, Abgleichart, Zustand oder Rechteübernahme.
/api/v1/workspace/mounts/:idBody
| Parameter | Type | Description |
|---|---|---|
label | string | Anzeigename des Laufwerks in der Ablage. |
syncMode | "manual" | "auto" | manual gleicht auf Zuruf ab, auto selbsttätig. |
status | "idle" | "paused" | paused hält den Abgleich an, idle nimmt ihn wieder auf. |
syncPermissions | boolean | Berechtigungen mit übernehmen. Abschalten entfernt die bereits übernommenen Freigaben dieses Laufwerks. |
Löst die Einbindung. Beim Anbieter selbst wird nichts gelöscht.
/api/v1/workspace/mounts/:idGleicht das Laufwerk jetzt ab und meldet, was dabei herauskam.
/api/v1/workspace/mounts/:id/sync{
"success": true,
"imported": 42,
"skipped": 3,
"folders": 7,
"permissions": {
"granted": 12,
"unchanged": 30,
"revoked": 1,
"pending": 2,
"skipped": 4
},
"permissionsTruncated": false,
"filesTruncated": false
}| 409 | BUSY | Für dieses Laufwerk läuft schon ein Abgleich. |
| 409 | CONNECTOR_MISSING | Zu diesem Anbieter ist kein Konto verbunden, oder der Zugang ist abgelaufen. Verbinde ihn zuerst in den Einstellungen. |
Dieselbe API, dieselbe Doku - für Assistenten statt für deinen Code. Ein MCP-fähiger Client (Claude, Cursor, ein eigener Agent) bekommt hier Werkzeuge für die Doku, für deine Dateien und für deine Workflows.
Dreizehn Werkzeuge in drei Gruppen. docs_list, docs_search und docs_get schlagen in dieser Doku nach. workspace_list, workspace_resolve_path, workspace_search, workspace_read_file, workspace_write_file, workspace_manage und workspace_changes arbeiten auf deinen Dateien. workflows_list, workflows_get und workflows_run steuern deine Workflows.
1{2 "mcpServers" : {3 "anymize" : {4 "type" : "http" ,5 "url" : "https://app.anymize.ai/api/mcp/anymize" ,6 "headers" : {7 "Authorization" : "Bearer YOUR_API_KEY" 8 }9 }10 }11}Dieselbe API, dieselbe Doku - für Assistenten statt für deinen Code. Ein MCP-fähiger Client (Claude, Cursor, ein eigener Agent) bekommt hier Werkzeuge für die Doku, für deine Dateien und für deine Workflows.
/api/mcp/anymizeRequest: application/json·Response: application/json
Was ein Konto darf, wie schnell du fragen darfst, und wie Fehler aussehen.
| Parameter | Type | Description |
|---|---|---|
maxBytesPerUser | 2 GiB | Speicher je Konto. Papierkorb und aufgehobene Fassungen zählen mit. |
maxFiles | 5000 | Anzahl Dateien je Konto. |
maxFileSizeBytes | 50 MiB | Größe einer einzelnen Datei. |
Wie viel Platz das Konto belegt und wie viele Dateien es hat.
/api/v1/workspace/usage{
"bytesUsed": 184320119,
"maxBytes": 2147483648,
"fileCount": 312,
"maxFiles": 5000
}