SDK
SDK TypeScript — Installation
Installez et configurez le SDK TypeScript officiel d'OptimoCMS.
SDK TypeScript
Le SDK TypeScript officiel fournit une interface typée et ergonomique pour l'API OptimoCMS.
Installation
npm install @optimocms/sdkNécessite Node.js 18+ ou un navigateur moderne avec support ES2020 module.
Configuration du client
import { OptimoCMS } from '@optimocms/sdk';
const cms = new OptimoCMS({
apiKey: process.env.OPTIMOCMS_API_KEY!,
});Modules disponibles
cms.sites // Gérer les sites
cms.pages // CRUD des pages
cms.media // Télécharger et gérer les médias
cms.ai // Génération et traduction IA
cms.shop // Produits, commandes, coupons
cms.booking // Réservations
cms.webhooks // Configuration des webhooks
cms.domains // Enregistrement et gestion de domaines
cms.mail // Boîtes mail et enregistrements DNS
cms.seo // Configuration SEO et design tokens
cms.chatbot // Configuration du chatbotGénération IA avec médias
Le module cms.ai prend en charge les vidéos hero générées par IA. Disponible pour les plans Professional et Agency.
Générer une page avec vidéo hero
const result = await cms.ai.generatePage('site_abc123', {
prompt: 'Page d\'accueil pour une boulangerie à Amsterdam',
language: 'fr',
style: 'minimalist',
useHeroVideo: true,
videoModelId: 'seedance-fast', // optionnel : seedance-fast | seedance-standard | kling-standard
});
console.log(result.jobId);
console.log(result.heroVideoGenerated); // true si la vidéo a été générée avec succèsGénérer un site avec vidéo hero
const result = await cms.ai.generateSite({
name: 'Boulangerie Le Four Doré',
prompt: 'Un site web moderne pour une boulangerie artisanale',
language: 'fr',
useHeroVideo: true,
videoModelId: 'seedance-standard', // 2 crédits, qualité maximale
});
console.log(result.siteId);
console.log(result.heroVideoGenerated); // true si la vidéo a été générée avec succès
console.log(result.videoModel); // 'seedance-standard'
console.log(result.videoCreditsUsed); // 2Remarque : Lorsque
useHeroVideon'est pas fourni ou défini surfalse, aucune vidéo n'est générée. Le comportement existant (photos de stock) reste inchangé. Pour les plans inférieurs (Free, Starter), le paramètre est ignoré. SansvideoModelId,seedance-fastest utilisé par défaut.
Domaines
const check = await cms.domains.checkAvailability('boulangerie-paris.fr');
console.log(check.available, check.priceCents);
const domain = await cms.domains.register({
domain: 'boulangerie-paris.fr',
siteId: 'site_abc123',
registrant: { firstName: 'Jean', lastName: 'Dupont', email: 'jean@exemple.fr', phone: '+33612345678', address: '1 Rue de Rivoli', city: 'Paris', postalCode: '75001', country: 'FR' },
});const mailbox = await cms.mail.createMailbox('site_abc123', {
localPart: 'info',
displayName: 'Info Boulangerie',
});
console.log(mailbox.email, mailbox.password);
const records = await cms.mail.getDnsRecords('site_abc123');SEO & Design Tokens
await cms.seo.updateSiteSeo('site_abc123', {
siteTitle: 'Boulangerie Paris — Viennoiseries fraîches chaque jour',
siteDescription: 'La meilleure boulangerie de Paris.',
robotsDirective: 'index,follow',
});
await cms.seo.updateDesignTokens('site_abc123', {
colorPrimary: '#ff6600',
fontHeading: 'Inter',
});Notifications push
await cms.push.sendCampaign('site_abc123', {
title: 'Soldes d\'été -20% !',
body: 'Commandez aujourd\'hui et profitez de 20% de réduction.',
});Webhooks
const webhook = await cms.webhooks.create('site_abc123', {
url: 'https://mon-crm.fr/hook',
events: ['order.created', 'booking.created'],
});Chatbot
await cms.chatbot.configure('site_abc123', {
enabled: true,
greeting: 'Bonjour ! Comment puis-je vous aider ?',
primaryColor: '#2563eb',
language: 'fr',
});
const config = await cms.chatbot.getConfig('site_abc123');Étapes suivantes
- Gestion des erreurs — Erreurs typées et stratégie de retry
- Pagination — Itérateurs asynchrones et pagination par curseurs
- Authentification — Scopes et limites de débit