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.
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ée | Comment l’envoyer | Remarques |
|---|---|---|
| Texte | {"text": "..."} ou text/plain | Envoyer 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 |
| Images | image/png, image/jpeg, image/bmp, image/tiff, image/webp | Jusqu’à 6 Mio : OCR, cadres en pixels par entité et image caviardée |
| Documents | POST /v2/jobs | PDF 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 'https://azure.api.shinrai.innovius.io/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"}}'Les API de compatibilité limitent ce que ShinrAI peut renvoyer. Pour une qualité complète, utilisez l’API PII native v2.
# Once: create SigV4 credentials with your ShinrAI key
# curl -X POST https://aws.api.shinrai.innovius.io/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.shinrai.innovius.io",
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"))Les API de compatibilité limitent ce que ShinrAI peut renvoyer. Pour une qualité complète, utilisez l’API PII native v2.
curl 'https://google.api.shinrai.innovius.io/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}}'Les API de compatibilité limitent ce que ShinrAI peut renvoyer. Pour une qualité complète, utilisez l’API PII native v2.
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ètre | Valeurs |
|---|---|
| Préréglage | pseudonymize, mask, label, strict |
| Action par type | surrogate, 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"]}}'# Azure returns the masked text as redactedText.
curl 'https://azure.api.shinrai.innovius.io/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"}}'Les API de compatibilité limitent ce que ShinrAI peut renvoyer. Pour une qualité complète, utilisez l’API PII native v2.
curl 'https://google.api.shinrai.innovius.io/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":{}}}]}}}'Les API de compatibilité limitent ce que ShinrAI peut renvoyer. Pour une qualité complète, utilisez l’API PII native v2.
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.
- Téléversez un fichier JSONL avec une entrée par ligne, ou un fichier PDF ou DOCX.
- Lancez le job avec l’ID du téléversement.
- 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
| Niveau | Poids | Idéal pour |
|---|---|---|
| Standard | ×1 | Par défaut |
| Batch | ×0.5 | Moitié prix, priorité la plus basse |
| Temps réel | ×1.6 | Petites 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.