Toys

The SDK supports all 13 Velvet models. They come in four kinds: every model vibrates, and some add a second motor, suction or heat. Build for these four and you cover every toy.

Vibration

One motor: strength, patterns and the 12 built-in presets.

PixieRougeOrionEonVortexWhisperPearlNaiomyEstelleCeleste
await toy.vibrate({ strength: 60, durationMs: 3000 });
Try Pixie in the playground

Dual motor

Two motors, outer (1) and insertable (2), together or one at a time.

Eclipse
if (toy.info.motors === 2) {
  await toy.vibrate({ motor: 2, strength: 60, durationMs: 3000 });
}
Try Eclipse in the playground

Suction

Suction made by its motor: strength sets how strong; presets and patterns pulse it.

Aurora
if (toy.info.suction) {
  await toy.suction({ strength: 60, durationMs: 30000 });
}
Try Aurora in the playground

Heat

Vibration plus heat (low or high), up to 10 min at a time.

Ember
if (toy.info.heating) {
  await toy.heat({ level: 'low', durationMs: 300000 });
}
Try Ember in the playground

Check capabilities, not model names

After connect(), toy.info says what the toy can do. Show controls from that, and your app works with every model, including ones we release later. Before connecting, modelInfo(model) gives the same answer for a model name.

const { motors, heating, suction } = toy.info;

motor2Controls.hidden = motors !== 2;
heatButton.hidden = !heating;
suctionButton.hidden = !suction;

Testing with hardware? One toy of each kind covers everything: for example Pixie, Eclipse, Aurora and Ember.