Référence de l'API PiiBlur
L'API PiiBlur met en file d'attente les tâches de rédaction asynchrones de PII pour les images et les vidéos. Téléchargez le média, interrogez l'état, puis téléchargez la sortie rédigée une fois le traitement terminé.
Le contrat OpenAPI 3.1 est disponible sur /openapi/v1.json.
Comment flouter les visages avec une API ?
- 1. Créez une clé API dans le tableau de bord PiiBlur et envoyez-la sous forme de jeton Bearer.
- 2. Téléchargez l'image ou la vidéo sur
/media/redactwithcategories[]=heads. - 3. Sondage
/media/{mediaId}ou configurez les webhooks, puis téléchargez le fichier rédigé une fois le traitement terminé.
URL de base
https://piiblur.com/api/v1Authentification
Toutes les requêtes API nécessitent une clé API Bearer dans la section API de votre tableau de bord.
curl https://piiblur.com/api/v1/media \ -H "Authorization: Bearer YOUR_API_KEY"Limites de taux
Les limites tarifaires varient selon le forfait. En cas de dépassement, l'API renvoie 429 Too Many Requests.
| Plan | Requêtes / minute |
|---|---|
| Gratuit | 60 |
| Démarreur | 120 |
| Pro | 300 |
| Échelle | 1,000 |
| Entreprise | Coutume |
Les forfaits avec compteur incluent des en-têtes de limite de débit standard sur les réponses API :
X-RateLimit-Limit- Requêtes maximales par minuteX-RateLimit-Remaining- Demandes restant dans la fenêtre actuelleX-RateLimit-Reset- Horodatage Unix lors de la réinitialisation de la fenêtreRetry-After- Quelques secondes à attendre avant de réessayer après une limite de débit429
Erreurs
Toutes les erreurs API JSON utilisent la même enveloppe et incluent un identifiant de demande pour la prise en charge et la corrélation des journaux.
{ "error": { "code": "validation_failed", "message": "The given data was invalid.", "details": { "file": ["The file field is required."] } }, "request_id": "req_abc123"}| Statut | Code commun |
|---|---|
| 401 | unauthorized |
| 404 | not_found |
| 409 | conflict |
| 422 | validation_failed |
| 429 | quota_exceeded ou rate_limit_exceeded |
| 500 | erreur_serveur |
POST /media/redact
Téléchargez un fichier et faites une file d'attente dans une requête en plusieurs parties. Le traitement est asynchrone.
En-têtes
| Nom | Type | Required | Description |
|---|---|---|---|
Authorization | string | Required | Bearer YOUR_API_KEY |
Idempotency-Key | string | Optional | Réutilisez la même clé lorsque vous réessayez le même téléchargement après une panne de réseau |
Paramètres
| Nom | Type | Required | Description |
|---|---|---|---|
file | file | Required | Le fichier image ou vidéo à expurger |
categories | chaîne[] | Required | Catégories PII à détecter. Valeurs : têtes, plaques d'immatriculation, écrans, écriture, panneaux de rue, cartes d'identité, passeports, cartes de crédit, badges nominatifs, codes QR, codes-barres, documents, tatouages. |
redaction_method | string | Optional | flou (par défaut) ou pixellisation |
Demande
curl -X POST https://piiblur.com/api/v1/media/redact \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Idempotency-Key: upload-2026-03-17-001" \ -F "categories[]=heads" \ -F "categories[]=license_plates" \ -F "redaction_method=blur"Réponse
{ "id": "9f1a2b3c-4d5e-6f7a-8b9c-0d1e2f3a4b5c", "status": "queued", "filename": "photo.jpg", "media_type": "image", "categories": ["heads", "license_plates"], "redaction_method": "blur", "file_size_bytes": 482391, "duration_seconds": null, "created_at": "2026-03-17T10:30:00+00:00", "processed_at": null, "failed_at": null}409 conflict. Les clés d'idempotence expirent après 24 heures.GET /media/{mediaId}
Obtenez le statut et les détails publics d'un élément multimédia.
curl https://piiblur.com/api/v1/media/9f1a2b3c-4d5e-6f7a-8b9c-0d1e2f3a4b5c \ -H "Authorization: Bearer YOUR_API_KEY"Réponse complétée
{ "id": "9f1a2b3c-4d5e-6f7a-8b9c-0d1e2f3a4b5c", "status": "completed", "filename": "photo.jpg", "media_type": "image", "categories": ["heads", "license_plates"], "redaction_method": "blur", "file_size_bytes": 482391, "duration_seconds": null, "created_at": "2026-03-17T10:30:00+00:00", "processed_at": "2026-03-17T10:30:15+00:00", "failed_at": null, "download_url": "https://piiblur.com/api/v1/media/9f1a2b3c-4d5e-6f7a-8b9c-0d1e2f3a4b5c/download"}download_url apparaît uniquement pour les médias terminés avec une sortie rédigée.GET /media/{mediaId}/download
Téléchargez le fichier expurgé traité. Retours 404 jusqu'à ce que le traitement soit terminé.
curl -O -J https://piiblur.com/api/v1/media/9f1a2b3c-4d5e-6f7a-8b9c-0d1e2f3a4b5c/download \ -H "Authorization: Bearer YOUR_API_KEY"GET /media
Répertoriez les médias avec des filtres facultatifs.
| Nom | Type | Required | Description |
|---|---|---|---|
status | string | Optional | en attente, en file d'attente, en cours de traitement, terminé, en échec ou quota_exceeded |
media_type | string | Optional | image ou vidéo |
page | integer | Optional | Numéro de page |
per_page | integer | Optional | Articles par page, maximum 100 |
{ "data": [ { "id": "9f1a2b3c-4d5e-6f7a-8b9c-0d1e2f3a4b5c", "status": "completed", "filename": "photo.jpg", "media_type": "image", "categories": ["heads", "license_plates"], "redaction_method": "blur", "file_size_bytes": 482391, "duration_seconds": null, "created_at": "2026-03-17T10:30:00+00:00", "processed_at": "2026-03-17T10:30:15+00:00", "failed_at": null, "download_url": "https://piiblur.com/api/v1/media/9f1a2b3c-4d5e-6f7a-8b9c-0d1e2f3a4b5c/download" } ], "pagination": { "page": 1, "per_page": 20, "total": 98, "total_pages": 5 }, "links": { "next": "https://piiblur.com/api/v1/media?page=2", "previous": null }}DELETE /media/{mediaId}
Supprimez un élément multimédia et tous les fichiers stockés qui lui sont associés. Retours 204 No Content.
GET /usage
Obtenez l'utilisation et les limites de la période de facturation actuelle.
{ "plan": "pro", "period_start": "2026-03-01", "period_end": "2026-03-31", "images": { "used": 1250, "limit": 25000 }, "video_minutes": { "used": 45, "limit": 60 }}Webhooks
Les webhooks informent votre serveur lorsque le traitement des médias est terminé, échoue ou lorsque le média source conservé est supprimé. Configurez les points de terminaison dans la section API de votre tableau de bord.
| Événement | Description |
|---|---|
| médias.traités | Traitement multimédia terminé |
| media.failed | Le traitement du média a échoué |
| media.source_deleted | Le média source conservé a été supprimé |
Vérification des signatures
Chaque demande de webhook comprend un X-PiiBlur-Signature en-tête contenant une signature HMAC-SHA256 du corps brut de la requête.
X-PiiBlur-Signature: sha256=HMAC_SHA256(payload, secret)Charge utile : media.processed
{ "id": "evt_2f6ad0f3-52a1-4ce6-b2e2-0f9bd07d4422", "event": "media.processed", "timestamp": "2026-03-17T10:30:15+00:00", "media_id": "9f1a2b3c-4d5e-6f7a-8b9c-0d1e2f3a4b5c", "status": "completed", "processed_at": "2026-03-17T10:30:15+00:00", "failed_at": null, "media": { "id": "9f1a2b3c-4d5e-6f7a-8b9c-0d1e2f3a4b5c", "status": "completed", "filename": "photo.jpg", "media_type": "image", "categories": ["heads", "license_plates"], "redaction_method": "blur", "file_size_bytes": 482391, "duration_seconds": null, "created_at": "2026-03-17T10:30:00+00:00", "processed_at": "2026-03-17T10:30:15+00:00", "failed_at": null, "download_url": "https://piiblur.com/api/v1/media/9f1a2b3c-4d5e-6f7a-8b9c-0d1e2f3a4b5c/download" }}Charge utile : media.failed
{ "id": "evt_52fd9716-1181-4a2f-b719-261b2ec3cb47", "event": "media.failed", "timestamp": "2026-03-17T10:30:15+00:00", "media_id": "9f1a2b3c-4d5e-6f7a-8b9c-0d1e2f3a4b5c", "status": "failed", "processed_at": null, "failed_at": "2026-03-17T10:30:15+00:00", "media": { "id": "9f1a2b3c-4d5e-6f7a-8b9c-0d1e2f3a4b5c", "status": "failed", "filename": "photo.jpg", "media_type": "image", "categories": ["heads", "license_plates"], "redaction_method": "blur", "file_size_bytes": 482391, "duration_seconds": null, "created_at": "2026-03-17T10:30:00+00:00", "processed_at": null, "failed_at": "2026-03-17T10:30:15+00:00" }}