Werkzeugkisterl API

v1OpenAPI 3.1

Einzelne Werkzeuge als Schnittstelle für Shells, Skripte und Programme. Kostenlos, ohne Anmeldung.

https://werkzeugkisterl.at/api/v1openapi.json

Sendet Daten

Gesendet
Die Parameter deiner Anfrage. Sende deshalb nichts Vertrauliches.
Zweck
Der Server berechnet daraus das Ergebnis und schickt es zurück.
Gespeichert
Nichts. Im Zugriffsprotokoll stehen nur der aufgerufene Endpunkt und die gekürzte IP-Adresse, nicht die Parameter.
Methode
Nur GET
Format
JSON, UTF-8; Bilder als SVG/PNG
Anmeldung
Keine
Limit
30 Anfragen/Minute je IP

Zeit

GET/api/v1/timestampZeitstempel umrechnen

Wandelt einen Unix-Zeitstempel in ein Datum um oder ein Datum in einen Zeitstempel. Ohne Parameter kommt die aktuelle Zeit zurück.

Dasselbe im Browser, ohne Übertragung an den Server: Zeitstempel-Konverter

Parameter

  • string · query · optional

    Zeitstempel, der umgerechnet werden soll. Nicht zusammen mit „date“.

  • string · query · optional

    Einheit von „value“. Vorgabe ist auto: Die Einheit wird an der Stellenzahl erkannt.

    Erlaubt: auto, s, ms, us, ns

  • string · query · optional

    Datum mit Uhrzeit und Zeitzone nach ISO 8601. Nicht zusammen mit „value“.

  • string · query · optional

    Zeitzone (IANA-Name), in der das Ergebnis zusätzlich ausgegeben wird.

Ausprobieren

Beispiele einsetzen:
curl "https://werkzeugkisterl.at/api/v1/timestamp"

Antworten

200Erfolgreich

FeldTypBedeutung
secondsintegerSekunden seit dem 1. Jänner 1970 (UTC).
millisecondsintegerDasselbe in Millisekunden.
utcstringZeitpunkt nach ISO 8601 in UTC.
unitstringNur mit „value“: die Einheit, in der die Zahl gelesen wurde.
localstringNur mit „tz“: Zeitpunkt nach ISO 8601 in dieser Zeitzone, mit Abstand zu UTC.
zonestringNur mit „tz“: die verwendete Zeitzone.

Zeitstempel in ein Datum, zusätzlich in Wiener Ortszeit: GET /api/v1/timestamp?value=1700000000&tz=Europe/Vienna

{
  "seconds": 1700000000,
  "milliseconds": 1700000000000,
  "utc": "2023-11-14T22:13:20.000Z",
  "unit": "s",
  "local": "2023-11-14T23:13:20+01:00",
  "zone": "Europe/Vienna"
}

Datum in einen Zeitstempel: GET /api/v1/timestamp?date=2026-10-10T15:30:00%2B02:00

{
  "seconds": 1791639000,
  "milliseconds": 1791639000000,
  "utc": "2026-10-10T13:30:00.000Z"
}

Fehler dieses Endpunkts

  • 400invalid_value „value“ ist keine Zahl.
  • 400invalid_unit „unit“ ist unbekannt oder ohne „value“ angegeben.
  • 400invalid_date „date“ ist kein gültiges Datum mit Zeitzone.
  • 400invalid_tz „tz“ ist keine bekannte Zeitzone.
  • 400conflicting_parameters „value“ und „date“ wurden gemeinsam angegeben.
  • 400out_of_range Der Zeitpunkt liegt außerhalb der Jahre 1 bis 9999.

Dazu kommen die allgemeinen Fehler, die für alle Endpunkte gelten.

Netzwerk

GET/api/v1/ipEigene IP-Adresse

Gibt die öffentliche IP-Adresse zurück, von der die Anfrage kam. Andere Adressen lassen sich damit nicht abfragen.

Dasselbe als Seite im Browser: Meine IP-Adresse

Parameter

  • string · query · optional

    Form der Antwort. Vorgabe ist json; mit text kommt nur die Adresse zurück, praktisch für Skripte.

    Erlaubt: json, text

Ausprobieren

Beispiele einsetzen:
curl "https://werkzeugkisterl.at/api/v1/ip"

Antworten

200Erfolgreich

FeldTypBedeutung
ipstringIP-Adresse, unter der unser Server die Anfrage sieht.
versioninteger4 für IPv4, 6 für IPv6.

Eigene Adresse als JSON: GET /api/v1/ip

{
  "ip": "203.0.113.42",
  "version": 4
}

Als reiner Text: GET /api/v1/ip?format=text

203.0.113.42

Fehler dieses Endpunkts

  • 400invalid_format „format“ ist weder json noch text.
  • 500address_unavailable Die Adresse konnte nicht ermittelt werden.

Dazu kommen die allgemeinen Fehler, die für alle Endpunkte gelten.

Codes

GET/api/v1/qrQR-Code erzeugen

Erzeugt aus einem Text oder Link einen QR-Code als Bild. Der Inhalt steht direkt im Code: ohne Umleitung, ohne Ablaufdatum. Sende nichts Vertrauliches wie WLAN-Passwörter; dafür gibt es das Werkzeug im Browser.

Dasselbe im Browser, ohne Übertragung an den Server: QR-Code-Generator

Parameter

  • string · query · Pflicht

    Inhalt des QR-Codes, URL-kodiert. Höchstens 858 Bytes in UTF-8 mit ecc=L, 666 mit M, 482 mit Q und 382 mit H.

  • string · query · optional

    Bildformat. Vorgabe ist svg.

    Erlaubt: svg, png

  • integer · query · optional

    Kantenlänge in Pixeln, 100 bis 1000. Vorgabe ist 300.

  • string · query · optional

    Fehlerkorrektur von L (niedrig) bis H (hoch). Vorgabe ist M. Mehr Fehlerkorrektur macht den Code robuster, aber dichter.

    Erlaubt: L, M, Q, H

  • integer · query · optional

    Heller Rand in Modulen, 0 bis 10. Vorgabe ist 4, wie für sicheres Scannen empfohlen.

Ausprobieren

Beispiele einsetzen:
curl "https://werkzeugkisterl.at/api/v1/qr" --output qr.svg

Antworten

200Erfolgreich

Die Antwort ist das Bild selbst, schwarz auf weiß. Ein PNG ist genau „size“ Pixel groß; jedes Modul belegt ganze Pixel, damit die Kanten scharf bleiben. Reicht „size“ für den Inhalt nicht aus, wird das PNG so groß wie nötig. Fehler kommen wie überall als JSON.

Content-Type: image/svg+xml, image/png

Link als SVG: GET /api/v1/qr?text=https%3A%2F%2Fwerkzeugkisterl.at

Text als PNG mit 600 Pixeln: GET /api/v1/qr?text=Gr%C3%BC%C3%9F%20Gott&format=png&size=600

Fehler dieses Endpunkts

  • 400missing_text „text“ fehlt oder ist leer.
  • 400text_too_long „text“ passt bei dieser Fehlerkorrektur nicht in einen QR-Code.
  • 400invalid_format „format“ ist weder svg noch png.
  • 400invalid_size „size“ ist keine ganze Zahl von 100 bis 1000.
  • 400invalid_ecc „ecc“ ist nicht L, M, Q oder H.
  • 400invalid_margin „margin“ ist keine ganze Zahl von 0 bis 10.

Dazu kommen die allgemeinen Fehler, die für alle Endpunkte gelten.

Fehler

Jede Fehlerantwort hat dieselbe Form. code bleibt innerhalb einer Version gleich und eignet sich für Programme, message ist für Menschen gedacht und kann sich ändern.

{
  "error": {
    "code": "invalid_value",
    "message": "„value“ muss ein Zeitstempel aus Ziffern sein, zum Beispiel 1700000000."
  }
}
StatusCodeBedeutung
400unknown_parameterEin Parameter ist unbekannt, meist ein Tippfehler.
400invalid_parameterEin Parameter kommt doppelt vor oder ist zu lang.
403forbidden_originDie Anfrage kam aus dem Browser von einer anderen Website.
404not_foundDiesen Endpunkt gibt es nicht.
405method_not_allowedEs sind nur GET-Anfragen möglich.
429rate_limitedZu viele Anfragen in kurzer Zeit.

Gut zu wissen

  • Limit: 30 Anfragen pro Minute und IP-Adresse, gleichmäßig verteilt: dauerhaft etwa eine Anfrage alle zwei Sekunden, dazu ein Puffer für rund zehn Anfragen in schneller Folge. Darüber antwortet die API mit 429 und nennt im Kopf Retry-After die Wartezeit in Sekunden; danach geht es sofort weiter.
  • Browser: Von anderen Websites aus lässt sich die API im Browser nicht aufrufen. Sie ist für Shells, Skripte und Server gedacht.
  • Versionen: Innerhalb von v1 können Felder und Endpunkte dazukommen, bestehende werden nicht umbenannt oder entfernt. Ignoriere unbekannte Felder; größere Änderungen erscheinen unter einer neuen Version.
  • Werkzeuge: Die Datei openapi.json lässt sich in Programme wie Postman oder Insomnia importieren. Eine kurze Übersicht liefert GET /api/v1.
  • Sonderzeichen: Werte mit Leerzeichen, Umlauten oder Zeichen wie & und + müssen URL-kodiert sein. curl erledigt das mit curl -G --data-urlencode "text=Grüß Gott" …
  • PowerShell: Schreibe dort curl.exe statt curl, sonst startet ein anderes Programm mit Sicherheitsabfrage.
  • Verfügbarkeit: Kostenlos und ohne Zusage. Baue die API nicht dort ein, wo ein Ausfall Schaden anrichtet.

Mehr dazu in den Nutzungshinweisen und in der Datenschutzerklärung.