Aller au contenu principal

Préparer la soumission

Mis à jour le 29 juillet 2026

Préparer votre app pour le ChatGPT Store

Votre application fonctionne en local, les tests passent, les fonctionnalités sont complètes. Reste l’étape la moins technique et la plus souvent bâclée : constituer le dossier de soumission. Une soumission incomplète est rejetée, et le rejet ne coûte pas seulement quelques jours de délai — il vous replace à la fin de la file, alors que tout était prêt.

Les assets visuels

L’icône est le premier contact avec votre app, et elle sera vue bien plus souvent en miniature qu’en grand format. Fournissez un PNG ou un SVG de 512 x 512 pixels au minimum, sur fond transparent ou en aplat de couleur, sans texte de petite taille.

Le test décisif tient en une manipulation : réduisez votre icône à 32 x 32 et regardez-la. Si vous ne reconnaissez plus le motif, simplifiez-le avant d’aller plus loin — c’est à cette taille que la majorité de vos futurs utilisateurs la découvriront.

Viennent ensuite trois à cinq captures d’écran au format PNG, en 1280 x 800 pixels, qui doivent montrer l’app en action et non son écran d’accueil. Au moins une capture présente un widget affiché dans la conversation, au moins une autre le résultat concret d’une action, et si votre app intègre du commerce, une troisième doit couvrir le flux d’achat. Ce sont ces images que le reviewer regarde en premier, et ce sont elles qui décident un utilisateur à installer.

Les textes de présentation

Les métadonnées du Store se déclarent dans le bloc listing. La description courte doit tenir en une phrase de 80 caractères, puisqu’elle s’affiche telle quelle dans les résultats de recherche ; la longue dispose de 2 000 caractères pour détailler ce que fait l’app, pour qui, et ce qu’elle ne fait pas.

{
  "listing": {
    "shortDescription": "Max 80 caractères — résumé en une phrase",
    "longDescription": "Max 2000 caractères — détails complets de l'app",
    "category": "productivity",
    "tags": ["weather", "forecast", "travel"],
    "supportEmail": "[email protected]",
    "privacyPolicyUrl": "https://monapp.com/privacy",
    "termsUrl": "https://monapp.com/terms"
  }
}

Construire le package

Le SDK génère lui-même le paquet de soumission. Lancez toujours validate avant le build : il vous signale en quelques secondes ce que la vérification automatique d’OpenAI relèverait plus tard.

# Vérifier que tout est en ordre
npx chatgpt-app validate

# Construire le package de soumission
npx chatgpt-app build --production

# Le package est généré dans dist/

La validation porte sur cinq domaines, du manifest aux assets.

Domaine contrôléCe que la validation exige
Manifest completTous les champs obligatoires de chatgpt-app.json sont renseignés
Actions validesChaque action a une description, des paramètres typés et un handler fonctionnel
Widgets rendusLes widgets produisent un arbre de composants valide sans erreur
SécuritéPas de secrets en clair, HTTPS obligatoire, signatures configurées
Assets completsIcône, captures, descriptions, politique de confidentialité présentes

Le quatrième domaine est celui qui piège le plus de développeurs : une clé d’API laissée dans un fichier de configuration versionné suffit à faire échouer la validation, même si elle ne concerne qu’un service de test.

Héberger le backend

Vos actions s’exécutent sur un serveur qui doit être joignable publiquement au moment de la review, et pas seulement pendant vos tests. Vercel et Netlify Functions conviennent bien si vos actions sont courtes, avec déploiement automatique et scaling inclus ; Railway et Render offrent des serveurs Node.js persistants, utiles dès que vous maintenez un état ou des connexions longues.

Pour les architectures serverless plus intégrées, AWS Lambda et Google Cloud Functions font le travail. Et un VPS classique reste parfaitement pertinent si vous préférez maîtriser votre infrastructure de bout en bout — le Store ne juge pas votre hébergeur, seulement sa disponibilité.

La bascule en production tient à quelques lignes : le mode, l’URL publique de votre serveur et le secret de webhook, tous trois lus depuis l’environnement plutôt qu’écrits en dur.

// src/index.ts — mode production
import { ChatGPTApp } from "@openai/apps-sdk";

const app = new ChatGPTApp({
  slug: process.env.OPENAI_APP_SLUG!,
  mode: "production",
  serverUrl: "https://api.monapp.com",
  webhookSecret: process.env.WEBHOOK_SECRET!,
});

La politique de confidentialité

Le Store exige une politique accessible publiquement, à une URL stable. Elle doit dire quelles données vous collectez et pourquoi, comment elles sont stockées et protégées, quels droits l’utilisateur exerce sur elles — accès, suppression, export — et quels services tiers interviennent dans la chaîne, de Stripe à vos outils d’analytics.

Si vous visez l’Europe, la conformité RGPD doit y figurer explicitement. Une page générique recopiée d’un modèle américain est un motif de rejet fréquent, et elle vous expose bien au-delà du Store.

Checklist de pré-soumission

L’ordre qui suit est celui dans lequel la vérification automatique, puis le reviewer, examineront votre dossier. Avant de cliquer sur « Soumettre », cochez les six lignes :

  • Le manifest chatgpt-app.json est complet
  • Les assets visuels sont prêts : icône 512x512 et 3 à 5 captures d’écran
  • Les descriptions courte et longue sont rédigées
  • La politique de confidentialité et les conditions d’utilisation sont en ligne
  • Le backend est déployé, accessible, et l’authentification fonctionne en production
  • npx chatgpt-app validate passe sans erreur, puis npx chatgpt-app build --production génère le package

Points clés à retenir

  • La soumission nécessite des assets visuels (icône, captures), des textes et des URLs légales
  • La commande validate vérifie la conformité de votre package
  • Votre backend doit être hébergé et accessible publiquement avant la soumission
  • La politique de confidentialité est obligatoire — incluez la conformité RGPD
  • Une soumission incomplète est automatiquement rejetée