Zum Inhalt springen

Der Status einer Markierung

GET https://api.kennmarq.com/v1/marks/{id}

Ein Clip wird als Auftrag markiert (POST /v1/mark antwortet mit 202 und seiner ID): Fragen Sie hier ab, bis er fertig ist, und laden Sie dann den markierten Clip herunter. Abfragen zählt keine Markierungen. Erfordert einen Schlüssel mit der Berechtigung mark, aus der Organisation und Umgebung der Markierung.

Beispiel

curl
curl https://api.kennmarq.com/v1/marks/mk_… -H "Authorization: Bearer $KENNMARQ_API_KEY"
200 application/json, fertig
{
  "object": "mark", "id": "mk_…", "status": "completed", "kind": "clip",
  "created_at": "2026-11-12T10:00:00.000Z", "finished_at": "2026-11-12T10:01:12.000Z",
  "file": { "type": "video/mp4", "bytes": 18734211, "sha256": "…", "seconds": 9.6, "width": 1920, "height": 1080, "frames": 230 },
  "watermark_id": "1d455a804e9802a6",
  "watermarks": { "video": { "alg": "Meta Video Seal 1.0", "id": "1d455a804e9802a6", "read_back": 1, "frames": 64, "strength": 0.2 },
                  "audio": { "alg": "Meta AudioSeal (16 bits)", "claimed": true, "detected": 0.71, "bits": 16 } },
  "manifest": "urn:c2pa:…", "log_index": 1234, "marks": 10, "safety": null,
  "download": { "url": "https://…", "expires_at": "2026-11-12T10:06:12.000Z" },
  "download_until": "2026-11-13T10:01:12.000Z", "download_links_left": 4, "download_error": null
}

Solange der Auftrag läuft, lautet die Antwort {"object": "mark", "id": "mk_…", "status": "running", …}. Die meisten Clips brauchen ein bis zwei Minuten; fragen Sie alle paar Sekunden ab, oder lassen Sie sich von einem Webhook benachrichtigen. Der Download-Link braucht keinen Schlüssel: Der Link selbst gewährt den Zugriff, geben Sie ihn also mit Bedacht weiter. Ein Bild oder Song wurde in seinem eigenen Aufruf markiert: Hier hat die Markierung den Status completed, ohne Download.

Downloads

Die Datei eines fertigen Clips wird einen Tag lang aufbewahrt. Jeder Link dazu funktioniert 5 Minuten lang: Starten Sie den Download innerhalb dieser Zeit (ein begonnener Download läuft zu Ende). Eine erneute Abfrage innerhalb dieser 5 Minuten liefert denselben Link mit derselben Ablaufzeit; danach einen neuen Link, bis zu 5 je Clip. Die Größe der Datei zählt einmal gegen Ihr monatliches Datenkontingent, wenn der Auftrag abgeschlossen ist, was den ersten Link abdeckt, und erneut für jeden späteren Link. Ist das Datenkontingent des Monats aufgebraucht, wird bis zum Monatsersten (UTC) oder bis zu einem größeren Plan kein neuer Link erstellt.

Felder

Felder einer Markierung
FeldBeschreibung
statusrunning, completed oder failed.
kindpicture, song oder clip (eine MP4-Datei, die nur Ton enthält, kommt als Song zurück).
fileDie markierte Datei: type, bytes, sha256, seconds und bei einem Clip width, height und frames.
watermark_idDie Video-Seal-ID eines Clips (16 Hexadezimalziffern), der Schlüssel zu seinen dauerhaften Content Credentials; null bei einem Song.
watermarksvideo: die ID und wie viel davon zurückgelesen wurde; audio: ob das Manifest die Markierung im Ton angibt.
manifest, log_indexDas Label des Manifests und wo seine Signatur im Transparenzprotokoll steht.
marksDie gezählten Markierungen: fünf je Sekunde und zwei je geprüftes Einzelbild.
safetyMit eingeschaltetem check: die Richtlinie und das Ergebnis (allow oder flag, bei flag mit dem Grund).
downloadurl und expires_at: ein Link zur markierten Datei, der 5 Minuten lang funktioniert (siehe Downloads); null, wenn es keinen gibt, mit dem Grund in download_error.
download_untilDie Datei wird nach Abschluss des Auftrags einen Tag lang aufbewahrt.
download_links_leftWie viele weitere Links der Clip erhalten kann: insgesamt 5.
download_errorWarum download null ist: gone (sein Tag ist vorbei), download_limit (seine 5 Links sind verbraucht), quota_exceeded (das Datenkontingent des Monats ist aufgebraucht), storage_unavailable (erneut versuchen). Sonst null.
errorCode und Meldung eines fehlgeschlagenen Auftrags (wie in einem Fehler-Body) sowie safety bei einem blockierten Einzelbild.

Nachweise

GET https://api.kennmarq.com/v1/marks/{id}/receipt

Eine Markierung, die mit markets erstellt wurde, hat einen Nachweis: für jeden Markt das Gesetz, was die Datei dafür trägt, was ihr fehlt und was bei Ihnen als Anbieter bleibt. Auf Wunsch signieren wir ihn mit dem Schlüssel unseres Prüftools, sodass Sie ihn als Beleg aufbewahren können; GET /v1/verify/key liefert denselben Schlüssel. Markierungen ohne markets oder im lokalen Modus haben keinen (404 not_found).

curl
curl https://api.kennmarq.com/v1/marks/mk_4Q8oT1n6mWc2fLr0aZ9eYb/receipt \
  -H "Authorization: Bearer $KENNMARQ_API_KEY"
200 OK
{
  "receipt": {
    "object": "receipt",
    "mark_id": "mk_4Q8oT1n6mWc2fLr0aZ9eYb",
    "made_at": "2026-10-24T10:00:00Z",
    "file": { "type": "image/png", "sha256": "…" },
    "marks": {
      "credential": { "manifest": "urn:c2pa:…", "time_stamp": { "serial": "…", "time": "2026-10-24T10:00:00Z" } },
      "watermark": { "alg": "com.adobe.trustmark.Q", "id": "1a2b3c4d5e6f7081" },
      "sound_watermark": null
    },
    "origin": { "provider": "Acme Inc.", "system": "Acme Studio", "system_version": "2.1", "source": "created", … },
    "markets": [
      { "market": "us-ca", "law": "California AI Transparency Act …", "applied": ["a latent disclosure: …", …], "missing": [], "yours": ["being the covered provider", …] }
    ],
    "rules_checked": "2026-10-24",
    "guarantee": "…"
  },
  "jws": "eyJhbGciOiJFUzI1NiIs…",
  "key_id": "…",
  "public_key": "-----BEGIN PUBLIC KEY-----…"
}

Wenn ein Auftrag fehlschlägt

status: failed, mit dem Fehler, mit dem ein Aufruf geantwortet hätte: content_blocked (ein Einzelbild, das die Sicherheitsprüfung blockiert hat, in safety, mit seinem frame), quota_exceeded (der Clip braucht mehr Markierungen, als übrig waren), payload_too_large (über unseren Grenzen), invalid_request (eine Datei, die wir nicht lesen können), mark_failed oder marker_unavailable. Ein fehlgeschlagener Auftrag zählt nichts, außer bei einer Blockierung die Prüfungen, sofern Sie sie angefordert haben. Nach einem Fehler auf unserer Seite funktioniert der Upload wieder, bis seine Stunde um ist. Für Clips, die mit mark_failed fehlschlagen, nachdem wir sie bearbeitet haben, gilt eine tägliche Obergrenze (Clips).

Fehler des Aufrufs selbst (ein Schlüssel ohne die Berechtigung, eine Markierung einer anderen Organisation, ein Tippfehler in der ID) folgen dem gemeinsamen Format: 401, 403, 404 not_found, 429.