For developers

The Design API

The theme catalog is open JSON. A theme is a set of CSS custom properties every OpenVibe site reads; Network keeps which one each person uses.

The SDK, the files and the versions

openvibe-sdk is the supported client for this platform: the server client, the browser client, their ES modules and their TypeScript declarations. It ships from the OpenVibers/OpenVibe.SDK repository by tag, so a service pins a version rather than floating on a branch.

Add the pin to package.json, then install:

{ "dependencies": {
    "openvibe-sdk": "https://codeload.github.com/OpenVibers/OpenVibe.SDK/tar.gz/refs/tags/v0.161.0"
} }
index.js
The server client: auth, accounts, the async PostgreSQL data layer, events, media, AI runs and tools.
browser.js
The browser client, with the same subpath modules where the browser has them.
esm/*.mjs, types/*.d.ts
The ES module entry points and the TypeScript declarations, one pair per subpath export.
openvibe-contracts
v0.419.0, pinned by this site.
openvibe-sdk
v0.161.0, pinned by this site.
openvibe-shared
v4.235.0, pinned by this site.
openvibe-publishing
v1.7.0, pinned by this site.

The deployed release and its file hashes are at /release.json; the whole HTTP API is described by /openapi.json; an AI assistant can call it through the MCP server at POST /mcp.

Endpoints

POST /api/v1/designs
Create three variants with {prompt, kind, themeId?, who?}: Claude Opus 5.5 first by default, or who: "compare" for three providers; guests receive a secret edit link.
GET /api/v1/designs/:id
Poll generation status, read each frame, the pick and the version list; guests send X-Design-Key.
POST /api/v1/designs/:id/theme
Change the token theme with {themeId}.
POST /api/v1/designs/:id/pick
Choose the working frame with {variantIndex}; the pick is recorded as one Arena vote.
POST /api/v1/designs/:id/edit
Chat edit the working frame with {instruction}; one paid AI run and a small per-design budget.
POST /api/v1/designs/:id/click
Apply {path, text?, color?, spacing?, align?} to one element; validated paths and theme tokens only.
GET /api/v1/designs/:id/versions
Every saved version with its model/provider provenance; POST /undo and /redo move the pointer.
GET /api/v1/tokens/:theme?format=
A theme as code (OpenVibe Tokens): css, tailwind, compose (Android), swiftui (iOS), flutter, figma or json (W3C DTCG). Its other half comes along unless both=0; download=1 names a file.
GET /api/v1/tokens
The export targets.
GET /fonts
Every self-hosted open font family in its own face, with its weights, licence and CSS.
GET /fonts/css2?family=Name:wght@400;700
The self-hosted fonts as @font-face CSS, the same query shape as Google's css2; a name we do not have is a CSS comment.
GET /api/v1/fonts
The self-hosted families as JSON: family, slug, weights, licence, source. The wider catalogue is /api/v1/fonts/library.
GET /api/v1/components
The components' contract: anatomy and tokens, props, states, a11y, layout, and Compose and SwiftUI reference views.
POST /api/v1/components/validate
Check a kit document ({ doc }): known components and props, typed values, children, size, links. Answers { ok, errors }.
POST /mcp
MCP for AI assistants (Streamable HTTP, protocol 2025-06-18, no auth): openvibe_design_list_themes, openvibe_design_get_theme_tokens, openvibe_design_list_components, openvibe_design_get_component and openvibe_design_validate_kit_document, all read-only.
GET /api/themes
Every public OpenVibe theme with its colours (Network's catalog).
GET /api/themes/:id
One theme.
GET /api/me/theme
Your active theme (signed in).
PUT /api/me/theme
Use a theme, with optional custom colours (signed in; from this site only).
GET /api/me/theme/history
Your earlier looks, newest first; POST /api/me/theme/history/:id/restore brings one back.

Themes also export and import as openvibe-theme@1 files through Network's theme API.