Server API
Base URL (dev): https://devlive-api.thinkbeyondcorporate.com/v1. Every call: Authorization: Bearer vr_sk_test_… (your secret key, server only). JSON in and out.
Responses. Success is Lovense's envelope: { "result": true, "code": <status>, "message": "ok", "data": … }. Errors: { "statusCode", "message": <code>, "error" }; branch on message (errors).
Models are keyed on your own model id: a model token never goes in a URL.
Scales. Strength is Lovense's vLevel 0–20; times are seconds.
Limits. 600 calls a minute per key, 3,000 per IP (429 rate_limited).
POST /partner/models/token
Mint or return a model's token (Lovense getToken).
| Body | |
|---|---|
modelId | your id for the model, 1–191 chars |
modelName | display name, 1–120 chars |
Lovense form also accepted: mInfo ({"mId","mName"}, JSON string or object) and dToken (the key, instead of the header).
200 → data: { mId, modelToken, mToken } (mToken = modelToken, for Lovense parsers). Same token on every call until rotated.
POST /partner/models/{modelId}/rotate
A new token; the old one dies at once (its panel and live.js are disconnected). 200 → data: { mId, modelToken, mToken }. Use it if a token leaked; then reload the model's page with the new one.
POST /partner/tips
A verified tip. Header Idempotency-Key (required, 1–100 visible ASCII): your own id for the tip. A retry with the same key is answered duplicate: true and never plays twice.
| Body | |
|---|---|
modelId or modelToken | which model (send exactly one) |
tipper | display name, 1–120 chars |
amount | tokens, whole number ≥ 1 |
note | optional, ≤ 255 chars; a #tag can fire a special |
isAnon | optional boolean |
| Answer | Meaning |
|---|---|
202 {accepted, duplicate, tipId, action, held} | Taken. action: what it plays (kind, vLevel, time s, rule; null = below the menu). held: true: the panel is open but the toy is off; it plays when the toy is back |
409 toy_offline | No panel open for this model. Nothing recorded; retry with the same key once the model is online |
GET /partner/models/{modelId}/menu
The model's tip menu (Lovense getSettings shape): data: { mId, version, levels, specials, perks }. See the tip menu.
GET /partner/models/{modelId}/status
data: { mId, panelConnected, toyOnline, battery, toyModel, queueLength, paused, held }. Good for a "toy online" badge on the model's profile.
Test and live
Test keys (vr_sk_test_…) reach test models only, live keys live models only (403 wrong_environment). Test tokens start vlm_test_, live ones vlm_live_; only test models may use the virtual toy.