/api/v1/outils-ia/generer-description-produitAPI Générateur de description produit
Rédige une à trois variantes de fiche produit e-commerce à partir du nom et des caractéristiques du produit.
Tapez au moins 2 caractères pour lancer la recherche.
Présentation
Cet endpoint transforme une liste de caractéristiques en descriptions commerciales soignées, dans le ton et la longueur de votre choix, avec plusieurs variantes à comparer.
Un modèle de langage hébergé par Websource rédige les descriptions à partir des informations fournies, sans en inventer d'autres. Vous choisissez le ton (professionnel, chaleureux, luxueux, fun, technique), la longueur (courte ≈ 50 mots, standard ≈ 120, détaillée ≈ 250) et le nombre de variantes (1 à 3). La réponse est une liste de textes, un par variante.
Pour enrichir un catalogue e-commerce (PrestaShop, WooCommerce, Shopify…), produire des fiches produit en masse depuis un fichier fournisseur, ou tester plusieurs tonalités avant de choisir. Relisez les descriptions : elles reposent uniquement sur les caractéristiques que vous avez fournies.
Utilisation pas à pas
- 1Envoyez le name (2 à 150 caractères) et les features (10 à 2 000 caractères).
- 2Ajoutez si besoin category, audience, tone, length et variantCount.
- 3Récupérez les variantes dans descriptions et choisissez celle qui convient.
Limites à connaître
- Nom de 2 à 150 caractères, caractéristiques de 10 à 2 000, catégorie jusqu'à 100, public jusqu'à 200.
- Traitement synchrone : prévoyez un délai d'attente généreux, plus long avec plusieurs variantes.
Endpoint et authentification
Chaque requête porte votre jeton dans l'en-tête Authorization, et le corps est envoyé en JSON (Content-Type: application/json). Le jeton est gratuit, sur demande depuis votre compte (formulaire en bas de page).
Authorization: Bearer VOTRE_JETONParamètres du corps (JSON)
| Paramètre | Type | Requis | Description |
|---|---|---|---|
| name | string | Requis | Nom du produit (2 à 150 caractères). |
| category | string | Optionnel | Catégorie du produit (100 caractères max). |
| features | string | Requis | Caractéristiques principales (10 à 2 000 caractères). |
| audience | string | Optionnel | Public cible (200 caractères max). |
| tone | string | Optionnel | 'professionnel', 'chaleureux', 'luxueux', 'fun' ou 'technique' — défaut 'professionnel'. |
| length | string | Optionnel | 'courte' (~50 mots), 'standard' (~120 mots) ou 'detaillee' (~250 mots) — défaut 'standard'. |
| variantCount | int | Optionnel | 1, 2 ou 3 — défaut 2. |
Exemples de code
Le même appel en plusieurs langages. Remplacez VOTRE_JETON par le jeton reçu par e-mail et gardez-le côté serveur (variable d'environnement), jamais dans un dépôt public.
curl -X POST https://www.websource.fr/api/v1/outils-ia/generer-description-produit \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{"name":"Sac à dos Aventure 30L","category":"Bagagerie","features":"Imperméable, 30 litres, dos ventilé, compartiment ordinateur 15 pouces","tone":"chaleureux","length":"standard","variantCount":2}'<?php
$ch = curl_init('https://www.websource.fr/api/v1/outils-ia/generer-description-produit');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 60,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer VOTRE_JETON',
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode([
'name' => 'Sac à dos Aventure 30L',
'category' => 'Bagagerie',
'features' => 'Imperméable, 30 litres, dos ventilé, compartiment ordinateur 15 pouces',
'tone' => 'chaleureux',
'length' => 'standard',
'variantCount' => 2,
], JSON_UNESCAPED_UNICODE),
]);
$response = json_decode(curl_exec($ch), true);
curl_close($ch);
print_r($response);
import requests
response = requests.post(
"https://www.websource.fr/api/v1/outils-ia/generer-description-produit",
headers={"Authorization": "Bearer VOTRE_JETON"},
json={
"name": "Sac à dos Aventure 30L",
"category": "Bagagerie",
"features": "Imperméable, 30 litres, dos ventilé, compartiment ordinateur 15 pouces",
"tone": "chaleureux",
"length": "standard",
"variantCount": 2
},
timeout=60,
)
print(response.json())
// Node.js 18+ (fetch natif)
const response = await fetch("https://www.websource.fr/api/v1/outils-ia/generer-description-produit", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.WEBSOURCE_API_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"name": "Sac à dos Aventure 30L",
"category": "Bagagerie",
"features": "Imperméable, 30 litres, dos ventilé, compartiment ordinateur 15 pouces",
"tone": "chaleureux",
"length": "standard",
"variantCount": 2
}),
});
const data = await response.json();
console.log(data);
// ⚠️ Ne placez jamais votre jeton dans du code exécuté dans le navigateur.
// Appelez l'API depuis votre serveur (route API Next.js, Express…) et
// laissez React appeler cette route : ici "/api/websource/generer-description-produit".
import { useState } from "react";
export default function GenererDescriptionProduit() {
const [result, setResult] = useState(null);
const [loading, setLoading] = useState(false);
async function run() {
setLoading(true);
const response = await fetch("/api/websource/generer-description-produit", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
"name": "Sac à dos Aventure 30L",
"category": "Bagagerie",
"features": "Imperméable, 30 litres, dos ventilé, compartiment ordinateur 15 pouces",
"tone": "chaleureux",
"length": "standard",
"variantCount": 2
}),
});
setResult(await response.json());
setLoading(false);
}
return (
<div>
<button onClick={run} disabled={loading}>
{loading ? "Traitement…" : "Lancer"}
</button>
{result && <pre>{JSON.stringify(result, null, 2)}</pre>}
</div>
);
}
require "net/http"
require "json"
uri = URI("https://www.websource.fr/api/v1/outils-ia/generer-description-produit")
request = Net::HTTP::Post.new(uri)
request["Authorization"] = "Bearer VOTRE_JETON"
request["Content-Type"] = "application/json"
request.body = <<~JSON
{
"name": "Sac à dos Aventure 30L",
"category": "Bagagerie",
"features": "Imperméable, 30 litres, dos ventilé, compartiment ordinateur 15 pouces",
"tone": "chaleureux",
"length": "standard",
"variantCount": 2
}
JSON
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|
http.request(request)
end
puts JSON.parse(response.body)
package main
import (
"bytes"
"fmt"
"io"
"net/http"
)
func main() {
payload := []byte(`{"name":"Sac à dos Aventure 30L","category":"Bagagerie","features":"Imperméable, 30 litres, dos ventilé, compartiment ordinateur 15 pouces","tone":"chaleureux","length":"standard","variantCount":2}`)
req, _ := http.NewRequest("POST", "https://www.websource.fr/api/v1/outils-ia/generer-description-produit", bytes.NewBuffer(payload))
req.Header.Set("Authorization", "Bearer VOTRE_JETON")
req.Header.Set("Content-Type", "application/json")
res, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}
using System.Net.Http;
using System.Text;
using var client = new HttpClient();
client.DefaultRequestHeaders.Add("Authorization", "Bearer VOTRE_JETON");
var json = """
{
"name": "Sac à dos Aventure 30L",
"category": "Bagagerie",
"features": "Imperméable, 30 litres, dos ventilé, compartiment ordinateur 15 pouces",
"tone": "chaleureux",
"length": "standard",
"variantCount": 2
}
""";
var response = await client.PostAsync(
"https://www.websource.fr/api/v1/outils-ia/generer-description-produit",
new StringContent(json, Encoding.UTF8, "application/json"));
Console.WriteLine(await response.Content.ReadAsStringAsync());
// Java 15+ (java.net.http et blocs de texte)
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class Example {
public static void main(String[] args) throws Exception {
String json = """
{
"name": "Sac à dos Aventure 30L",
"category": "Bagagerie",
"features": "Imperméable, 30 litres, dos ventilé, compartiment ordinateur 15 pouces",
"tone": "chaleureux",
"length": "standard",
"variantCount": 2
}
""";
HttpRequest request = HttpRequest.newBuilder(URI.create("https://www.websource.fr/api/v1/outils-ia/generer-description-produit"))
.header("Authorization", "Bearer VOTRE_JETON")
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString(json))
.build();
HttpResponse<String> response = HttpClient.newHttpClient()
.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}
Réponses
Réponse en cas de succès (code 200) :
{
"success": true,
"descriptions": [
"…variante 1…",
"…variante 2…"
]
}| Code | Signification | Que faire |
|---|---|---|
| 400 | Paramètre manquant ou invalide | Lisez le champ error, il précise la limite dépassée. |
| 401 | Jeton absent, invalide ou révoqué | Vérifiez l'en-tête Authorization. |
| 429 | Limite horaire atteinte | Attendez l'échéance indiquée dans Retry-After. |
| 503 | Service momentanément indisponible | Réessayez après quelques instants. |
Toute erreur a la forme {"success": false, "error": "…"}. Limite par défaut : 60 requêtes par heure et par jeton (ajustable sur demande).
Demander un accès API
Gratuit. Un jeton vous est envoyé par e-mail une fois la demande approuvée. Il donne accès à tous les outils de cette API.
Pour demander un accès, connectez-vous ou créez un compte gratuit. Vous reviendrez ensuite directement sur ce formulaire.