Dokumentation
Basis-URL : https://supercalcula.ch/api
In fünf Minuten starten
- 1
Erstellen Sie ein kostenloses Konto und bestätigen Sie Ihre E-Mail-Adresse. Konto erstellen
- 2
Kopieren Sie Ihren API-Schlüssel unter Mein Konto → API-Schlüssel. Er wird nur einmal angezeigt.
- 3
Testen Sie ihn mit dem folgenden Befehl.
- 4
Rufen Sie die gewünschte API mit den Beispielen auf dieser Seite auf.
curl https://supercalcula.ch/api/v1/ping \
-H "Authorization: Bearer sk_live_…"
# {"ok":true,"data":{"pong":true,"key":"sk_live_a1b2…9f3e"}}Zwei kostenlose Endpoints: GET /v1/ping (testet einen Schlüssel) und GET /v1/me (Angebot, verbleibendes Kontingent und Guthaben). openapi.yaml
Authentifizierung
Jede Anfrage trägt den Header Authorization: Bearer <Schlüssel>. Schlüssel mit dem Präfix sk_test_ liefern Scheinergebnisse, ohne Kontingent zu verbrauchen (der Header X-Test-Mode: true zeigt es an); die Validierungen sind dieselben wie bei einem Produktionsschlüssel.
Fehler und Kontingente
Fehler kommen als JSON mit stabilem Code und einer englischen Meldung. Die Header X-Quota-Remaining, X-Credits-Remaining und X-RateLimit-Remaining stehen in jeder Antwort.
{ "ok": false, "error": { "code": "quota_exceeded", "message": "Monthly quota exhausted" } }| Code | HTTP | Bedeutung |
|---|---|---|
| invalid_api_key | 401 | Schlüssel fehlt, ist unbekannt oder falsch aufgebaut. |
| key_revoked | 401 | Schlüssel widerrufen: Erstellen Sie in Ihrem Konto einen neuen. |
| account_suspended | 403 | Konto gesperrt: Wenden Sie sich an den Support. |
| invalid_input | 400 | Fehlender oder ungültiger Parameter (bei Konvertierungen nennt line die fehlerhafte Zeile). |
| payload_too_large | 413 | Anfrage grösser als das Limit des Angebots (1 MB bei Free, danach 10 MB). |
| quota_exceeded | 429 | Monatskontingent und Guthaben aufgebraucht. |
| rate_limited | 429 | Zu viele Aufrufe pro Minute; siehe Header Retry-After. |
| internal_error | 500 | Fehler auf unserer Seite oder externe Quelle nicht verfügbar: kostet nichts, versuchen Sie es erneut. |
Guthaben und Kontingente
Eine erfolgreiche Anfrage kostet die Anzahl Guthaben des Endpoints (1 bei den Endpoints der ersten Welle). Ein 4xx-Fehler, der auf Ihre Anfrage zurückgeht, kostet 1 Guthaben; die Fehler 401, 429 und 5xx kosten nichts. Das Monatskontingent wird zuerst verbraucht, danach das gekaufte Guthaben.
Endpoint-Referenz
/v1/qr
Kosten: 1 GuthabenErzeugt einen QR-Code oder einen Strichcode als PNG oder SVG.
Parameter (JSON-Inhalt)
| Name | Typ | Pflicht | Standard | Beschreibung |
|---|---|---|---|---|
| content | string | ja | https://supercalcula.ch | Zu kodierender Text, URL oder vCard (höchstens 2 953 Zeichen). |
| type | string qr | ean13 | code128 | nein | qr | qr (Standard), ean13 (12 oder 13 Ziffern, die Prüfziffer wird kontrolliert) oder code128 (druckbares ASCII). |
| format | string png | svg | nein | png | png (Standard) oder svg. |
| size | integer | nein | 512 | Breite in Pixeln, 64 bis 2 048 (Standard 512). |
| margin | integer | nein | 2 | Weisser Rand in Modulen, 0 bis 20 (Standard 2). |
| color | string | nein | #000000 | Farbe des Codes im Format #rrggbb. |
| background | string | nein | #ffffff | Hintergrundfarbe im Format #rrggbb. |
| error_correction | string L | M | Q | H | nein | M | Stufe der Fehlerkorrektur: L, M (Standard), Q oder H. |
| logo_url | string | nein | — | Zentriertes Logo (nur https, höchstens 500 KB). Erzwingt error_correction=H. SVG-Logos werden nur mit format=svg akzeptiert. |
| encoding | string binary | base64 | nein | binary | binary (Standard: das Bild selbst) oder base64 (JSON mit dem Bild). |
Beispiel
curl -X POST https://supercalcula.ch/api/v1/qr \
-H "Authorization: Bearer sk_live_…" \
-H "Content-Type: application/json" \
-d '{"content":"https://supercalcula.ch","size":512}' --output qr.png
const res = await fetch("https://supercalcula.ch/api/v1/qr", {
method: "POST",
headers: { Authorization: "Bearer sk_live_…", "Content-Type": "application/json" },
body: JSON.stringify({
"content": "https://supercalcula.ch",
"size": 512
}),
});
const blob = await res.blob();
import requests
r = requests.post("https://supercalcula.ch/api/v1/qr",
headers={"Authorization": "Bearer sk_live_…"},
json={"content":"https://supercalcula.ch","size":512})
open("qr.png", "wb").write(r.content)
$ch = curl_init("https://supercalcula.ch/api/v1/qr");
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => ["Authorization: Bearer sk_live_…", "Content-Type: application/json"],
CURLOPT_POSTFIELDS => json_encode(["content" => "https://supercalcula.ch", "size" => 512]),
CURLOPT_RETURNTRANSFER => true,
]);
file_put_contents("qr.png", curl_exec($ch));
Die Antwort ist das Bild selbst (PNG oder SVG); mit encoding=base64 ein JSON mit dem Bild.
Mit Ihrem Schlüssel ausprobieren
Fügen Sie einen API-Schlüssel ein (am besten sk_test_: Testergebnisse, kein Guthaben verbraucht). Er bleibt auf dieser Seite: Er wird weder gespeichert noch an andere Stellen als die API gesendet. Mit einem sk_live_-Schlüssel verbraucht der Aufruf Ihre Credits.
/v1/email/verify
Kosten: 1 GuthabenPrüft eine E-Mail-Adresse ohne SMTP-Verbindung: Syntax, DNS, MX, Wegwerfadresse, Funktionsadresse, wahrscheinlicher Tippfehler.
Parameter (URL-Parameter)
| Name | Typ | Pflicht | Standard | Beschreibung |
|---|---|---|---|---|
| string | ja | jean.dupont@gmial.com | Zu prüfende Adresse (höchstens 254 Zeichen). |
Beispiel
curl "https://supercalcula.ch/api/v1/email/verify?email=jean.dupont%40gmial.com" \
-H "Authorization: Bearer sk_live_…"
const res = await fetch("https://supercalcula.ch/api/v1/email/verify?email=jean.dupont%40gmial.com", {
headers: { Authorization: "Bearer sk_live_…" },
});
console.log(await res.json());
import requests
r = requests.get("https://supercalcula.ch/api/v1/email/verify",
params={"email":"jean.dupont@gmial.com"},
headers={"Authorization": "Bearer sk_live_…"})
print(r.json())
$ch = curl_init("https://supercalcula.ch/api/v1/email/verify?email=jean.dupont%40gmial.com");
curl_setopt_array($ch, [
CURLOPT_HTTPHEADER => ["Authorization: Bearer sk_live_…"],
CURLOPT_RETURNTRANSFER => true,
]);
$result = json_decode(curl_exec($ch), true);
Antwort
{
"ok": true,
"data": {
"email": "jean.dupont@gmial.com",
"normalized": "jean.dupont@gmial.com",
"syntax_valid": true,
"domain_exists": true,
"has_mx": false,
"disposable": false,
"role_account": false,
"free_provider": false,
"suggestion": "jean.dupont@gmail.com",
"score": 0.05,
"verdict": "invalid"
}
}Mit Ihrem Schlüssel ausprobieren
Fügen Sie einen API-Schlüssel ein (am besten sk_test_: Testergebnisse, kein Guthaben verbraucht). Er bleibt auf dieser Seite: Er wird weder gespeichert noch an andere Stellen als die API gesendet. Mit einem sk_live_-Schlüssel verbraucht der Aufruf Ihre Credits.
/v1/convert
Kosten: 1 GuthabenKonvertiert ein Dokument zwischen JSON, CSV, XML und YAML. Variante: das Rohdokument mit ?from=csv&to=json als URL-Parametern senden; die Antwort ist dann das konvertierte Dokument.
Parameter (JSON-Inhalt)
| Name | Typ | Pflicht | Standard | Beschreibung |
|---|---|---|---|---|
| from | string json | csv | xml | yaml | ja | csv | Quellformat: json, csv, xml oder yaml. |
| to | string json | csv | xml | yaml | ja | json | Zielformat: json, csv, xml oder yaml. |
| data | string | ja | … | Quelldokument als Text. |
| options.delimiter | string | nein | , | CSV: Spaltentrenner (Standard Komma; «tab», «semicolon» und «pipe» werden akzeptiert). |
| options.header | boolean | nein | true | CSV: Die erste Zeile enthält die Spaltenköpfe (Standard true). |
| options.root | string | nein | root | XML: Name des Wurzelelements (Standard root). |
| options.pretty | boolean | nein | true | JSON und XML: eingerückte Ausgabe (Standard true). |
| options.infer_types | boolean | nein | false | Wandelt «12», «true» oder «3.5» in Zahlen und Wahrheitswerte um (Standard false). |
| options.escape_formulas | boolean | nein | true | CSV: setzt Zellen, die mit = + - @ beginnen, ein Apostroph voran, um Tabellenformeln zu entschärfen (Standard true). |
Beispiel
curl -X POST https://supercalcula.ch/api/v1/convert \
-H "Authorization: Bearer sk_live_…" \
-H "Content-Type: application/json" \
-d '{"from":"csv","to":"json","data":"name,city\nAlexandre,Genève"}'
const res = await fetch("https://supercalcula.ch/api/v1/convert", {
method: "POST",
headers: { Authorization: "Bearer sk_live_…", "Content-Type": "application/json" },
body: JSON.stringify({
"from": "csv",
"to": "json",
"data": "name,city\nAlexandre,Genève"
}),
});
const data = await res.json();
import requests
r = requests.post("https://supercalcula.ch/api/v1/convert",
headers={"Authorization": "Bearer sk_live_…"},
json={"from":"csv","to":"json","data":"name,city\nAlexandre,Genève"})
print(r.json())
$ch = curl_init("https://supercalcula.ch/api/v1/convert");
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => ["Authorization: Bearer sk_live_…", "Content-Type: application/json"],
CURLOPT_POSTFIELDS => json_encode(["from" => "csv", "to" => "json", "data" => "name,city\nAlexandre,Genève"]),
CURLOPT_RETURNTRANSFER => true,
]);
$result = json_decode(curl_exec($ch), true);
Antwort
{
"ok": true,
"data": {
"to": "json",
"result": "[\n {\n \"name\": \"Alexandre\",\n \"city\": \"Genève\"\n }\n]",
"rows": 1
}
}Mit Ihrem Schlüssel ausprobieren
Fügen Sie einen API-Schlüssel ein (am besten sk_test_: Testergebnisse, kein Guthaben verbraucht). Er bleibt auf dieser Seite: Er wird weder gespeichert noch an andere Stellen als die API gesendet. Mit einem sk_live_-Schlüssel verbraucht der Aufruf Ihre Credits.
/v1/seo/analyze
Kosten: 1 GuthabenErzeugt einen Slug und analysiert Titel, Beschreibung, Schlüsselwörter, Dichte, Lesezeit und Lesbarkeit.
Parameter (JSON-Inhalt)
| Name | Typ | Pflicht | Standard | Beschreibung |
|---|---|---|---|---|
| title | string | ja | … | Titel der Seite (höchstens 300 Zeichen). |
| text | string | nein | … | Artikeltext (höchstens 200 000 Zeichen). |
| description | string | nein | Zu bewertende Meta-Beschreibung (höchstens 500 Zeichen). | |
| lang | string fr | de | en | nein | fr | fr (Standard), de oder en: Stoppwörter und Lesbarkeitsformel. |
| max_keywords | integer | nein | 10 | Höchstzahl der Schlüsselwörter, 1 bis 50 (Standard 10). |
Beispiel
curl -X POST https://supercalcula.ch/api/v1/seo/analyze \
-H "Authorization: Bearer sk_live_…" \
-H "Content-Type: application/json" \
-d '{"title":"Comment créer un QR code avec logo en 2026","text":"Un QR code avec logo…","lang":"fr"}'
const res = await fetch("https://supercalcula.ch/api/v1/seo/analyze", {
method: "POST",
headers: { Authorization: "Bearer sk_live_…", "Content-Type": "application/json" },
body: JSON.stringify({
"title": "Comment créer un QR code avec logo en 2026",
"text": "Un QR code avec logo…",
"lang": "fr"
}),
});
const data = await res.json();
import requests
r = requests.post("https://supercalcula.ch/api/v1/seo/analyze",
headers={"Authorization": "Bearer sk_live_…"},
json={"title":"Comment créer un QR code avec logo en 2026","text":"Un QR code avec logo…","lang":"fr"})
print(r.json())
$ch = curl_init("https://supercalcula.ch/api/v1/seo/analyze");
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => ["Authorization: Bearer sk_live_…", "Content-Type: application/json"],
CURLOPT_POSTFIELDS => json_encode(["title" => "Comment créer un QR code avec logo en 2026", "text" => "Un QR code avec logo…", "lang" => "fr"]),
CURLOPT_RETURNTRANSFER => true,
]);
$result = json_decode(curl_exec($ch), true);
Antwort
{
"ok": true,
"data": {
"slug": "comment-creer-un-qr-code-avec-logo-en-2026",
"title": {
"length": 42,
"verdict": "ok"
},
"description": {
"length": 0,
"verdict": "missing"
},
"keywords": [
{
"term": "qr code",
"count": 12,
"density": 2.1
},
{
"term": "logo",
"count": 7,
"density": 1.2
}
],
"word_count": 570,
"reading_time_min": 3,
"readability": {
"score": 62,
"level": "standard"
}
}
}Mit Ihrem Schlüssel ausprobieren
Fügen Sie einen API-Schlüssel ein (am besten sk_test_: Testergebnisse, kein Guthaben verbraucht). Er bleibt auf dieser Seite: Er wird weder gespeichert noch an andere Stellen als die API gesendet. Mit einem sk_live_-Schlüssel verbraucht der Aufruf Ihre Credits.
/v1/pii/redact
Kosten: 1 GuthabenErkennt und maskiert E-Mail-Adressen, Telefonnummern, IBAN, Karten, AHV-Nummern, IP-Adressen und URL. Der Text wird nie gespeichert.
Parameter (JSON-Inhalt)
| Name | Typ | Pflicht | Standard | Beschreibung |
|---|---|---|---|---|
| text | string | ja | … | Zu verarbeitender Text (höchstens 200 000 Zeichen). |
| types | array email | phone | iban | card | ahv | ip | url | nein | — | Zu erkennende Typen aus email, phone, iban, card, ahv, ip, url (standardmässig alle). |
| mode | string mask | placeholder | remove | nein | placeholder | placeholder (Standard: [EMAIL_1]), mask (Zeichen ersetzt) oder remove. |
| mask_char | string | nein | * | Maskierungszeichen (genau eines, standardmässig «*»). |
| keep_last | integer | nein | 0 | Modus mask: Anzahl der am Ende des Werts erhaltenen Zeichen, 0 bis 4. |
Beispiel
curl -X POST https://supercalcula.ch/api/v1/pii/redact \
-H "Authorization: Bearer sk_live_…" \
-H "Content-Type: application/json" \
-d '{"text":"Contact : jean@exemple.ch, +41 79 123 45 67, IBAN CH93 0076 2011 6238 5295 7","mode":"placeholder"}'
const res = await fetch("https://supercalcula.ch/api/v1/pii/redact", {
method: "POST",
headers: { Authorization: "Bearer sk_live_…", "Content-Type": "application/json" },
body: JSON.stringify({
"text": "Contact : jean@exemple.ch, +41 79 123 45 67, IBAN CH93 0076 2011 6238 5295 7",
"mode": "placeholder"
}),
});
const data = await res.json();
import requests
r = requests.post("https://supercalcula.ch/api/v1/pii/redact",
headers={"Authorization": "Bearer sk_live_…"},
json={"text":"Contact : jean@exemple.ch, +41 79 123 45 67, IBAN CH93 0076 2011 6238 5295 7","mode":"placeholder"})
print(r.json())
$ch = curl_init("https://supercalcula.ch/api/v1/pii/redact");
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => ["Authorization: Bearer sk_live_…", "Content-Type: application/json"],
CURLOPT_POSTFIELDS => json_encode(["text" => "Contact : jean@exemple.ch, +41 79 123 45 67, IBAN CH93 0076 2011 6238 5295 7", "mode" => "placeholder"]),
CURLOPT_RETURNTRANSFER => true,
]);
$result = json_decode(curl_exec($ch), true);
Antwort
{
"ok": true,
"data": {
"text": "Contact : [EMAIL_1], [PHONE_1], IBAN [IBAN_1]",
"entities": [
{
"type": "email",
"placeholder": "EMAIL_1",
"start": 10,
"end": 25
},
{
"type": "phone",
"placeholder": "PHONE_1",
"start": 27,
"end": 43
},
{
"type": "iban",
"placeholder": "IBAN_1",
"start": 50,
"end": 76
}
],
"count": 3
}
}Mit Ihrem Schlüssel ausprobieren
Fügen Sie einen API-Schlüssel ein (am besten sk_test_: Testergebnisse, kein Guthaben verbraucht). Er bleibt auf dieser Seite: Er wird weder gespeichert noch an andere Stellen als die API gesendet. Mit einem sk_live_-Schlüssel verbraucht der Aufruf Ihre Credits.
/v1/convert/currency
Kosten: 1 GuthabenRechnet einen Betrag mit den Referenzkursen der EZB um (30 Währungen, Verlauf seit 1999).
Parameter (URL-Parameter)
| Name | Typ | Pflicht | Standard | Beschreibung |
|---|---|---|---|---|
| amount | number | ja | 100 | Umzurechnender Betrag (positiv). |
| from | string | ja | CHF | Ausgangswährung, Code mit drei Buchstaben (CHF, EUR, USD …). |
| to | string | ja | EUR | Zielwährung, Code mit drei Buchstaben. |
| date | string | nein | — | Datum des Kurses im Format JJJJ-MM-TT (optional, standardmässig der letzte Kurs). |
Beispiel
curl "https://supercalcula.ch/api/v1/convert/currency?amount=100&from=CHF&to=EUR" \
-H "Authorization: Bearer sk_live_…"
const res = await fetch("https://supercalcula.ch/api/v1/convert/currency?amount=100&from=CHF&to=EUR", {
headers: { Authorization: "Bearer sk_live_…" },
});
console.log(await res.json());
import requests
r = requests.get("https://supercalcula.ch/api/v1/convert/currency",
params={"amount":100,"from":"CHF","to":"EUR"},
headers={"Authorization": "Bearer sk_live_…"})
print(r.json())
$ch = curl_init("https://supercalcula.ch/api/v1/convert/currency?amount=100&from=CHF&to=EUR");
curl_setopt_array($ch, [
CURLOPT_HTTPHEADER => ["Authorization: Bearer sk_live_…"],
CURLOPT_RETURNTRANSFER => true,
]);
$result = json_decode(curl_exec($ch), true);
Antwort
{
"ok": true,
"data": {
"amount": 100,
"from": "CHF",
"to": "EUR",
"rate": 1.0738,
"result": 107.38,
"date": "2026-10-09",
"source": "ECB"
}
}Mit Ihrem Schlüssel ausprobieren
Fügen Sie einen API-Schlüssel ein (am besten sk_test_: Testergebnisse, kein Guthaben verbraucht). Er bleibt auf dieser Seite: Er wird weder gespeichert noch an andere Stellen als die API gesendet. Mit einem sk_live_-Schlüssel verbraucht der Aufruf Ihre Credits.
/v1/convert/unit
Kosten: 1 GuthabenRechnet einen Wert zwischen Einheiten um: Länge, Masse, Volumen, Fläche, Temperatur, Geschwindigkeit, Druck, Energie, Leistung, Daten, Zeit, Winkel.
Parameter (URL-Parameter)
| Name | Typ | Pflicht | Standard | Beschreibung |
|---|---|---|---|---|
| value | number | ja | 12.5 | Umzurechnender Wert. |
| from | string | ja | km | Ausgangseinheit (siehe GET /v1/units). |
| to | string | ja | mi | Zieleinheit derselben Kategorie. |
| precision | integer | nein | 6 | Anzahl der Nachkommastellen des Ergebnisses, 0 bis 12 (Standard 6). |
Beispiel
curl "https://supercalcula.ch/api/v1/convert/unit?value=12.5&from=km&to=mi" \
-H "Authorization: Bearer sk_live_…"
const res = await fetch("https://supercalcula.ch/api/v1/convert/unit?value=12.5&from=km&to=mi", {
headers: { Authorization: "Bearer sk_live_…" },
});
console.log(await res.json());
import requests
r = requests.get("https://supercalcula.ch/api/v1/convert/unit",
params={"value":12.5,"from":"km","to":"mi"},
headers={"Authorization": "Bearer sk_live_…"})
print(r.json())
$ch = curl_init("https://supercalcula.ch/api/v1/convert/unit?value=12.5&from=km&to=mi");
curl_setopt_array($ch, [
CURLOPT_HTTPHEADER => ["Authorization: Bearer sk_live_…"],
CURLOPT_RETURNTRANSFER => true,
]);
$result = json_decode(curl_exec($ch), true);
Antwort
{
"ok": true,
"data": {
"value": 12.5,
"from": "km",
"to": "mi",
"result": 7.76714,
"category": "length"
}
}Mit Ihrem Schlüssel ausprobieren
Fügen Sie einen API-Schlüssel ein (am besten sk_test_: Testergebnisse, kein Guthaben verbraucht). Er bleibt auf dieser Seite: Er wird weder gespeichert noch an andere Stellen als die API gesendet. Mit einem sk_live_-Schlüssel verbraucht der Aufruf Ihre Credits.
Änderungsprotokoll
- 2026-10-10
- Version 1.0: QR-Codes und Strichcodes, E-Mail-Prüfung, Datenkonvertierung, SEO, Maskieren persönlicher Daten, Währungen und Einheiten.