API-Referenz
Mit der REST-API liest du Spulen, Slots, Drucke, Wartung und Statistik deines eigenen Kontos und änderst sie. Alles kommt als JSON, nur der Tabellen-Link als CSV. Zahlungs- und Kundendaten liefert sie nicht, und Drucker lässt sie nicht steuern.
Auf dieser Seite
Basis-URL und Anmeldung
Jede Anfrage geht an die Basis-URL und trägt einen Schlüssel im Kopf. Wie du ihn anlegst, steht unter Schlüssel und Anmeldung.
Die Beispiele lesen den Schlüssel aus der Umgebungsvariable SPOOLY_.
https://spooly.eu/api/v1Authorization: Bearer spk_dein_schluesselFormate
- Anfragen und Antworten sind JSON in UTF-8.
- Zeitpunkte kommen als ISO 8601 in UTC, zum Beispiel
2026-10-30T14:02:00Z. - Gewichte sind in Gramm, Geld in der Währung des Kontos (
currencyausGET /).me - Kennungen sind Zeichenketten. Lies nichts aus ihrem Aufbau heraus, er unterscheidet sich je Sache.
- Fehlt ein Wert, steht
nullda.
Seitenweise Listen
Spulen, Drucke und der Wartungsverlauf kommen seitenweise. total nennt die Gesamtzahl. Erhöh offset um limit, bis du total erreichst.
curl "https://spooly.eu/api/v1/spools?limit=100&offset=100" \
-H "Authorization: Bearer $SPOOLY_KEY"{
"items": [
"…"
],
"total": 230,
"limit": 100,
"offset": 100
}Antwort auf Änderungen
Jede Änderung antwortet im selben Format. change_ ist ihr Eintrag in der Änderungsliste der Verbindung, summary ein Satz für Menschen. Dazu kommt, was sich geändert hat: spool, slot, task oder printer, beim Gewicht old_ und new_.
Zurücknehmen kannst du Gewicht, Slots und erledigte Wartung in der App, über die API geht das nicht.
{
"change_id": 381,
"spool": {
"id": "7f3c2a10-5e1b-4c8e-9a44-2d6b1f0c7e21",
"number": 1,
"title": "Jade White",
"name": null,
"manufacturer": "Bambu Lab",
"material": "PLA Matte",
"finish": "matt",
"color_hex": "#E8E9DF",
"color_name": "Jade White",
"remaining_grams": 300,
"spool_size_grams": 1000,
"empty_spool_grams": 250,
"fill_level": "low",
"location": "Schrank 01 · Fach vorne · Platz 3",
"location_id": "loc_3c9b7e1a5d60",
"place": 3,
"archived": false,
"price": 19.99,
"notes": null
},
"slot": null,
"old_grams": 342,
"new_grams": 300,
"replayed": false,
"task": null,
"printer": null,
"stock_empty": null,
"summary": "Spule #1 Jade White: 342 auf 300 g"
}Idempotency-Key
Schick bei jeder Änderung einen eigenen Idempotency-Key mit, wenn dein Programm nach einem Abbruch wiederholt. Derselbe Schlüssel mit demselben Inhalt läuft nur einmal. Die Antwort des ersten Aufrufs kommt dann noch einmal, mit replayed auf true.
Derselbe Schlüssel mit anderem Inhalt ergibt 422 idempotency_. Nimm deshalb je Änderung einen neuen Key, zum Beispiel eine UUID. Erlaubt sind 1 bis 128 sichtbare ASCII-Zeichen.
curl -X POST "https://spooly.eu/api/v1/spools/7f3c2a10-5e1b-4c8e-9a44-2d6b1f0c7e21/weight" \
-H "Authorization: Bearer $SPOOLY_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: 9e3c7a52-1d48-4b6f-8e0a-52f7b3c1d96e" \
-d '{"gross_grams":742}'OpenAPI-Schema
Das Schema beschreibt alle Endpunkte, Parameter und Antworten maschinenlesbar. Damit erzeugst du einen Client für deine Sprache oder gibst deiner KI die genaue Beschreibung.
/
Was die API nicht liefert
- Kunden- und Firmendaten aus Aufträgen.
- Zugangsdaten zu Druckern und Konten.
- Zahlungsdaten.
- Endgültiges Löschen. Archivieren und Zurückholen gehen.
- Drucker steuern.
- Dein Konto und dein Abo.
Antworten enthalten nur Felder aus einer festen Liste. Eine neue Spalte in der Datenbank erscheint nie von selbst in der API. Für KI-Assistenten gibt es dieselben Daten über MCP.