Die Schnittstelle
Alles, was die Oberfläche kann, geht auch von außen: Boards lesen, Aufgaben anlegen und ändern, kommentieren, Dateien ablegen. Damit hängt die ProjectCloud an n8n, Zapier, Make, an eigenen Skripten — und an KI-Systemen wie Claude oder ChatGPT, die Aufgaben als Werkzeug anlegen können.
Anmelden mit einem Zugangsschlüssel
Einen Schlüssel erzeugst du in der ProjectCloud unter Profil → API-Zugang. Er sieht so aus: pc_ gefolgt von 40 Zeichen, und wird genau einmal angezeigt. Es gibt zwei Arten: lesen und schreiben und nur lesen. Der Schlüssel handelt in deinem Namen — er sieht genau die Boards, die du siehst, und darf genau das, was du darfst.
Authorization: Bearer pc_…
Die Adresse ist immer dieselbe Datei, der Endpunkt steht im Parameter do:
https://projectcloud.dcyphr.ai/api.php?do=endpunkt
- Lesende Aufrufe sind
GET, schreibendePOSTmitContent-Type: application/json. - Antworten sind JSON. Bei einem Fehler kommt
{"error": "…"}mit passendem Statuscode (401 nicht angemeldet, 403 kein Zugriff, 404 nicht gefunden, 429 zu viele Anfragen). - Je Schlüssel sind 600 Aufrufe in fünf Minuten erlaubt.
- Ein Schlüssel kann weder andere Schlüssel verwalten noch das Profil oder die Zwei-Faktor-Einstellungen ändern.
Endpunkte
| Endpunkt | Was er tut | Parameter |
|---|---|---|
GETme | Wer bin ich, welcher Schlüssel | — |
GETboards | Alle Boards, zu denen ich gehöre | — |
GETboard | Ein Board vollständig: Spalten, Mitglieder, Tags, Sprints, Karten | board |
GETtasks | Flache Aufgabenliste eines Boards — die einfachste Form für Automatisierung | board, optional state = aktiv | archiv | papierkorb | alle |
POSTtask.create | Aufgabe anlegen | board, title; optional status, prio (normal | hoch | kritisch), area, due, plan (JJJJ-MM-TT), owner_email oder owner_uid, tags (Namen oder Nummern), note, parent |
POSTtask.update | Aufgabe ändern — nur die mitgeschickten Felder | board, id, dazu beliebige Felder wie bei task.create, außerdem done |
POSTtask.state | Archivieren, in den Papierkorb, zurückholen | board, id, state = aktiv | archiv | papierkorb |
GETcard | Kommentare und Anhänge einer Aufgabe | board, task |
POSTcomment.add | Kommentar schreiben | board, task, text |
GETablage | Ordner und Dateien der Cloud | board |
POSTupload | Datei hochladen — an eine Aufgabe oder in die Cloud (multipart/form-data, bis 30 MB) | board, file; optional task (sonst Cloud), folder, name, note |
GETdatei.php?f= | Datei herunterladen | f = Dateinummer |
Die übrigen Endpunkte der Oberfläche (Tags, Sprints, Spalten, Kalender, Export) stehen ebenfalls offen; ihre Parameter entsprechen dem, was board zurückgibt.
Beispiele
Aufgaben eines Boards lesen
curl -H "Authorization: Bearer pc_…" \
"https://projectcloud.dcyphr.ai/api.php?do=tasks&board=1"
{ "board": 1, "tasks": [
{ "id": "t1_a11574", "ref": "PLQ-MAR-MW-1", "no": 1, "title": "Landingpage Launch-Version",
"status": "aktiv", "status_name": "In Arbeit", "done": false, "prio": "hoch",
"area": "Marketing", "owner": "Matthias Walenda", "owner_uid": 1,
"due": "2026-09-18", "plan": "2026-09-15", "tags": ["Marketing"], "note": "",
"parent": "", "state": "aktiv", "updated_at": 1789291226, "updated_by": "Matthias Walenda" } ] }
Aufgabe anlegen
curl -X POST -H "Authorization: Bearer pc_…" -H "Content-Type: application/json" \
-d '{"board":1,"title":"Angebot nachfassen","prio":"hoch","due":"2026-09-30",
"owner_email":"rena@firma.de","tags":["Vertrieb"],"note":"Kam aus dem CRM."}' \
"https://projectcloud.dcyphr.ai/api.php?do=task.create"
{ "ok": true, "no": 10, "ref": "PLQ-ALL-MW-10", "id": "tabf53aca0b" }
Aufgabe in eine andere Spalte setzen
curl -X POST -H "Authorization: Bearer pc_…" -H "Content-Type: application/json" \
-d '{"board":1,"id":"tabf53aca0b","status":"fertig"}' \
"https://projectcloud.dcyphr.ai/api.php?do=task.update"
Die Spaltenschlüssel (status) liefert board unter columns; in einem neuen Board heißen sie offen, aktiv, freigabe, fertig.
Datei in die Cloud legen
curl -X POST -H "Authorization: Bearer pc_…" \
-F board=1 -F folder=0 -F name="Rahmenvertrag 2026" -F file=@vertrag.pdf \
"https://projectcloud.dcyphr.ai/api.php?do=upload"
n8n, Zapier, Make
In allen dreien reicht der Baustein HTTP Request (n8n), Webhooks by Zapier oder HTTP → Make a request:
- Methode
POST, URLhttps://projectcloud.dcyphr.ai/api.php?do=task.create - Kopfzeile
Authorization=Bearer pc_… - Body als JSON mit
boardundtitle, der Rest nach Bedarf
Typische Ketten: Eine Mail mit Betreff „Auftrag“ landet als Karte im Vertriebsboard. Ein Formular auf der Website legt eine Aufgabe mit Frist an. Jeden Montag holt ein Ablauf alle offenen Aufgaben und schickt eine Zusammenfassung in den Chat.
KI-Systeme: Claude, ChatGPT, eigene Agenten
Ein KI-Agent bekommt die Endpunkte als Werkzeug beschrieben. So kann er auf „Leg im Launch-Board eine Aufgabe für Rena an, Frist Freitag“ tatsächlich handeln. Beispiel für eine Werkzeugdefinition, wie sie Claude und die OpenAI-API verstehen:
{
"name": "projectcloud_task_create",
"description": "Legt eine Aufgabe in einem ProjectCloud-Board an.",
"input_schema": {
"type": "object",
"properties": {
"board": { "type": "integer", "description": "Nummer des Boards (aus do=boards)" },
"title": { "type": "string" },
"prio": { "type": "string", "enum": ["normal", "hoch", "kritisch"] },
"due": { "type": "string", "description": "Frist als JJJJ-MM-TT" },
"owner_email": { "type": "string" },
"note": { "type": "string" }
},
"required": ["board", "title"]
}
}
Der Agent ruft dann mit dem Ergebnis POST …?do=task.create auf — mit deinem Schlüssel, in deinem Namen, mit deinen Rechten.
Sicherheit
- Schlüssel werden nur als Hash gespeichert. Verlorener Schlüssel: im Profil widerrufen, neuen erzeugen.
- Ein Schlüssel hat nie mehr Rechte als die Person, der er gehört. Boards, zu denen du nicht gehörst, bleiben unsichtbar.
- Nur über HTTPS. Über HTTP wird umgeleitet, der Schlüssel darf nie in einer URL stehen — immer in der Kopfzeile.
- Alle Eingaben werden geprüft; Notizen und Kommentare laufen durch denselben Filter wie in der Oberfläche.
Fragen oder ein Anwendungsfall, der hier fehlt? hello@dcyphr.io