/api/v1/outils-ia/generer-idees-articlesAPI Générateur d'idées d'articles
Génère une liste de sujets d'articles de blog, chacun avec un angle et une question à laquelle il répond.
Tapez au moins 2 caractères pour lancer la recherche.
Présentation
À partir d'un thème, d'un public et d'un objectif éditorial, cet endpoint propose des idées d'articles prêtes à être rédigées : un titre, l'angle retenu et la question du lecteur à laquelle l'article répond.
Un modèle de langage hébergé par Websource génère les idées selon l'objectif choisi (trafic, autorité, conversion, fidélisation ou partage), qui oriente le type de sujet proposé. Vous pouvez restreindre les formats (guide, comparatif, étude de cas…) et fournir les titres déjà utilisés pour ne pas les revoir. Les idées sans titre exploitable sont écartées ; si aucune n'est valide, l'API répond 503 et vous pouvez simplement réessayer.
Pour alimenter un calendrier éditorial, préparer un brief de rédaction ou automatiser la recherche de sujets d'une agence ou d'un éditeur de contenu. Seul le sujet est obligatoire, mais préciser le public et l'activité améliore nettement la pertinence.
Utilisation pas à pas
- 1Envoyez au minimum le subject (3 à 200 caractères), idéalement avec audience et activity.
- 2Ajustez la function, les formats et le nombre d'idées (count : 3, 4 ou 6).
- 3Parcourez ideas : chaque idée fournit title, angle et question (plan est toujours une liste vide : le plan détaillé se génère à la demande sur la page de l'outil).
Limites à connaître
- Sujet de 3 à 200 caractères ; audience et activity jusqu'à 200 ; keywords jusqu'à 300 ; excludedTitles jusqu'à 4 000 caractères au total.
- Le nombre d'idées demandé peut être légèrement inférieur au nombre renvoyé si le modèle produit des entrées invalides.
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 |
|---|---|---|---|
| subject | string | Requis | Thème général des articles (3 à 200 caractères). |
| audience | string | Optionnel | Public visé (200 caractères max). |
| activity | string | Optionnel | Activité ou secteur de l'auteur (200 caractères max). |
| function | string | Optionnel | 'trafic', 'autorite', 'conversion', 'fidelisation' ou 'partage' — défaut 'trafic'. |
| formats | array<string> | Optionnel | Parmi 'guide', 'retour_experience', 'comparatif', 'idee_recue', 'etude_de_cas', 'tutoriel', 'prise_de_position', 'enquete'. |
| keywords | string | Optionnel | Mots-clés à intégrer (300 caractères max). |
| excludedTitles | array<string> | Optionnel | Titres déjà utilisés, à ne pas reproposer. |
| count | int | Optionnel | 3, 4 ou 6 — défaut 4. |
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-idees-articles \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{"subject":"Sécurité des sites WordPress","audience":"Dirigeants de TPE","activity":"Agence web","function":"trafic","formats":["guide","idee_recue"],"count":6}'<?php
$ch = curl_init('https://www.websource.fr/api/v1/outils-ia/generer-idees-articles');
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([
'subject' => 'Sécurité des sites WordPress',
'audience' => 'Dirigeants de TPE',
'activity' => 'Agence web',
'function' => 'trafic',
'formats' => [
'guide',
'idee_recue',
],
'count' => 6,
], 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-idees-articles",
headers={"Authorization": "Bearer VOTRE_JETON"},
json={
"subject": "Sécurité des sites WordPress",
"audience": "Dirigeants de TPE",
"activity": "Agence web",
"function": "trafic",
"formats": [
"guide",
"idee_recue"
],
"count": 6
},
timeout=60,
)
print(response.json())
// Node.js 18+ (fetch natif)
const response = await fetch("https://www.websource.fr/api/v1/outils-ia/generer-idees-articles", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.WEBSOURCE_API_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"subject": "Sécurité des sites WordPress",
"audience": "Dirigeants de TPE",
"activity": "Agence web",
"function": "trafic",
"formats": [
"guide",
"idee_recue"
],
"count": 6
}),
});
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-idees-articles".
import { useState } from "react";
export default function GenererIdeesArticles() {
const [result, setResult] = useState(null);
const [loading, setLoading] = useState(false);
async function run() {
setLoading(true);
const response = await fetch("/api/websource/generer-idees-articles", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
"subject": "Sécurité des sites WordPress",
"audience": "Dirigeants de TPE",
"activity": "Agence web",
"function": "trafic",
"formats": [
"guide",
"idee_recue"
],
"count": 6
}),
});
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-idees-articles")
request = Net::HTTP::Post.new(uri)
request["Authorization"] = "Bearer VOTRE_JETON"
request["Content-Type"] = "application/json"
request.body = <<~JSON
{
"subject": "Sécurité des sites WordPress",
"audience": "Dirigeants de TPE",
"activity": "Agence web",
"function": "trafic",
"formats": [
"guide",
"idee_recue"
],
"count": 6
}
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(`{"subject":"Sécurité des sites WordPress","audience":"Dirigeants de TPE","activity":"Agence web","function":"trafic","formats":["guide","idee_recue"],"count":6}`)
req, _ := http.NewRequest("POST", "https://www.websource.fr/api/v1/outils-ia/generer-idees-articles", 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 = """
{
"subject": "Sécurité des sites WordPress",
"audience": "Dirigeants de TPE",
"activity": "Agence web",
"function": "trafic",
"formats": [
"guide",
"idee_recue"
],
"count": 6
}
""";
var response = await client.PostAsync(
"https://www.websource.fr/api/v1/outils-ia/generer-idees-articles",
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 = """
{
"subject": "Sécurité des sites WordPress",
"audience": "Dirigeants de TPE",
"activity": "Agence web",
"function": "trafic",
"formats": [
"guide",
"idee_recue"
],
"count": 6
}
""";
HttpRequest request = HttpRequest.newBuilder(URI.create("https://www.websource.fr/api/v1/outils-ia/generer-idees-articles"))
.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,
"ideas": [
{
"title": "…",
"angle": "…",
"plan": [],
"question": "…"
}
]
}| 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.