Seedance 2.5 is live — 30-second cinematic video with native audio & real-person references
Suppression d'arrière-plan : tarif réel par image utilisable
2026/09/03

Suppression d'arrière-plan : tarif réel par image utilisable

Calculer le coût réel d'une API de suppression d'arrière-plan à partir du tarif de 88 crédits en incluant sorties rejetées, tentatives, stockage et révision.

image: https://cdn.reapi.ai/media/blog/background-removal-api-pricing/hero.png author: reapi-team categories:

  • guides published: true

Le tarif actuel de l'API de suppression d'arrière-plan pour mj-v7-remove-bg est de 88 crédits, soit $0,088 par requête complétée, vérifié le 3 septembre 2026. C'est le bon point de départ pour un budget de requête. Ce n'est pas automatiquement le coût d'une découpe utilisable.

Une image complétée peut toujours avoir un halo, perdre une ouverture de poignée, aplatir une ombre ou arriver dans un format que le service suivant ne peut pas accepter. Ce guide montre comment appeler la route, l'interroger en toute sécurité, vérifier les frais réglés et calculer le coût par image qui passe réellement la révision.

Résumé

  • L'estimateur en direct a retourné 88 crédits ($0,088) par requête mj-v7-remove-bg complétée le 3 septembre 2026. Un crédit vaut $0,001.[1]
  • La requête prend exactement une URL HTTP(S) publique. Elle ne prend pas de texte descriptif, de résolution, de vitesse ou d'ID de tâche parent.[2]
  • L'opération est asynchrone : soumettre une fois, enregistrer l'ID de tâche retourné et interroger le point de terminaison de la tâche. L'interrogation ne consomme pas de crédits.[3]
  • Budgétez en divisant coût total réglé / sorties acceptées, pas le nombre de fichiers soumis. Avec un taux d'acceptation de 80 %, une requête à $0,088 devient $0,11 par image utilisable.
  • Une tâche échouée avec usage.credits: 0 a été remboursée. Un résultat complété que votre équipe rejette pour des bords imparfaits était quand même du travail complété ; incluez-le dans votre calcul des images acceptées.[3]
  • Effectuez un petit test prélevé dans votre propre catalogue avant de vous engager sur des volumes. Une photographie de produit propre n'en dit pas long sur les cheveux, le verre, le faible contraste ou les objets avec des trous.

Pourquoi le prix affiché est rarement le chiffre utile

Si votre application retire l'arrière-plan de milliers d'images importées, comment comparer les services lorsque le prix, la qualité des contours, le temps de réponse, la résolution et la remise des fichiers influencent tous le résultat ? Le tarif affiché ne suffit pas à répondre. Le calcul utile est plus précis :

coût par image utilisable = coût API total réglé / images qui passent la révision

Ce dénominateur change la décision. Un point de terminaison bon marché qui endommage les bords fins peut coûter plus cher qu'un prix plus élevé une fois les réitérations et le nettoyage manuel inclus.

Ce que le prix actuel de l'API de suppression d'arrière-plan achète

La page du modèle Midjourney V7 en direct répertorie Remove BG comme une édition légère. L'estimation de requête actuelle se règle en crédits entiers, et l'estimation en direct pour la charge utile requise est de 88 crédits.[1]Puisqu'un crédit vaut $0,001, utilisez $0,088 dans un budget.

RequêtesSous-total API à 88 créditsCe que le nombre suppose
1$0,088Une requête de suppression complétée
10$0,88Dix requêtes complétées, avant examen d'acceptation
100$8,80Aucune sortie complétée rejetée
1 000$88,00Aucun coût de stockage, révision ou transformation
10 000$880,00Même taux et taux de sortie acceptée de 100 %

Vous pouvez voir l'opération affichée à $0,0873 dans un libellé de prix détaillé. N'utilisez pas ce chiffre fractionnaire pour réconcilier un solde de crédit. Le tableau des prix publics et l'estimateur affichent l'unité payable comme 88 crédits entiers, ou $0,088. Vérifiez la page du modèle en direct avant une grande exécution car les tarifs peuvent changer.

Le sous-total API exclut le travail autour de l'appel :

  • héberger la source sur une URL que le service peut récupérer ;
  • télécharger et stocker le résultat ;
  • valider la transparence, les dimensions et la compatibilité des fichiers ;
  • révision humaine ou vérifications de qualité automatisées ;
  • sorties complétées qui ne respectent pas vos règles d'acceptation ;
  • redimensionnement, correction des couleurs, reconstruction des ombres ou compositage ultérieur.

Pour un prototype, ces coûts peuvent être négligeables. À l'échelle du catalogue, ils appartiennent à la même feuille de calcul que le poste API.

Une URL source, pas de texte descriptif et pas de tâche parent

mj-v7-remove-bg est plus simple que les autres opérations d'édition Midjourney V7. Il ne s'enchaîne pas à partir d'une génération précédente. Envoyez l'image que vous avez déjà dans image_urls.[2]

ChampObligatoireValeur acceptée
modelouimj-v7-remove-bg
image_urlsouiUn tableau contenant exactement une URL d'image HTTP(S) publique
promptnon acceptéNe l'envoyez pas
model_paramsnon acceptéPas de vitesse, d'ID de tâche ou d'options d'édition
size / resolutionnon acceptéLa route n'expose aucun contrôle de taille de sortie

Le schéma est strict. L'ajout de champs copiés à partir d'un autre modèle d'image n'est pas une non-opération inoffensive ; cela invalide la requête. Les chaînes base64, les URL data:, les chemins locaux et les liens navigateur authentifiés uniquement sont aussi les mauvaises entrées. Téléchargez la source vers le stockage que vous contrôlez et confirmez qu'elle se charge sans cookie ni connexion.

Voici la requête cURL complète :

curl https://reapi.ai/api/v1/images/generations \
  -H "Authorization: Bearer $REAPI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "mj-v7-remove-bg",
    "image_urls": [
      "https://your-cdn.example/catalog/source-product.png"
    ]
  }'

Une soumission valide retourne un enregistrement de tâche dans l'état processing. Enregistrez son id. L'image finale n'arrive pas dans la réponse POST.

Soumettre une fois, puis interroger avec une échéance

L'implémentation la plus sûre pour les débutants a deux actions distinctes : un POST qui crée le travail, suivi de requêtes GET délimitées qui lisent son état. Ne mettez pas le POST à l'intérieur de la boucle d'interrogation.

Cet exemple Node.js interroge toutes les 2,5 secondes et utilise une échéance locale de 15 minutes. La référence de tâche recommande un taux de deux à trois secondes et explique que les lectures de tâche en cours sont mises en cache, donc une interrogation plus rapide ajoute une pression de requête sans faire terminer l'image plus tôt.[3]

const API_BASE = 'https://reapi.ai/api/v1';
const API_KEY = process.env.REAPI_API_KEY;
const sourceUrl = process.argv[2];

if (!API_KEY) throw new Error('Set REAPI_API_KEY');
if (!sourceUrl) throw new Error('Pass one public source image URL');

const headers = {
  Authorization: `Bearer ${API_KEY}`,
  'Content-Type': 'application/json',
};

async function readJson(response) {
  const body = await response.json();
  if (!response.ok) {
    const code = body.error?.code ?? response.status;
    const message = body.error?.message ?? 'Request failed';
    throw new Error(`${code}: ${message}`);
  }
  return body;
}

const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));

async function getTask(taskId) {
  for (let attempt = 0; attempt < 4; attempt += 1) {
    let response;
    try {
      response = await fetch(`${API_BASE}/tasks/${taskId}`, {
        headers: { Authorization: `Bearer ${API_KEY}` },
        signal: AbortSignal.timeout(15_000),
      });
    } catch (error) {
      if (attempt === 3) throw error;
      await sleep(1000 * 2 ** attempt);
      continue;
    }

    if (response.status === 429) {
      const seconds = Number(response.headers.get('retry-after'));
      await response.body?.cancel();
      await sleep(Number.isFinite(seconds) ? seconds * 1000 : 5000);
      continue;
    }

    if ([502, 503, 504].includes(response.status)) {
      await response.body?.cancel();
      await sleep(1000 * 2 ** attempt);
      continue;
    }

    return readJson(response);
  }

  throw new Error(`Task ${taskId} could not be read after transient errors`);
}

async function removeBackground(imageUrl) {
  const submitted = await readJson(
    await fetch(`${API_BASE}/images/generations`, {
      method: 'POST',
      headers,
      body: JSON.stringify({
        model: 'mj-v7-remove-bg',
        image_urls: [imageUrl],
      }),
      signal: AbortSignal.timeout(30_000),
    })
  );

  const deadline = Date.now() + 15 * 60 * 1000;

  while (Date.now() < deadline) {
    await sleep(2500);
    const task = await getTask(submitted.id);

    if (task.status === 'completed') {
      const urls = task.output?.image_urls ?? [];
      if (urls.length === 0) {
        throw new Error('Task completed without an image URL');
      }
      return {
        taskId: task.id,
        imageUrls: urls,
        credits: task.usage?.credits,
      };
    }

    if (task.status === 'failed') {
      const code = task.error?.code ?? 'UNKNOWN_TASK_ERROR';
      const message = task.error?.message ?? 'Background removal failed';
      const credits = task.usage?.credits ?? 'unknown';
      throw new Error(
        `${code}: ${message}; task=${task.id}; settled_credits=${credits}`
      );
    }
  }

  throw new Error(`Polling deadline reached for task ${submitted.id}`);
}

removeBackground(sourceUrl)
  .then(console.log)
  .catch((error) => {
    console.error(error.message);
    process.exitCode = 1;
  });

Exécutez-le avec :

REAPI_API_KEY=rk_live_xxx node remove-background.mjs \
  https://your-cdn.example/catalog/source-product.png

En production, écrivez l'ID de tâche dans votre base de données avant de retourner du gestionnaire de soumission. Un worker peut alors reprendre l'interrogation après un redémarrage de processus. Conservez la clé API sur le serveur ; ne la placez jamais dans le JavaScript du navigateur ou dans un ensemble d'applications mobiles.

Ce que coûte réellement une requête en direct défaillante

Nous avons soumis une requête mj-v7-remove-bg en vérifiant ce guide le 3 septembre 2026, en utilisant une photographie de tasse de notre collection. L'API a accepté la charge utile stricte comme tâche task_01a065b32dbe771eb5babd28de9b38d9, mais elle s'est ensuite terminée dans l'état failed avec le code d'erreur 80003 et le message Service authentication failed. Elle n'a retourné aucune sortie et usage.credits: 0, de sorte que son coût réglé était de $0, pas $0,088.

Nous n'avons pas renvoyé la requête inchangée juste pour fabriquer un exemple réussi. Cette seule exécution confirme la tâche et le chemin de remboursement ; elle ne dit rien sur la qualité de la découpe, le type de fichier, les dimensions, le support alpha ou le temps de completion normal. Le chiffre de 88 crédits ci-dessus reste l'estimation en direct pour une requête qui se termine. Lisez toujours la tâche terminale au lieu de multiplier le nombre de soumissions par le taux annoncé.[3]

Transformer le prix de la requête en coût par image utilisable

Commencez par une règle d'acceptation, pas un pourcentage que vous espérez atteindre. Mesurez ensuite le pourcentage sur un échantillon de la charge de travail que vous avez l'intention d'expédier.

Entonnoir des coûts de l'API de suppression d'arrière-plan allant des requêtes soumises à travers la révision de découpe aux images acceptées

Si chaque requête complétée produit un candidat, l'équation de planification est :

coût par image utilisable = $0,088 / taux d'acceptation

Le tableau ci-dessous contient des scénarios, pas la qualité du modèle mesuré :

Taux d'acceptation supposéRequêtes pour 1 000 images acceptéesSous-total APICoût par image utilisable
100 %1 000$88,000$0,0880
95 %1 053$92,664$0,0927
90 %1 112$97,856$0,0979
80 %1 250$110,000$0,1100
50 %2 000$176,000$0,1760

Utilisez les données de tâches réglées pour le numérateur. La réponse de tâche expose usage.credits dans chaque état. processing plus zéro signifie que la facturation ne s'est pas encore réglée. completed affiche les crédits facturés. failed plus zéro signifie que la réservation a été remboursée ; une valeur positive signifie qu'une charge documentée a été conservée.[3]

Cette distinction évite deux erreurs de comptabilité. Ne comptabilisez pas l'échec rembourré d'un fournisseur comme sortie payée, et n'effacez pas une découpe complétée mais laide de vos dépenses. Elle consommait toujours une requête payée.

Décidez ce que signifie « utilisable » avant le test

Un coup d'œil visuel est trop vague pour un test reproductible. Écrivez une courte rubrique avant de soumettre l'échantillon, puis appliquez les mêmes vérifications à chaque résultat.

Transparence et intégrité des bords

Ouvrez le fichier téléchargé dans un outil qui affiche un damier alpha. Un arrière-plan blanc n'est pas la transparence. Inspectez l'ensemble de la silhouette à 100 % et 400 % de zoom pour les halos blanc ou foncé, les pixels manquants et les morceaux de l'ancien arrière-plan.

Trous, détails fins et matériaux difficiles

Incluez des exemples avec des ouvertures de poignées, des bretelles, des rayons, des cheveux détachés, de la fourrure et du feuillage. Ajoutez du verre, de l'emballage translucide, du métal brillant et des bords de sujets à faible contraste s'ils apparaissent dans votre vrai catalogue. Un modèle qui passe une tasse sombre sur blanc peut toujours échouer une bouteille claire ou un objet pâle sur beige.

Détails du produit et ombres

Confirmez que les étiquettes, le texte imprimé, les minces accessoires et le contour du produit n'ont pas changé. Décidez si une ombre de contact doit être conservée, adoucie ou supprimée. Les différentes destinations nécessitent différentes réponses, donc « ombre supprimée » n'est pas automatiquement une réussite.

Contrat de fichier

Enregistrez le type MIME, l'extension, la largeur, la hauteur, la taille en octets, la présence d'alpha et le nombre d'URL retournées. Le contrat public retourne output.image_urls, mais il ne promet pas une extension spécifique ou une taille de pixel pour cette opération. Testez le vrai fichier contre l'API suivante, l'outil de conception ou le tiers importateur du marché dans votre pipeline.

Un pilot utile est suffisamment grand pour représenter les cas difficiles, pas seulement les faciles. Dix à trente images en votre possession peuvent exposer des incompatibilités évidentes. Un benchmark d'approvisionnement final doit suivre la distribution de votre catalogue réel.

Retenter les échecs sans créer une boucle de coût

Les règles de nouvelle tentative doivent utiliser l'erreur, pas la frustration. La référence d'erreur publique sépare l'entrée invalide, l'authentification, le solde insuffisant, les limites de taux, les défaillances de capacité et les défaillances de flux de travail terminales.[4]

RésultatQuoi faire
HTTP 400, 401, 402, ou 404Corrigez la requête, les identifiants, le solde ou l'ID de tâche. Ne répétez pas inchangé.
HTTP 429Attendez Retry-After, puis réessayez la même lecture ou l'opération sûre.
HTTP 502, 503, ou 504Retrait exponentiel et limite des tentatives.
Tâche failedLisez error.code et usage.credits avant de décider de soumettre à nouveau.
Tâche completed, QA échouéeChangez la source ou routez l'image vers le nettoyage manuel ; limitez les nouveaux essais payants.

Gardez l'action de soumission en dehors des nouvelles tentatives d'interrogation automatique. Une fois qu'un POST retourne un ID de tâche, chaque vérification ultérieure doit être un GET pour cette tâche. Pour une image complétée qui échoue votre rubrique, une deuxième requête identique peut reproduire le même problème de bord. La modification du rognage d'entrée, du contraste ou du prétraitement est plus utile qu'une réitération sans limite.

Téléchargez les fichiers acceptés vers votre propre stockage dès que la tâche se termine. La documentation de tâche indique que les URL de sortie sont réhébergées sur le CDN, mais ne garantit pas la rétention à long terme.[3]

Route hébergée par rapport à une API Midjourney officielle

mj-v7-remove-bg est une route hébergée exposée via reAPI. Elle ne doit pas être décrite comme l'API publique officielle de Midjourney. Les directives communautaires actuelles de Midjourney stipulent qu'il ne fournit généralement pas d'API et interdit l'automatisation non autorisée sauf pour les rares cas explicitement accordés.[5]

Cette distinction est importante lors de l'approvisionnement. Examinez le propre contrat du service hébergé et les conditions d'utilisation acceptable au lieu de supposer qu'une étiquette de modèle crée une relation de fournisseur officielle. Le guide distinct Midjourney a-t-il une API ? couvre cette question en détail ; cet article reste concentré sur la route appelable et son coût.

FAQ

mj-v7-remove-bg a-t-il besoin d'une tâche Midjourney précédente ?

Non. C'est une édition d'image directe. Passez une URL d'image publique dans image_urls ; n'envoyez pas task_id ou model_params.[2]

Puis-je envoyer une image base64 ?

Non. Le schéma de requête accepte une URL HTTP(S) publique. Téléchargez d'abord le fichier, puis envoyez une URL que le service peut récupérer sans votre session de navigateur.

Le prix actuel est-il $0,0873 ou $0,088 ?

Utilisez $0,088 pour les estimations de facturation. L'opération peut apparaître comme $0,0873 dans un affichage détaillé, mais l'estimateur en direct retourne 88 crédits entiers et un crédit vaut $0,001.[1]

Une requête retourne-t-elle quatre images sans arrière-plan ?

Ne budgétez pas sur cette hypothèse. Quatre images par requête décrit la génération Midjourney V7 de base. Le contrat Remove BG direct prend une image source et retourne un tableau d'URL d'image, mais il ne promet pas quatre découpes. Inspectez la longueur du tableau de la tâche terminale dans votre pilot.[2]

L'API retourne-t-elle toujours un PNG transparent ?

Le contrat public actuel promet des URL d'image, pas une extension particulière, un type MIME ou une garantie de canal alpha. Téléchargez un vrai résultat et vérifiez alpha avant de construire un flux de travail PNG uniquement.

L'interrogation coûte-t-elle des crédits ?

Non. Interroger une tâche ne consomme pas de crédits. Interrogez toutes les deux à trois secondes et arrêtez-vous à une échéance qui convient à votre application.[3]

Les tâches de suppression d'arrière-plan échouées sont-elles facturées ?

Lisez usage.credits sur la tâche terminale. Une tâche échouée avec zéro crédit a été entièrement remboursée. Le contrat de tâche générique permet une charge positive conservée dans certains cas de sécurité spécifiques au modèle, ne déduisez donc pas la facture à partir de l'état seul.[3]

Combien coûteront 1 000 images utilisables ?

Avec un taux d'acceptation de 100 %, 1 000 requêtes coûtent $88 au taux actuel. Avec un taux d'acceptation de 80 %, atteindre 1 000 fichiers utilisables nécessite 1 250 requêtes et coûte $110, avant le stockage et la révision. Remplacez le taux supposé par votre pilot mesuré.

Choisissez selon le coût par image acceptée, pas selon le prix affiché

Le tarif actuel de l'API de suppression d'arrière-plan est simple au niveau de la requête : 88 crédits, soit 0,088 $. La décision de production commence ensuite. Testez les contours et le contrat de fichier dont votre application a réellement besoin, relevez l'utilisation facturée pour chaque tâche, puis divisez la dépense totale par le nombre de sorties qui respectent une grille fixe.

Commencez par la référence de l'API Midjourney V7, lancez un petit pilote avec vos propres images et gardez la référence sur l'interrogation des tâches à portée de votre implémentation. Vous obtiendrez ainsi un coût défendable par image utilisable, plutôt qu'un prix de manchette non vérifié.

Références

  1. reAPI. Midjourney V7 model page and live pricing. Retrieved September 3, 2026 from reapi.ai/models/midjourney-v7
  2. reAPI. Midjourney V7 API reference. Retrieved September 3, 2026 from reapi.ai/docs/midjourney-v7
  3. reAPI. Tasks: polling, usage, output, and refund semantics. Retrieved September 3, 2026 from reapi.ai/docs/api/tasks
  4. reAPI. API error codes and retry guidance. Retrieved September 3, 2026 from reapi.ai/docs/api/errors
  5. Midjourney. Community Guidelines: unauthorized automation and third-party apps. Retrieved September 3, 2026 from docs.midjourney.com/hc/en-us/articles/32013696484109-Community-Guidelines