OptimoCMSDocs
SDK

SDK TypeScript — Instalación

Instala y configura el SDK TypeScript oficial de OptimoCMS.

SDK TypeScript

El SDK oficial de TypeScript proporciona una interfaz tipada y ergonómica para la API de OptimoCMS.

Instalación

npm install @optimocms/sdk

Requiere Node.js 18+ o un navegador moderno con soporte ES2020 module.

Configuración del cliente

import { OptimoCMS } from '@optimocms/sdk';

const cms = new OptimoCMS({
  apiKey: process.env.OPTIMOCMS_API_KEY!,
});

Módulos disponibles

cms.sites       // Gestionar sitios
cms.pages       // CRUD de páginas
cms.media       // Subir y gestionar medios
cms.ai          // Generación y traducción IA
cms.shop        // Productos, pedidos, cupones
cms.booking     // Reservas
cms.webhooks    // Configuración de webhooks
cms.domains     // Registro y gestión de dominios
cms.mail        // Buzones de correo y registros DNS
cms.seo         // Configuración SEO y design tokens
cms.chatbot     // Configuración del chatbot

Generación IA con medios

El módulo cms.ai soporta videos hero generados por IA. Disponible para planes Professional y Agency.

Generar página con video hero

const result = await cms.ai.generatePage('site_abc123', {
  prompt: 'Página de aterrizaje para una panadería en Ámsterdam',
  language: 'es',
  style: 'minimalist',
  useHeroVideo: true,
  videoModelId: 'seedance-fast', // opcional: seedance-fast | seedance-standard | kling-standard
});

console.log(result.jobId);
console.log(result.heroVideoGenerated); // true si el video se generó correctamente

Generar sitio con video hero

const result = await cms.ai.generateSite({
  name: 'Panadería El Horno Dorado',
  prompt: 'Un sitio web moderno para una panadería artesanal',
  language: 'es',
  useHeroVideo: true,
  videoModelId: 'seedance-standard', // 2 créditos, calidad máxima
});

console.log(result.siteId);
console.log(result.heroVideoGenerated); // true si el video se generó correctamente
console.log(result.videoModel);         // 'seedance-standard'
console.log(result.videoCreditsUsed);   // 2

Nota: Cuando useHeroVideo no se proporciona o se establece en false, no se genera ningún video. El comportamiento existente (fotos de stock) permanece sin cambios. En planes inferiores (Free, Starter), el parámetro se ignora. Sin videoModelId, se usa seedance-fast por defecto.

Dominios

const check = await cms.domains.checkAvailability('panaderia-madrid.es');
console.log(check.available, check.priceCents);

const domain = await cms.domains.register({
  domain: 'panaderia-madrid.es',
  siteId: 'site_abc123',
  registrant: { firstName: 'Carlos', lastName: 'García', email: 'carlos@ejemplo.es', phone: '+34612345678', address: 'Calle Gran Vía 1', city: 'Madrid', postalCode: '28013', country: 'ES' },
});

Correo electrónico

const mailbox = await cms.mail.createMailbox('site_abc123', {
  localPart: 'info',
  displayName: 'Info Panadería',
});
console.log(mailbox.email, mailbox.password);

const records = await cms.mail.getDnsRecords('site_abc123');

SEO y Design Tokens

await cms.seo.updateSiteSeo('site_abc123', {
  siteTitle: 'Panadería Madrid — Bollería fresca cada día',
  siteDescription: 'La mejor panadería de Madrid.',
  robotsDirective: 'index,follow',
});

await cms.seo.updateDesignTokens('site_abc123', {
  colorPrimary: '#ff6600',
  fontHeading: 'Inter',
});

Notificaciones push

await cms.push.sendCampaign('site_abc123', {
  title: '¡Rebajas de verano -20%!',
  body: 'Pide hoy y obtén un 20% de descuento.',
});

Webhooks

const webhook = await cms.webhooks.create('site_abc123', {
  url: 'https://mi-crm.es/hook',
  events: ['order.created', 'booking.created'],
});

Chatbot

await cms.chatbot.configure('site_abc123', {
  enabled: true,
  greeting: '¡Hola! ¿En qué puedo ayudarte?',
  primaryColor: '#2563eb',
  language: 'es',
});

const config = await cms.chatbot.getConfig('site_abc123');

Siguientes pasos

On this page