OptimoCMSDocs
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/sdk

Né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 chatbot

Gé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ès

Gé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);   // 2

Remarque : Lorsque useHeroVideo n'est pas fourni ou défini sur false, 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é. Sans videoModelId, seedance-fast est 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' },
});

E-mail

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

On this page