Supprimez les filigranes en un seul appel d’API
Envoyez une image, récupérez-la propre — logos IA visibles et balises cachées supprimés. Vous n’êtes pas développeur ? Utilisez l’outil web gratuit.
Intégration simple
Un seul endpoint, aucun SDK nécessaire. L’essentiel :
Image source
Envoyez l’image en multipart/form-data (PNG, JPG ou WebP, jusqu’à 25 Mo).
Résultat
Les octets de l’image nettoyée sont renvoyés directement, avec un en-tête X-Unmarkr-Removed qui liste ce qui a été retiré.
Résolution
standard conserve la résolution d’origine, sans recompression. full reconstruit l’image et la renvoie en haute résolution.
Ce qui est supprimé
Logos visibles (comme l’étincelle de Gemini), balises IA cachées et filigrane invisible SynthID de Google.
Démarrer
- 1
Obtenez votre clé API
Créez une clé dans votre tableau de bord. Les appels d’API consomment des crédits — abonnez-vous (Basic/Pro/Creator) ou achetez un pack de crédits ponctuel.
- 2
Utilisez un exemple de code
Copiez l’un des exemples ci-dessous et insérez votre clé.
- 3
Consultez la référence
Vérifiez les paramètres, la réponse et les limites dans la section de référence.
Exemples de code
Envoyez un fichier image (remplacez unmarkr_live_xxx par votre clé) :
curl -X POST https://unmarkr.io/api/remove \
-H "Authorization: Bearer unmarkr_live_xxx" \
-F "image=@photo.png" \
-F "mode=standard" \
-o clean.pngSortie et résolution
L’image nettoyée est renvoyée dans le format envoyé. La résolution dépend de votre accès :
| Accès | Format | Résolution max. |
|---|---|---|
| Outil web gratuit | PNG / JPG / WebP | Aperçu (~0,25 MP) |
| API / HD (crédits) | PNG / JPG / WebP | Originale (standard) · haute résolution (full) |
Le PNG conserve la transparence et est sans perte ; JPG et WebP sont plus légers. Le format de sortie suit celui d’entrée.
Référence de l’API
Un seul endpoint nettoie une image. Envoyez-la en multipart/form-data, récupérez les octets nettoyés.
Endpoint
POST https://unmarkr.io/api/removeAuthentification
Envoyez votre clé secrète comme bearer token. Créez-en une dans votre tableau de bord et gardez-la côté serveur.
Authorization: Bearer unmarkr_live_xxxParamètres de la requête
Le corps est en multipart/form-data.
| Paramètre | Type | Obligatoire | Défaut | Description |
|---|---|---|---|---|
| image | file | Obligatoire | — | L’image à nettoyer — PNG, JPG ou WebP. |
| mode | string | Facultatif | standard | La suppression à lancer — standard ou full. Voir Modes ci-dessous. |
Modes
Choisissez standard (par défaut) ou full :
| mode | Supprime | Crédits | Renvoie |
|---|---|---|---|
| standard | Logos et badges visibles + balises IA cachées (C2PA, « Made with AI », EXIF/XMP). | 1 | Votre image nettoyée |
| full | Tout ce que fait standard, plus le filigrane invisible SynthID. | 4 | Une tâche à suivre |
standard renvoie immédiatement votre image nettoyée. full retire aussi le filigrane invisible SynthID de Google — c’est un peu plus long, il renvoie donc une tâche à suivre au lieu de l’image.
Suppression complète (suivi de la tâche)
Envoyez mode=full et vous recevez un 202 avec une tâche à suivre :
{ "jobId": "…", "status": "processing",
"poll": "/api/jobs/…", "result": "/api/jobs/…/result" }- 1. Interrogez
GET /api/jobs/<id>avec la même clé API jusqu’à ce questatusvailledone(en général bien moins d’une minute). - 2. Téléchargez l’image nettoyée via
GET /api/jobs/<id>/result. - 3. Si une suppression complète échoue, vos crédits sont remboursés automatiquement.
Réponse
Pour standard, 200 OK renvoie directement les octets de l’image nettoyée (même format que l’envoi, sans enveloppe JSON). Pour full, vous recevez un 202 avec le JSON de tâche ci-dessus. En cas d’erreur, le corps est un objet JSON — voir Erreurs et relances.
En-têtes de réponse
| En-tête | Description |
|---|---|
| Content-Type | Format de l’image nettoyée, identique à l’entrée (par ex. image/png). |
| X-Unmarkr-Removed | Liste, séparée par des virgules, de ce qui a été retiré, par ex. Gemini sparkle, metadata:c2pa. |
Crédits
standard coûte 1 crédit par image ; full coûte 4 crédits. Les crédits d’abonnement sont rechargés chaque mois ; les crédits achetés n’expirent jamais. Un 402 signifie que vous n’avez plus de crédits.
Format des erreurs
Les erreurs renvoient un corps JSON avec un message lisible error (et parfois un code exploitable par programme). Les messages de l’API sont en anglais :
{
"error": "Out of credits. Buy a credit pack or subscribe to continue.",
"code": "no_credits"
}Limite de débit
Les requêtes sont limitées par clé API (par défaut 60 par minute). Au-delà, l’API renvoie 429 Too Many Requests avec un en-tête Retry-After (secondes à attendre). Besoin de limites plus élevées ? Contactez-nous.
Erreurs et relances
| Statut | Signification |
|---|---|
| 401 | Clé API absente ou invalide. |
| 402 | Plus de crédits — achetez des crédits ou abonnez-vous. |
| 413 | L’image dépasse la limite de 25 Mo. |
| 429 | Limite de débit dépassée — attendez Retry-After secondes. |
| 503 | Suppression complète momentanément indisponible — essayez standard. |
| 5xx | Erreur temporaire du moteur — relancez avec un délai croissant. |
Délai exponentiel
Pour les erreurs 5xx, relancez avec des délais croissants (ne relancez pas un 429 immédiatement — respectez Retry-After) :
import time, requests
def remove(path, key, attempts=4):
for i in range(attempts):
r = requests.post(
"https://unmarkr.io/api/remove",
headers={"Authorization": f"Bearer {key}"},
files={"image": open(path, "rb")},
)
if r.status_code < 500:
return r
time.sleep(2 ** i) # 1s, 2s, 4s, 8s
r.raise_for_status()Prêt à vous lancer ?
Créez une clé et faites votre première requête en quelques minutes.
Obtenir une clé API