ShinrAIHébergé sur STACKIT

API PII native v2

Détecter, protéger et restaurer les données personnelles dans du texte, des tableaux, du JSON, des transcriptions, des images et des documents avec un seul contrat.

Un seul contrat pour chaque déploiement

Le même corps de requête fonctionne avec l’API hébergée, le bac à sable et une installation dans votre propre cluster. L’édition hors ligne sert l’API native v1 jusqu’à ce que son image inclue la v2. Les routes v1 et les contrats Azure, AWS et Google restent disponibles.

Commencer par les capacités

Lisez les capacités une fois au démarrage. Elles listent les modèles, langues, types d’entrée, niveaux et limites de votre déploiement.

export SHINRAI_API_KEY=shr_live_...
curl -s https://api.shinrai.innovius.io/v2/capabilities -H "Authorization: Bearer $SHINRAI_API_KEY"

Envoyer tout type d’entrée

Un texte simple n’a pas besoin d’enveloppe. Pour un fichier texte ou une image, envoyez le fichier lui-même comme corps de requête et placez les options dans la chaîne de requête.

EntréeComment l’envoyerRemarques
Texte{"text": "..."} ou text/plainEnvoyer du JSON ou le fichier brut
Tableaux"kind": "table"Colonnes et lignes
JSON"kind": "json"Toutes les chaînes de la valeur
Transcriptions"kind": "transcript"Formes et atomes de mots horodatés
Pages"kind": "page"Texte et cadres de mots issus de votre propre OCR ou de la couche texte du PDF
Imagesimage/png, image/jpeg, image/bmp, image/tiff, image/webpJusqu’à 6 Mio : OCR, cadres en pixels par entité et image caviardée
DocumentsPOST /v2/jobsPDF et DOCX via un job (bêta)
curl -s https://api.shinrai.innovius.io/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.shinrai.innovius.io/v2/protect?preset=label -H "Authorization: Bearer $SHINRAI_API_KEY" \
  -H "Content-Type: text/plain" -H "Accept: text/plain" --data-binary @letter.txt

Choisir le mode de protection

Un préréglage définit une politique pour tous les types. Les règles définissent une action par type.

ParamètreValeurs
Préréglagepseudonymize, mask, label, strict
Action par typesurrogate, label, mask, partial, generalize, replace, remove, keep
  • Pseudonymize écrit des substituts réalistes que vous pouvez restaurer.
  • Partial conserve ce qui n’identifie pas : le domaine de l’e-mail, l’indicatif pays du téléphone, les quatre derniers chiffres d’une carte ou d’un compte, l’année d’une date.
  • Generalize écrit une expression pour le type de nom, de lieu ou d’organisation, dans la langue de l’entrée.
  • Partial et generalize sont irréversibles.
curl -s https://api.shinrai.innovius.io/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"}]}}'

Contrôler la détection

  • Définissez un seuil de confiance pour tous les types, par type ou par langue.
  • Incluez ou excluez des types par leurs noms canoniques ou par les noms de Google, AWS, Azure ou Presidio.
  • Excluez les valeurs qui ne doivent jamais être signalées, comme le nom de votre entreprise, ou ajoutez vos propres valeurs.
  • Demandez des annotations : années, montants, références juridiques et termes de biais. Protect ne les modifie jamais.
  • Demandez le risque de liaison : une estimation de la probabilité qu’une entrée isole une personne. C’est une heuristique, pas un décompte.

Restaurer et conserver une table

Demandez la table de correspondance lorsque vous devez restaurer une réponse plus tard. Elle contient les valeurs d’origine. Stockez-la comme donnée applicative sensible et gardez-la hors des prompts du modèle.

curl -s https://api.shinrai.innovius.io/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.shinrai.innovius.io/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."}]}'
  • Au sein d’une requête, une valeur garde un seul substitut.
  • La requête suivante tire de nouveaux substituts : des requêtes répétées ne permettent donc pas de remonter des substituts aux originaux.
  • Pour garder les mêmes substituts entre les requêtes, utilisez une session ou envoyez les paires précédentes comme correspondances connues.
  • La cohérence à l’échelle du compte est disponible en option. Elle est plus faible : toute personne disposant de la clé peut alors constituer une table des originaux par répétition.
  • Les autres clients obtiennent toujours des substituts différents.

Une session conserve une table sur le serveur pendant 24 heures au maximum. La table est stockée chiffrée et seule votre clé peut la lire.

SESSION=$(curl -s -X POST https://api.shinrai.innovius.io/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.shinrai.innovius.io/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.shinrai.innovius.io/v2/sessions/$SESSION/mapping -H "Authorization: Bearer $SHINRAI_API_KEY"

Protéger captures d’écran et numérisations

  • L’OCR lit toutes les langues servies par le modèle. Indiquez la langue pour les images en arabe, hébreu, japonais et coréen.
  • Chaque entité revient avec des cadres en pixels, un par ligne de texte ou un par mot.
  • Protect renvoie l’image avec les zones remplies.
  • Le niveau temps réel accepte une image par requête, jusqu’à 4,2 mégapixels et 3 Mio.
curl -s "https://api.shinrai.innovius.io/v2/detect?language=de" -H "Authorization: Bearer $SHINRAI_API_KEY" \
  -H "Content-Type: image/png" --data-binary @screenshot.png
curl -s https://api.shinrai.innovius.io/v2/protect -H "Authorization: Bearer $SHINRAI_API_KEY" \
  -H "Content-Type: image/png" -H "Accept: image/png" --data-binary @screenshot.png -o redacted.png

Exécuter les gros lots et les documents en jobs

Utilisez un job lorsque le travail est trop volumineux pour une requête : de nombreux textes, ou un fichier PDF ou Word. Un job s’exécute en arrière-plan au poids du lot et conserve ses résultats pendant 24 heures. Les jobs sont en bêta.

  1. Téléversez un fichier JSONL avec une entrée par ligne, ou un fichier PDF ou DOCX.
  2. Lancez le job avec l’ID du téléversement.
  3. Interrogez le job et téléchargez les artefacts.
{"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.shinrai.innovius.io/v2/uploads \
  -H "Authorization: Bearer $SHINRAI_API_KEY" \
  -H "Content-Type: application/x-ndjson" \
  --data-binary @rows.jsonl
curl -s https://api.shinrai.innovius.io/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.shinrai.innovius.io/v2/jobs/$JOB -H "Authorization: Bearer $SHINRAI_API_KEY"

Un job de document protège le texte du document. Le PDF caviardé et ses cadres de mots arriveront dans une version ultérieure.

Niveaux, nouvelles tentatives et consommation

NiveauPoidsIdéal pour
Standard×1Par défaut
Batch×0.5Moitié prix, priorité la plus basse
Temps réel×1.6Petites entrées et faible latence, à partir de l’offre Team
  • Envoyez un en-tête Idempotency-Key pour réessayer sans risque. Une répétition avec la même clé et le même corps n’est facturée qu’une fois.
  • La restauration, les sessions, les capacités, les types et la consommation sont gratuits.
  • Les appels en échec ne sont pas facturés.
curl -s https://api.shinrai.innovius.io/v2/usage -H "Authorization: Bearer $SHINRAI_API_KEY"

Prochainement

L’entrée audio et le streaming sont prévus pour l’API native v2. Ils ne sont pas encore disponibles.

Référence