Zum Inhalt springen

Nutzung und Abrechnung

Die Nutzung der Organisation und die einzeln gebuchten Läufe lassen sich per API lesen, etwa um sie in die eigene Rechnungsstellung zu übernehmen. Rechnungen und Abo bleiben der Web-App vorbehalten.

Abrechnungsmodell der Agentur

Im Plan Agentur wird jeder Lauf einzeln berechnet, je Paket. Ein automatischer Lauf besteht aus einem oder mehreren der ersten vier Pakete, ein KI-Scan immer nur aus dem fünften:

Paketdetails.packagesWann es gebucht wird
Sicherheit passivpassivesecurity: true, active: false
Sicherheit aktivactivesecurity: true, active: true
Datenschutzprivacyprivacy: true
Barrierefreiheitaccessibilityaccessibility: true
KI-Scan (Beta)kieine Anfrage über POST /v1/scans/ki
  • Domains kosten nichts. Berechnet werden nur Läufe.
  • Den Preis je Paket vereinbaren wir mit jeder Agentur einzeln. Auch 0 ist ein gültiger Preis und heißt: bewusst kostenlos.
  • Gebucht wird, wenn ein Lauf mit done endet, beim KI-Scan also erst mit dem fertigen Bericht. Der Betrag ist der Preis, der in diesem Moment gilt. Eine spätere Preisänderung ändert gebuchte Läufe nicht.
  • Fehlgeschlagene und abgebrochene Läufe (failed, canceled) kosten nichts.
  • Datenschutz und Barrierefreiheit prüfen immer alle Unterseiten. Für die Sicherheit entscheidet full_site.

Ein Lauf mit Sicherheit, Datenschutz und Barrierefreiheit ergibt drei Buchungen unter derselben scan_id.

Datenschutz ist nicht vorbelegt

Fehlt privacy in POST /v1/scans oder in einem Zeitplan, ist Datenschutz bei Abrechnung je Lauf aus. Wer ihn prüfen lassen will, sendet privacy: true. Bei Abrechnung nach Kontingent (Plan Pro) ist Datenschutz ohne Angabe an.

Fehlender Preis

Ist für ein Paket des Laufs noch kein Preis vereinbart, weist die API den Lauf beim Einreihen mit 402 price_not_set ab. details.packages nennt die betroffenen Pakete. Läufe, die nur Pakete mit Preis enthalten, laufen weiter.

402 price_not_set
{
"code": "price_not_set",
"message": "…",
"details": { "packages": ["privacy"] },
"request_id": "req_9b1e44af0c37d2e5"
}

Den Preis tragen wir ein, sprechen Sie uns dafür an. Kostet ein Paket mehr als 0 und ist keine Zahlungsart hinterlegt, antwortet die API mit 402 payment_method_required.

Monatsrechnung

Die Rechnung kommt nachträglich zum Monatsende. Sie trägt eine Position je Paket und Stückpreis, als Menge mal Stückpreis.

  • Ändert sich ein Preis mitten im Monat, steht dasselbe Paket zweimal auf der Rechnung: eine Position zum alten und eine zum neuen Stückpreis.
  • Ein Paket zu 0 Cent steht ebenfalls als Position auf der Rechnung.
  • Läufe, deren Buchung wir storniert haben, tragen keine Position.

Nutzung

GEThttps://api.red-check.de/v1/billing/usage

Zähler der laufenden Periode und der Verlauf der letzten Monate.

months
integer
–
current
objectPflicht
Speist die Kontingent-Karte unten in der Sidebar.
domains_billed
integer
–
history
object[]Pflicht
Gestapeltes Balkendiagramm über die letzten Monate.
200
Nutzung.
400
Eingabe ungültig (`validation_failed`).
401
Nicht angemeldet (`unauthenticated`) oder zweiter Faktor nicht erbracht (`totp_required`).
402
Im aktuellen Plan nicht enthalten (`plan_upgrade_required`).
403
Kein Zugriff. Ohne Schlüssel fehlt die Rolle Admin (`insufficient_role`), oder der Schlüssel trägt den Scope `start_scans` oder eine Domain-Einschränkung (`api_key_scope_insufficient`).

Gebuchte Läufe

GEThttps://api.red-check.de/v1/billing/usage/scans

Die Summe der Periode, gruppiert nach Kunde. Befüllt ist sie nur bei Abrechnung je Lauf, sonst steht billing_mode auf quota und die Listen sind leer. Mit from und to wählen Sie einen freien Zeitraum statt einer Abrechnungsperiode.

period_start
string (date)
Beginn der Periode. Ohne Angabe die laufende. Wird ignoriert, sobald `from`/`to` gesetzt sind.
from
string (date)
Freier Zeitraum statt einer Abrechnungsperiode, gedacht für die Abrechnung einer Agentur gegenüber ihren eigenen Kunden. Nur zusammen mit `to`.
to
string (date)
Einschließlich dieses Tages.
granularity
enum
`month` liefert zusätzlich `periods[]` für den Monatsvergleich, damit eine bereits gestellte Rechnung nachvollziehbar bleibt.total · month
billing_mode
enumPflicht
Bei `quota` bleiben die Listen leer.quota · per_scan
period_start
string (date)Pflicht
–
period_end
string (date)Pflicht
–
currency
string
–
price_passive_cents
integer | null
–
price_active_cents
integer | null
–
price_privacy_cents
integer | null
–
price_accessibility_cents
integer | null
–
price_ki_cents
integer | null
–
total_cents
integerPflicht
–
invoiced_cents
integer
Anteil, der bereits als Rechnungsposition bei Stripe liegt.
clients
object[]Pflicht
–
periods
object[]
Nur bei `granularity=month`. Ältester Monat zuerst.

Einzelne Buchungen

GEThttps://api.red-check.de/v1/billing/usage/scans/entries

Eine Zeile je gebuchtem Paket, seitenweise wie unter Konventionen. amount_cents ist der Betrag, der beim Lauf galt. Er wird gelesen, nie nachgerechnet.

period_start
string (date)
–
from
string (date)
–
to
string (date)
–
client_name
string
Auf einen Kunden einschränken. Leerer Wert = ohne Zuordnung.
limit
integer
–
cursor
string
Undurchsichtiger Zeiger aus `next_cursor` der vorigen Seite.
scan_id
uuidPflicht
Nicht eindeutig: Je gebuchtem Paket steht eine Zeile unter derselben Kennung.
at
string (date-time)Pflicht
Wann der Lauf gebucht wurde. Danach wird sortiert.
domain
stringPflicht
–
client_name
stringPflicht
Wie er zum Zeitpunkt des Laufs hieß. Leer = ohne Zuordnung.
module
enumPflicht
Das gebuchte Paket. Es trägt den Betrag.security · privacy · accessibility · ki
tier
enum | nullPflicht
Die Eingriffstiefe, nur bei `module = security`. Bei Datenschutz und Barrierefreiheit `null`, weil sie definitionsgemäß passiv sind und keine Tiefe haben, die etwas unterschiede.passive · active · hacking
amount_cents
integerPflicht
Der Betrag, der beim Lauf galt. Er wird gelesen und nie nachgerechnet.
invoiced_at
string | null
–

Als CSV

GEThttps://api.red-check.de/v1/billing/usage/scans.csv

Dieselben Zeilen als CSV, mit Semikolon als Trennzeichen und Komma in Beträgen, damit deutsche Tabellenprogramme die Spalten erkennen.

Aufstellung eines Zeitraums
curl -sS -o laeufe.csv \
"https://api.red-check.de/v1/billing/usage/scans.csv?from=2026-09-01&to=2026-09-30" \
-H "Authorization: Bearer $KEY"

Rechte

Aufrufread_onlystart_scansfull
die vier Aufrufe dieser Seite, Schlüssel ohne Domain-Einschränkungjaneinja
die vier Aufrufe dieser Seite, Schlüssel mit Domain-Einschränkungneinneinnein
Rechnungen, Abo, Checkoutneinneinnein