Unmarkr logoUnmarkr
API développeurs

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

    Utilisez un exemple de code

    Copiez l’un des exemples ci-dessous et insérez votre clé.

  3. 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.png

Sortie et résolution

L’image nettoyée est renvoyée dans le format envoyé. La résolution dépend de votre accès :

AccèsFormatRésolution max.
Outil web gratuitPNG / JPG / WebPAperçu (~0,25 MP)
API / HD (crédits)PNG / JPG / WebPOriginale (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/remove

Authentification

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_xxx

Paramètres de la requête

Le corps est en multipart/form-data.

ParamètreTypeObligatoireDéfautDescription
imagefileObligatoire—L’image à nettoyer — PNG, JPG ou WebP.
modestringFacultatifstandardLa suppression à lancer — standard ou full. Voir Modes ci-dessous.

Modes

Choisissez standard (par défaut) ou full :

modeSupprimeCréditsRenvoie
standardLogos et badges visibles + balises IA cachées (C2PA, « Made with AI », EXIF/XMP).1Votre image nettoyée
fullTout ce que fait standard, plus le filigrane invisible SynthID.4Une 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. 1. Interrogez GET /api/jobs/<id> avec la même clé API jusqu’à ce que status vaille done (en général bien moins d’une minute).
  2. 2. Téléchargez l’image nettoyée via GET /api/jobs/<id>/result.
  3. 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êteDescription
Content-TypeFormat de l’image nettoyée, identique à l’entrée (par ex. image/png).
X-Unmarkr-RemovedListe, 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

StatutSignification
401Clé API absente ou invalide.
402Plus de crédits — achetez des crédits ou abonnez-vous.
413L’image dépasse la limite de 25 Mo.
429Limite de débit dépassée — attendez Retry-After secondes.
503Suppression complète momentanément indisponible — essayez standard.
5xxErreur 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