Référence de l'API PiiBlur - API de rédaction d'images et de vidéos - PiiBlur
PiiBlur

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. 1. Créez une clé API dans le tableau de bord PiiBlur et envoyez-la sous forme de jeton Bearer.
  2. 2. Téléchargez l'image ou la vidéo sur /media/redact with categories[]=heads.
  3. 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/v1

Authentification

Toutes les requêtes API nécessitent une clé API Bearer dans la section API de votre tableau de bord.

bash
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.

PlanRequêtes / minute
Gratuit60
Démarreur120
Pro300
Échelle1,000
EntrepriseCoutume

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 minute
  • X-RateLimit-Remaining - Demandes restant dans la fenêtre actuelle
  • X-RateLimit-Reset - Horodatage Unix lors de la réinitialisation de la fenêtre
  • Retry-After - Quelques secondes à attendre avant de réessayer après une limite de débit 429

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.

json
{
"error": {
"code": "validation_failed",
"message": "The given data was invalid.",
"details": {
"file": ["The file field is required."]
}
},
"request_id": "req_abc123"
}
StatutCode commun
401unauthorized
404not_found
409conflict
422validation_failed
429quota_exceeded ou rate_limit_exceeded
500erreur_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

NomTypeRequiredDescription
AuthorizationstringRequiredBearer YOUR_API_KEY
Idempotency-KeystringOptionalRéutilisez la même clé lorsque vous réessayez le même téléchargement après une panne de réseau

Paramètres

NomTypeRequiredDescription
filefileRequiredLe fichier image ou vidéo à expurger
categorieschaîne[]RequiredCaté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_methodstringOptionalflou (par défaut) ou pixellisation

Demande

bash
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

json
{
"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
}
La taille maximale du fichier est de 1 Go. Les formats pris en charge sont jpg, jpeg, png, webp, mp4, mov et webm. La durée maximale de la vidéo est de 10 minutes. La réutilisation d'une clé d'idempotence avec une charge utile différente revient 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.

bash
curl https://piiblur.com/api/v1/media/9f1a2b3c-4d5e-6f7a-8b9c-0d1e2f3a4b5c \
-H "Authorization: Bearer YOUR_API_KEY"

Réponse complétée

json
{
"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é.

bash
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.

NomTypeRequiredDescription
statusstringOptionalen attente, en file d'attente, en cours de traitement, terminé, en échec ou quota_exceeded
media_typestringOptionalimage ou vidéo
pageintegerOptionalNuméro de page
per_pageintegerOptionalArticles par page, maximum 100
json
{
"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.

json
{
"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énementDescription
médias.traitésTraitement multimédia terminé
media.failedLe traitement du média a échoué
media.source_deletedLe 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.

text
X-PiiBlur-Signature: sha256=HMAC_SHA256(payload, secret)

Charge utile : media.processed

json
{
"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

json
{
"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"
}
}