Native PII-API v2
Personenbezogene Daten in Text, Tabellen, JSON, Transkripten, Bildern, Audio und Dokumenten mit einem Vertrag erkennen, schützen und wiederherstellen.
Derselbe Anfrage-Body funktioniert mit der gehosteten API, der Sandbox und einer Installation in Ihrem eigenen Cluster. Die Offline-Edition bedient die native API v1, bis ihr Image v2 enthält. Die Verträge für Azure, AWS und Google bleiben als Kompatibilitäts-APIs verfügbar.
Änderungen innerhalb von 2.x sind nur Ergänzungen: neue Felder, Parameter, Werte und Routen. Eine inkompatible Änderung erhält eine neue Hauptversion mit einem neuen Pfadpräfix. Wir kündigen sie 12 Monate vorher an, und die vorherige Hauptversion bleibt in diesem Zeitraum verfügbar.
Ignorieren Sie Antwortfelder und Werte, die Sie nicht kennen. API-Versionen →
Funktionen im Überblick
Jede Funktion hat eine einzeilige Erklärung und eine minimale Anfrage. Die folgenden Abschnitte enthalten die Details.
export SHINRAI_API_KEY=shr_live_...Eingaben
Text Finden Sie personenbezogene Daten in einem Text. Jede Entität kommt mit Typ, Position und Konfidenz zurück.
curl -s https://api.getshinrai.com/v2/detect -H "Authorization: Bearer $SHINRAI_API_KEY" \
-H "Content-Type: application/json" -d '{"text": "Anna Weber, anna.weber@example.org, IBAN DE89 3704 0044 0532 0130 00"}'curl 'https://azure.api.getshinrai.com/language/:analyze-text?api-version=2023-04-01' \
-H "Ocp-Apim-Subscription-Key: $SHINRAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{"kind":"PiiEntityRecognition","analysisInput":{"documents":[{"id":"1","language":"en","text":"Anna Weber, anna.weber@example.org, IBAN DE89 3704 0044 0532 0130 00"}]},"parameters":{"modelVersion":"latest","stringIndexType":"Utf16CodeUnit"}}'Kompatibilitäts-APIs begrenzen, was ShinrAI zurückgeben kann. Für volle Qualität verwenden Sie die native PII-API v2.
# Once: create SigV4 credentials with your ShinrAI key
# curl -X POST https://aws.api.getshinrai.com/providers/aws/credentials -H "Authorization: Bearer $SHINRAI_API_KEY"
import boto3, os
client = boto3.client(
"comprehend",
region_name="eu-central-1",
endpoint_url="https://aws.api.getshinrai.com",
aws_access_key_id=os.environ["SHINRAI_AWS_ACCESS_KEY_ID"],
aws_secret_access_key=os.environ["SHINRAI_AWS_SECRET_ACCESS_KEY"],
)
print(client.detect_pii_entities(Text="Anna Weber, anna.weber@example.org, IBAN DE89 3704 0044 0532 0130 00", LanguageCode="en"))Kompatibilitäts-APIs begrenzen, was ShinrAI zurückgeben kann. Für volle Qualität verwenden Sie die native PII-API v2.
curl 'https://google.api.getshinrai.com/v2/projects/my-project/locations/global/content:inspect' \
-H "x-goog-api-key: $SHINRAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{"item":{"value":"Anna Weber, anna.weber@example.org, IBAN DE89 3704 0044 0532 0130 00"},"inspectConfig":{"includeQuote":true}}'Kompatibilitäts-APIs begrenzen, was ShinrAI zurückgeben kann. Für volle Qualität verwenden Sie die native PII-API v2.
Mehrere Texte Senden Sie bis zu 256 Texte in einer Anfrage. Eine Anfrage behält eine Ersatzzuordnung für alle Texte.
curl -s https://api.getshinrai.com/v2/protect -H "Authorization: Bearer $SHINRAI_API_KEY" \
-H "Content-Type: application/json" -d '{"texts": ["Anna Weber called.", "Call Anna Weber back at +49 30 1234567."]}'Textdateien Senden Sie eine Textdatei unverändert und erhalten Sie den geschützten Text zurück.
curl -s "https://api.getshinrai.com/v2/protect?preset=label" -H "Authorization: Bearer $SHINRAI_API_KEY" \
-H "Content-Type: text/plain" -H "Accept: text/plain" --data-binary @letter.txt# Azure returns the masked text as redactedText.
curl 'https://azure.api.getshinrai.com/language/:analyze-text?api-version=2023-04-01' \
-H "Ocp-Apim-Subscription-Key: $SHINRAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{"kind":"PiiEntityRecognition","analysisInput":{"documents":[{"id":"1","language":"en","text":"Anna Weber, anna.weber@example.org"}]},"parameters":{"modelVersion":"latest","stringIndexType":"Utf16CodeUnit"}}'Kompatibilitäts-APIs begrenzen, was ShinrAI zurückgeben kann. Für volle Qualität verwenden Sie die native PII-API v2.
curl 'https://google.api.getshinrai.com/v2/projects/my-project/locations/global/content:deidentify' \
-H "x-goog-api-key: $SHINRAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{"item":{"value":"Anna Weber, anna.weber@example.org"},"deidentifyConfig":{"infoTypeTransformations":{"transformations":[{"primitiveTransformation":{"replaceWithInfoTypeConfig":{}}}]}}}'Kompatibilitäts-APIs begrenzen, was ShinrAI zurückgeben kann. Für volle Qualität verwenden Sie die native PII-API v2.
Tabellen Schützen Sie Zeilen und Spalten. Jede Entität nennt ihre Zeile und Spalte.
curl -s https://api.getshinrai.com/v2/protect -H "Authorization: Bearer $SHINRAI_API_KEY" -H "Content-Type: application/json" \
-d '{"inputs": [{"kind": "table", "columns": [{"name": "name"}, {"name": "email"}], "rows": [["Anna Weber", "anna@example.org"]]}]}'JSON Schützen Sie jede Zeichenkette in einem JSON-Wert, zum Beispiel in einem Tool-Aufruf. Jede Entität trägt einen JSON Pointer auf ihre Zeichenkette.
curl -s https://api.getshinrai.com/v2/protect -H "Authorization: Bearer $SHINRAI_API_KEY" -H "Content-Type: application/json" \
-d '{"inputs": [{"kind": "json", "value": {"customer": {"name": "Anna Weber", "email": "anna@example.org"}}}]}'Transkripte Senden Sie ein Transkript mit Zeitangaben pro Wort. Jede Entität kommt mit den Zeitangaben ihrer Wörter zurück.
curl -s https://api.getshinrai.com/v2/detect -H "Authorization: Bearer $SHINRAI_API_KEY" -H "Content-Type: application/json" \
-d '{"inputs": [{"kind": "transcript", "forms": {"display": "Call Anna Weber"}, "atoms_form": "display", "time_unit": "ms",
"atoms": [{"text": "Call", "t0": 0, "t1": 300}, {"text": "Anna", "t0": 350, "t1": 600}, {"text": "Weber", "t0": 600, "t1": 950}]}]}'Seiten Senden Sie den Text einer Seite mit den Wortboxen aus Ihrer eigenen OCR oder der PDF-Textebene. Jede Entität kommt mit ihren Boxen zurück.
curl -s https://api.getshinrai.com/v2/detect -H "Authorization: Bearer $SHINRAI_API_KEY" -H "Content-Type: application/json" \
-d '{"inputs": [{"kind": "page", "text": "Anna Weber", "box_unit": "px",
"atoms": [{"start": 0, "end": 4, "page": 1, "box": [10, 20, 40, 12]}, {"start": 5, "end": 10, "page": 1, "box": [54, 20, 50, 12]}]}]}'Bilder Finden Sie personenbezogene Daten in einem Screenshot oder Scan. Die OCR liest 14 Sprachen, und jede Entität kommt mit Pixelboxen zurück.
curl -s "https://api.getshinrai.com/v2/detect?language=de" -H "Authorization: Bearer $SHINRAI_API_KEY" \
-H "Content-Type: image/png" --data-binary @screenshot.pngGeschwärzte Bilder Erhalten Sie das geschwärzte Bild zurück, in dem jede Entität schwarz gefüllt ist.
curl -s https://api.getshinrai.com/v2/protect -H "Authorization: Bearer $SHINRAI_API_KEY" \
-H "Content-Type: image/png" -H "Accept: image/png" --data-binary @screenshot.png -o redacted.png# Google returns the redacted image as redactedImage.
curl 'https://google.api.getshinrai.com/v2/projects/my-project/image:redact' \
-H "x-goog-api-key: $SHINRAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{"byteItem":{"type":"IMAGE_PNG","data":"'"$(base64 < screenshot.png | tr -d '\n')"'"}}'Kompatibilitäts-APIs begrenzen, was ShinrAI zurückgeben kann. Für volle Qualität verwenden Sie die native PII-API v2.
Audio Senden Sie eine Aufnahme von bis zu 5 Minuten und erhalten Sie sie zurück, in der jede personenbezogene Angabe überpiept ist.
curl -sS "https://api.getshinrai.com/v2/protect?language=de" -H "Authorization: Bearer $SHINRAI_API_KEY" \
-H "Content-Type: audio/mpeg" -H "Accept: audio/wav" --data-binary @call.mp3 -o call.redacted.wavAudio-Transkripte Erhalten Sie das Transkript einer Aufnahme und die Zeitangaben jeder Entität, ohne das Audio.
curl -sS "https://api.getshinrai.com/v2/detect?language=de" -H "Authorization: Bearer $SHINRAI_API_KEY" \
-H "Content-Type: audio/mpeg" --data-binary @call.mp3Erkennung
Sprache und Modell Legen Sie für die besten Ergebnisse die Sprache fest, und fixieren Sie eine Modellversion, wenn Sie über längere Zeit dieselben Ergebnisse brauchen.
curl -s https://api.getshinrai.com/v2/detect -H "Authorization: Bearer $SHINRAI_API_KEY" -H "Content-Type: application/json" \
-d '{"text": "Anna Weber wohnt in Darmstadt.", "detection": {"language": "de", "model": "latest"}}'Typen Schließen Sie Typen über ihre ShinrAI-Namen oder über die Namen von Google, AWS, Azure oder Presidio ein oder aus.
curl -s https://api.getshinrai.com/v2/detect -H "Authorization: Bearer $SHINRAI_API_KEY" -H "Content-Type: application/json" \
-d '{"text": "Anna Weber, anna@example.org, +49 30 1234567", "detection": {"types": {"include": ["EMAIL_ADDRESS", "PHONE_NUMBER"], "vocabulary": "google"}}}'Mindestkonfidenz Legen Sie eine Mindestkonfidenz für alle Typen, pro Typ oder pro Sprache fest.
curl -s https://api.getshinrai.com/v2/detect -H "Authorization: Bearer $SHINRAI_API_KEY" -H "Content-Type: application/json" \
-d '{"text": "Anna Weber, Darmstadt", "detection": {"thresholds": {"default": 0.5, "per_type": {"CITY": 0.8}}}}'Ignorierte Werte und eigene Werte Lassen Sie Werte wie Ihren Firmennamen nie melden, und finden Sie eigene Werte mit einem Typ.
curl -s https://api.getshinrai.com/v2/detect -H "Authorization: Bearer $SHINRAI_API_KEY" -H "Content-Type: application/json" \
-d '{"text": "Innovius support: case K-4711 for Anna Weber", "detection": {"exclude_values": {"values": ["Innovius"]},
"custom": {"user_values": [{"value": "K-4711", "type": "CUSTOMER_ID"}]}}}'Eigene Bereiche Schützen Sie die Bereiche, die Ihr eigener Detektor gefunden hat, allein oder zusammen mit der ShinrAI-Erkennung.
curl -s https://api.getshinrai.com/v2/protect -H "Authorization: Bearer $SHINRAI_API_KEY" -H "Content-Type: application/json" \
-d '{"inputs": [{"kind": "text", "text": "Ticket for Anna Weber", "entities": [{"type": "PERSON", "span": {"start": 11, "end": 21}}]}],
"detection": {"mode": "provided"}}'Lange Texte Wählen Sie, wie das Modell einen langen Text liest: automatisch, Satz für Satz oder am Stück.
curl -s https://api.getshinrai.com/v2/detect -H "Authorization: Bearer $SHINRAI_API_KEY" -H "Content-Type: application/json" \
-d '{"text": "Anna Weber called. She lives in Darmstadt.", "detection": {"spans": {"segment": "sentence"}}}'Schutz
Pseudonymisierung Pseudonymisieren Sie und behalten Sie die Zuordnung, damit Sie eine Antwort später wiederherstellen können.
curl -s https://api.getshinrai.com/v2/protect -H "Authorization: Bearer $SHINRAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{"text": "Anna Weber lives in Darmstadt.", "policy": {"preset": "pseudonymize"}, "output": {"include": ["entities", "mapping"]}}'# Azure returns the masked text as redactedText.
curl 'https://azure.api.getshinrai.com/language/:analyze-text?api-version=2023-04-01' \
-H "Ocp-Apim-Subscription-Key: $SHINRAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{"kind":"PiiEntityRecognition","analysisInput":{"documents":[{"id":"1","language":"en","text":"Anna Weber lives in Darmstadt."}]},"parameters":{"modelVersion":"latest","stringIndexType":"Utf16CodeUnit"}}'Kompatibilitäts-APIs begrenzen, was ShinrAI zurückgeben kann. Für volle Qualität verwenden Sie die native PII-API v2.
curl 'https://google.api.getshinrai.com/v2/projects/my-project/locations/global/content:deidentify' \
-H "x-goog-api-key: $SHINRAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{"item":{"value":"Anna Weber lives in Darmstadt."},"deidentifyConfig":{"infoTypeTransformations":{"transformations":[{"primitiveTransformation":{"replaceWithInfoTypeConfig":{}}}]}}}'Kompatibilitäts-APIs begrenzen, was ShinrAI zurückgeben kann. Für volle Qualität verwenden Sie die native PII-API v2.
Labels und Masken Ersetzen Sie jeden Wert durch ein nummeriertes Label wie [PERSON_1], oder maskieren Sie ihn mit einem Zeichen.
curl -s https://api.getshinrai.com/v2/protect -H "Authorization: Bearer $SHINRAI_API_KEY" -H "Content-Type: application/json" \
-d '{"text": "Anna Weber, anna@example.org", "policy": {"preset": "label", "rules": [{"types": ["EMAIL"], "action": "mask", "mask": {"char": "*"}}]}}'# Azure returns the masked text as redactedText.
curl 'https://azure.api.getshinrai.com/language/:analyze-text?api-version=2023-04-01' \
-H "Ocp-Apim-Subscription-Key: $SHINRAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{"kind":"PiiEntityRecognition","analysisInput":{"documents":[{"id":"1","language":"en","text":"Anna Weber, anna@example.org"}]},"parameters":{"modelVersion":"latest","stringIndexType":"Utf16CodeUnit"}}'Kompatibilitäts-APIs begrenzen, was ShinrAI zurückgeben kann. Für volle Qualität verwenden Sie die native PII-API v2.
curl 'https://google.api.getshinrai.com/v2/projects/my-project/locations/global/content:deidentify' \
-H "x-goog-api-key: $SHINRAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{"item":{"value":"Anna Weber, anna@example.org"},"deidentifyConfig":{"infoTypeTransformations":{"transformations":[{"primitiveTransformation":{"replaceWithInfoTypeConfig":{}}}]}}}'Kompatibilitäts-APIs begrenzen, was ShinrAI zurückgeben kann. Für volle Qualität verwenden Sie die native PII-API v2.
Teilwerte und verallgemeinerte Werte Behalten Sie die E-Mail-Domain und die letzten vier Ziffern einer Karte, und verallgemeinern Sie Namen und Orte.
curl -s https://api.getshinrai.com/v2/protect -H "Authorization: Bearer $SHINRAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{"text": "Anna Weber aus Biberach, anna@example.org, Karte 4111 1111 1111 1111", "language": "de",
"policy": {"default": {"action": "generalize"}, "rules": [{"types": ["EMAIL", "CREDIT_CARD"], "action": "partial"}]}}'Regeln pro Typ Wählen Sie eine Aktion pro Typ: durch einen festen Text ersetzen, entfernen oder behalten.
curl -s https://api.getshinrai.com/v2/protect -H "Authorization: Bearer $SHINRAI_API_KEY" -H "Content-Type: application/json" \
-d '{"text": "Anna Weber from Darmstadt, +49 30 1234567, anna@example.org", "policy": {"preset": "pseudonymize",
"rules": [{"types": ["PHONE"], "action": "replace", "replace": {"value": "[phone]"}}, {"types": ["EMAIL"], "action": "remove"},
{"types": ["CITY"], "action": "keep"}]}}'Ausgaben
Annotationen Erhalten Sie Jahre, Beträge, Rechtsverweise und Bias-Begriffe als Annotationen. Protect ändert sie nie.
curl -s https://api.getshinrai.com/v2/detect -H "Authorization: Bearer $SHINRAI_API_KEY" -H "Content-Type: application/json" \
-d '{"text": "In 2019 Anna Weber paid 1,200 EUR.", "output": {"include": ["entities", "annotations"]}}'Verknüpfungsrisiko Schätzen Sie, wie wahrscheinlich ein Text eine Person herausgreift. Es ist eine Heuristik, keine Zählung.
curl -s https://api.getshinrai.com/v2/detect -H "Authorization: Bearer $SHINRAI_API_KEY" -H "Content-Type: application/json" \
-d '{"text": "The 34-year-old head surgeon from Biberach joined in 2019.", "output": {"include": ["entities", "linkage_risk"]}}'Offsets, Texte und Statistiken Erhalten Sie Positionen in UTF-16 oder UTF-8, die Entitätstexte, Statistiken und eine kürzere Entitätenliste.
curl -s https://api.getshinrai.com/v2/detect -H "Authorization: Bearer $SHINRAI_API_KEY" -H "Content-Type: application/json" \
-d '{"text": "Anna Weber, anna@example.org", "output": {"offset_unit": "utf16", "include_text": true, "include": ["entities", "stats"], "max_entities": {"per_input": 10}}}'Wiederherstellung und Sitzungen
Wiederherstellung Stellen Sie einen Text wieder her, der die Ersatzwerte enthält. Senden Sie die Einträge aus mapping.delta als Paare aus Original und Ersatz.
curl -s https://api.getshinrai.com/v2/restore -H "Authorization: Bearer $SHINRAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{"mapping": {"known": [{"original": "Anna Weber", "replacement": "Julia Brandt"}]}, "inputs": [{"id": "1", "text": "Julia Brandt replied."}]}'Wiederherstellungstabellen Kompilieren Sie eine Zuordnung in eine Wiederherstellungstabelle und stellen Sie in Ihrem eigenen Code wieder her, zum Beispiel in einer gestreamten Modellantwort.
curl -s https://api.getshinrai.com/v2/restore-tables -H "Authorization: Bearer $SHINRAI_API_KEY" -H "Content-Type: application/json" \
-d '{"mapping": {"known": [{"original": "Anna Weber", "replacement": "Julia Brandt"}]}}'Einzelner Ersatz Erhalten Sie einen Ersatz für einen Wert und Typ Ihrer Wahl.
curl -s https://api.getshinrai.com/v2/replacements -H "Authorization: Bearer $SHINRAI_API_KEY" -H "Content-Type: application/json" \
-d '{"value": "Anna Weber", "type": "PERSON", "language": "de"}'Sitzungen Behalten Sie mit einer Sitzung (standardmäßig 24 Stunden ab Erstellung) eine Zuordnung über viele Anfragen, und exportieren Sie sie danach.
SESSION=$(curl -s -X POST https://api.getshinrai.com/v2/sessions -H "Authorization: Bearer $SHINRAI_API_KEY" \
-H "Content-Type: application/json" -d '{"ttl_s": 3600}' | python3 -c 'import sys, json; print(json.load(sys.stdin)["id"])')
curl -s https://api.getshinrai.com/v2/protect -H "Authorization: Bearer $SHINRAI_API_KEY" \
-H "Content-Type: application/json" -d '{"text": "Anna Weber called.", "mapping": {"session": "'$SESSION'"}}'
curl -s https://api.getshinrai.com/v2/sessions/$SESSION/mapping -H "Authorization: Bearer $SHINRAI_API_KEY"Bekannte Paare Geben Sie frühere Paare an eine neue Anfrage, damit dieselben Werte dieselben Ersatzwerte behalten.
curl -s https://api.getshinrai.com/v2/protect -H "Authorization: Bearer $SHINRAI_API_KEY" -H "Content-Type: application/json" \
-d '{"text": "Anna Weber called again.", "mapping": {"known": [{"original": "Anna Weber", "replacement": "Julia Brandt"}]}}'Jobs
Textstapel Schützen Sie bis zu 20.000 Texte aus einer JSONL-Datei im Hintergrund, zum halben Preis.
UPLOAD=$(curl -s https://api.getshinrai.com/v2/uploads -H "Authorization: Bearer $SHINRAI_API_KEY" \
-H "Content-Type: application/x-ndjson" --data-binary @rows.jsonl | python3 -c 'import sys, json; print(json.load(sys.stdin)["id"])')
curl -s https://api.getshinrai.com/v2/jobs -H "Authorization: Bearer $SHINRAI_API_KEY" -H "Content-Type: application/json" \
-d '{"kind": "text_batch", "inputs": [{"kind": "file", "source": {"upload": "'$UPLOAD'"}}]}'Dokumente Erhalten Sie eine PDF- oder Word-Datei als geschwärztes PDF zurück, zusammen mit ihrem geschützten Text.
UPLOAD=$(curl -s https://api.getshinrai.com/v2/uploads -H "Authorization: Bearer $SHINRAI_API_KEY" \
-H "Content-Type: application/pdf" --data-binary @contract.pdf | python3 -c 'import sys, json; print(json.load(sys.stdin)["id"])')
curl -s https://api.getshinrai.com/v2/jobs -H "Authorization: Bearer $SHINRAI_API_KEY" -H "Content-Type: application/json" \
-d '{"kind": "document", "inputs": [{"kind": "file", "source": {"upload": "'$UPLOAD'"}}]}'Lange Aufnahmen Überpiepen Sie eine Aufnahme von bis zu 60 Minuten im Hintergrund.
UPLOAD=$(curl -s https://api.getshinrai.com/v2/uploads -H "Authorization: Bearer $SHINRAI_API_KEY" \
-H "Content-Type: audio/mpeg" --data-binary @meeting.mp3 | python3 -c 'import sys, json; print(json.load(sys.stdin)["id"])')
curl -s https://api.getshinrai.com/v2/jobs -H "Authorization: Bearer $SHINRAI_API_KEY" -H "Content-Type: application/json" \
-d '{"kind": "audio", "inputs": [{"kind": "audio", "source": {"upload": "'$UPLOAD'"}, "language": "de"}]}'Stufen, Wiederholungen und Konto
Stufen Wählen Sie Echtzeit für kleine Eingaben mit geringer Latenz oder Batch zum halben Preis.
curl -s "https://api.getshinrai.com/v2/detect?tier=realtime" -H "Authorization: Bearer $SHINRAI_API_KEY" \
-H "Content-Type: text/plain" --data-binary 'Call Anna Weber at +49 30 1234567.'Sichere Wiederholungen Wiederholen Sie die Anfrage mit demselben Idempotency-Key. Der Dienst berechnet die Anfrage einmal.
curl -s https://api.getshinrai.com/v2/protect -H "Authorization: Bearer $SHINRAI_API_KEY" -H "Idempotency-Key: order-4711" \
-H "Content-Type: application/json" -d '{"text": "Anna Weber, order 4711"}'Fähigkeiten Was diese Bereitstellung bedient: Modelle, Sprachen, Eingabearten, die Stufen, die Ihr Tarif erlaubt, und Grenzen.
curl -s https://api.getshinrai.com/v2/capabilities -H "Authorization: Bearer $SHINRAI_API_KEY"Typenliste Listen Sie jeden Typ mit seiner Beschreibung und den Namen von Google, AWS, Azure und Presidio auf.
curl -s https://api.getshinrai.com/v2/types -H "Authorization: Bearer $SHINRAI_API_KEY"Nutzung Ihr Guthaben und die letzten 30 Tage.
curl -s https://api.getshinrai.com/v2/usage -H "Authorization: Bearer $SHINRAI_API_KEY"OpenAPI Erhalten Sie das vollständige OpenAPI 3.1-Dokument der API v2.
curl -s https://api.getshinrai.com/v2/openapi.json -o shinrai-pii-api-v2.jsonMit den Fähigkeiten beginnen
Lesen Sie die Fähigkeiten einmal beim Start. Sie nennen die Modelle, Sprachen, Eingabearten, Stufen und Grenzen Ihrer Bereitstellung.
curl -s https://api.getshinrai.com/v2/capabilities -H "Authorization: Bearer $SHINRAI_API_KEY"
Jede Eingabeart senden
Ein einfacher Text braucht keine Hülle. Senden Sie eine Textdatei, ein Bild oder eine Aufnahme direkt als Anfrage-Body und die Optionen im Query-String.
| Eingabe | So senden Sie sie | Hinweise |
|---|---|---|
| Text | {"text": "..."} oder text/plain | JSON oder die Rohdatei senden |
| Tabellen | "kind": "table" | Spalten und Zeilen |
| JSON | "kind": "json" | Alle Zeichenketten des Werts |
| Transkripte | "kind": "transcript" | Formen und Wortatome mit Zeitangaben |
| Seiten | "kind": "page" | Text plus Wortboxen aus Ihrer eigenen OCR oder der PDF-Textebene |
| Bilder | image/png, image/jpeg, image/bmp, image/tiff, image/webp | Bis 6 MiB: OCR, Pixelboxen pro Entität und das geschwärzte Bild |
| Audio | audio/wav, audio/mpeg, audio/ogg, audio/flac, audio/mp4, audio/aac, audio/webm | Bis 5 Minuten und 12 MiB: Zeitintervalle pro Entität und die überpiepte Aufnahme |
| Dokumente | POST /v2/jobs | PDF und DOCX über einen Job: das geschwärzte PDF und der geschützte Text |
Text erkennen, schützen und wiederherstellen
Die meisten Integrationen beginnen mit Text. Detect findet die personenbezogenen Daten. Protect liefert den Text mit jeder Entität ersetzt. Restore setzt die Originalwerte in einen späteren Text wieder ein, zum Beispiel in eine Modellantwort.
curl -s https://api.getshinrai.com/v2/detect -H "Authorization: Bearer $SHINRAI_API_KEY" \
-H "Content-Type: application/json" -d '{"text": "Anna Weber, anna.weber@example.org, IBAN DE89 3704 0044 0532 0130 00"}'
curl -s https://api.getshinrai.com/v2/protect -H "Authorization: Bearer $SHINRAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{"text": "Anna Weber lives in Darmstadt.", "policy": {"preset": "pseudonymize"}, "output": {"include": ["entities", "mapping"]}}'
curl -s https://api.getshinrai.com/v2/restore -H "Authorization: Bearer $SHINRAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{"mapping": {"known": [{"original": "Anna Weber", "replacement": "Julia Brandt"}]}, "inputs": [{"id": "1", "text": "Julia Brandt replied."}]}'
Was ist semantische Verschlüsselung?
ShinrAI bezeichnet seine kontexterhaltende, reversible Ersetzung als semantische Verschlüsselung. Sie ist eine Form der Pseudonymisierung: Sensible Werte werden durch nutzbare Alternativen ersetzt. Ihre Anwendung kann die Originale über ihre Zuordnung wiederherstellen.
Schützen Sie die Zuordnung als sensible Daten und halten Sie sie aus KI-Prompts heraus. Realistische Ersetzungen bedeuten weder, dass jedes Wort kryptografisch verschlüsselt ist, noch dass der Text automatisch anonym ist.
Sprachen und Datenkategorien · Modell-Changelog · ShinrAI vergleichen
Schutzart wählen
Eine Voreinstellung legt eine Richtlinie für alle Typen fest. Regeln legen eine Aktion pro Typ fest.
| Einstellung | Werte |
|---|---|
| Voreinstellung | pseudonymize, mask, label, strict |
| Aktion pro Typ | surrogate, label, mask, partial, generalize, replace, remove, keep |
- Pseudonymize schreibt realistische Ersatzwerte, die Sie wiederherstellen können.
- Partial behält, was nicht identifiziert: die E-Mail-Domain, die Ländervorwahl, die letzten vier Ziffern einer Karte oder eines Kontos, das Jahr eines Datums.
- Generalize schreibt eine Umschreibung für die Art des Namens, Orts oder der Organisation, in der Sprache der Eingabe.
- Partial und generalize sind nicht umkehrbar.
Erkennung steuern
- Legen Sie eine Mindestkonfidenz für alle Typen, pro Typ oder pro Sprache fest.
- Schließen Sie Typen über ihre kanonischen Namen oder über die Namen von Google, AWS, Azure oder Presidio ein oder aus.
- Schließen Sie Werte aus, die nie gemeldet werden dürfen, etwa Ihren Firmennamen, oder fügen Sie eigene Werte hinzu.
- Senden Sie die Bereiche Ihres eigenen Detektors, allein oder zusammen mit der ShinrAI-Erkennung.
- Fordern Sie Annotationen an: Jahre, Beträge, Rechtsverweise und Bias-Begriffe. Protect ändert sie nie.
- Fordern Sie das Verknüpfungsrisiko an: eine Schätzung, wie wahrscheinlich eine Eingabe eine Person herausgreift. Es ist eine Heuristik, keine Zählung.
Wiederherstellen und eine Zuordnung behalten
Fordern Sie die Zuordnung an, wenn Sie eine Antwort später wiederherstellen müssen. Die Zuordnung enthält die Originalwerte. Speichern Sie sie als sensible Anwendungsdaten und halten Sie sie aus Modell-Prompts heraus.
- Innerhalb einer Anfrage behält ein Wert einen Ersatzwert.
- Die nächste Anfrage zieht neue Ersatzwerte. Wiederholte Anfragen können Ersatzwerte daher nicht auf Originale zurückführen.
- Für dieselben Ersatzwerte über mehrere Anfragen verwenden Sie eine Sitzung oder senden die früheren Paare als bekannte Zuordnungen.
- Kontoweite Konsistenz ist als Option verfügbar. Sie ist schwächer: Jeder mit dem Schlüssel kann dann durch Wiederholung eine Tabelle der Originale aufbauen.
- Andere Kunden erhalten immer andere Ersatzwerte.
- Mit Wiederherstellungstabellen stellen Sie in Ihrem eigenen Code wieder her, zum Beispiel in einer gestreamten Modellantwort.
Eine Sitzung hält eine Zuordnung auf dem Server. Sie besteht höchstens 24 Stunden ab ihrer Erstellung, mit der Einstellung für erweiterte Sitzungen Ihres Kontos bis zu 7 Tage. Die Zuordnung wird verschlüsselt gespeichert, und nur Ihr Schlüssel kann sie lesen.
Screenshots und Scans schützen
- Die OCR liest jede Sprache, die das Modell bedient. Senden Sie bei arabischen, hebräischen, japanischen und koreanischen Bildern die Sprache mit.
- Jede Entität kommt mit Pixelboxen zurück, eine pro Textzeile oder eine pro Wort.
- Protect liefert das Bild mit gefüllten Bereichen zurück.
- Die Echtzeitstufe nimmt ein Bild pro Anfrage an, bis 4,2 Megapixel und 3 MiB.
Audio schützen
- Senden Sie eine Aufnahme von bis zu 5 Minuten und 12 MiB als Body einer detect- oder protect-Anfrage in der Standardstufe.
- Protect liefert die Aufnahme als WAV zurück, in der jede personenbezogene Angabe überpiept ist. Fordern Sie Stille statt des Tons an, und verbreitern Sie bei Bedarf die stummgeschalteten Intervalle.
- Fordern Sie JSON an, um das geschützte Transkript und die Zeitangaben jeder Entität statt Audio zu erhalten.
- Senden Sie die Sprache mit: Die Spracherkennung und die Erkennung lesen dann die richtige Sprache.
- Audio kostet die Records seines Transkripts, mindestens 10 Records pro angefangene Minute.
- Pro Konto läuft jeweils eine Audio-Anfrage. Aufnahmen bis 60 Minuten laufen als Job.
- Ein Wort, das die Spracherkennung falsch versteht und das Modell dann übersieht, bleibt hörbar. Hören Sie sensible Aufnahmen an, bevor Sie sie teilen.
Große Stapel, Dokumente und Aufnahmen als Jobs ausführen
Verwenden Sie einen Job, wenn die Arbeit für eine Anfrage zu groß ist: viele Texte, eine PDF- oder Word-Datei oder eine lange Aufnahme. Ein Job läuft im Hintergrund mit dem Batch-Gewicht und hält seine Ergebnisse 24 Stunden bereit.
- Laden Sie eine JSONL-Datei mit einer Eingabe pro Zeile, eine PDF- oder DOCX-Datei oder eine Aufnahme hoch.
- Starten Sie den Job mit der Upload-ID.
- Fragen Sie den Job-Status ab und laden Sie die Artefakte herunter.
{"custom_id": "row-1", "text": "Anna Schmidt, anna@example.com"}
{"custom_id": "row-2", "text": "Call +49 30 1234567", "language": "de"}
{"custom_id": "row-3", "input": {"kind": "table", "columns": [{"name": "email"}], "rows": [["max@example.org"]]}}
curl -s https://api.getshinrai.com/v2/uploads \
-H "Authorization: Bearer $SHINRAI_API_KEY" \
-H "Content-Type: application/x-ndjson" \
--data-binary @rows.jsonl
curl -s https://api.getshinrai.com/v2/jobs \
-H "Authorization: Bearer $SHINRAI_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: rows-2026-09-28" \
-d '{"kind": "text_batch",
"inputs": [{"kind": "file", "source": {"upload": "up_..."}}],
"output": {"artifacts": ["protected", "entities"]}}'
curl -s https://api.getshinrai.com/v2/jobs/$JOB -H "Authorization: Bearer $SHINRAI_API_KEY"
Ein Upload wird gelöscht, sobald der letzte Job endet, der ihn liest. Hängen Sie ?keep=true an den Upload an, wenn mehrere Jobs ihn lesen: Er besteht dann 24 Stunden, und jeder Job, der ihn liest, verlängert diese Frist. Das Löschen eines Jobs löscht auch einen behaltenen Upload, sobald kein anderer Job ihn mehr liest. Löschen Sie einen Job, um seine Ergebnisse vor Ablauf der 24 Stunden zu entfernen.
Ein Dokumentjob liefert das geschwärzte PDF, den geschützten Text und die Entitäten. Ein Audiojob liefert das geschwärzte WAV, das geschützte Transkript und die Entitäten mit ihren Zeitangaben.
Grenzen
Die gehostete API wendet diese Grenzen an. Die Fähigkeiten liefern die Werte Ihrer Bereitstellung.
| Grenze | Standard | Echtzeit | Batch | Jobs |
|---|---|---|---|---|
| Eingaben pro Anfrage | 64 | 4 | 200 | 20.000 Zeilen |
| Zeichen pro Eingabe | 200.000 | 4.000 | 200.000 | 200.000 |
| Anfrage-Body | 12 MiB | 12 MiB | 12 MiB | 50-MB-Upload |
| Bild | 6 MiB | 4,2 Megapixel, 3 MiB | 6 MiB | Nicht angeboten |
| Audio | 5 Minuten, 12 MiB | Nicht angeboten | Nicht angeboten | 60 Minuten, 50 MB |
| Dokument | Nicht angeboten | Nicht angeboten | Nicht angeboten | PDF oder DOCX, 10 MB |
Eine Anfrage über einer Grenze antwortet mit 413 und wird nicht berechnet. Ihr Tarif legt die nutzbaren Stufen und die Anzahl der Anfragen pro Minute fest.
Stufen, Wiederholungen und Nutzung
| API-Stufe | Gewicht | Geeignet für |
|---|---|---|
| Standard | ×1 | Standardwert |
| Batch | ×0.5 | Halber Preis, niedrigste Priorität |
| Echtzeit | ×1.6 | Kleine Eingaben und geringe Latenz, ab Tarif Team |
- Senden Sie einen Idempotency-Key-Header, um sicher zu wiederholen. Eine Wiederholung mit demselben Schlüssel und Body wird einmal berechnet.
- Wiederherstellung, Sitzungen, Fähigkeiten, Typen und Nutzung sind kostenlos.
- Fehlgeschlagene Aufrufe werden nicht berechnet.
Fehler
Jeder Fehler hat einen Code, eine Meldung, die Anfrage-ID und die Angabe, ob eine Wiederholung gelingen kann. Validierungsfehler zeigen mit einem JSON Pointer auf das Feld und wiederholen nie Ihre Daten.
- Wiederholen Sie nur, wenn der Fehler angibt, dass eine Wiederholung gelingen kann, und warten Sie die Zeit im Retry-After-Header ab.
- Ein Fehler wegen einer Grenze nennt die Grenze. Bei Audio verweist er auf die Job-Route.
- Eine Option, die Ihre Bereitstellung noch nicht bedient, antwortet mit 501.