Send Haptic Points Stream Signal
curl --request POST \
--url https://api.getmelody.io/device/hps/signal \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'X-Device-Key: <x-device-key>' \
--data '
{
"points": [
{
"time": 1000,
"pos": 5000
}
]
}
'import requests
url = "https://api.getmelody.io/device/hps/signal"
payload = { "points": [
{
"time": 1000,
"pos": 5000
}
] }
headers = {
"X-Device-Key": "<x-device-key>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'X-Device-Key': '<x-device-key>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({points: [{time: 1000, pos: 5000}]})
};
fetch('https://api.getmelody.io/device/hps/signal', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.getmelody.io/device/hps/signal",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'points' => [
[
'time' => 1000,
'pos' => 5000
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json",
"X-Device-Key: <x-device-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.getmelody.io/device/hps/signal"
payload := strings.NewReader("{\n \"points\": [\n {\n \"time\": 1000,\n \"pos\": 5000\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-Device-Key", "<x-device-key>")
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.getmelody.io/device/hps/signal")
.header("X-Device-Key", "<x-device-key>")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"points\": [\n {\n \"time\": 1000,\n \"pos\": 5000\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.getmelody.io/device/hps/signal")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-Device-Key"] = '<x-device-key>'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"points\": [\n {\n \"time\": 1000,\n \"pos\": 5000\n }\n ]\n}"
response = http.request(request)
puts response.read_bodyHaptic Points Stream
Send Haptic Points Stream Signal
Send a haptic signal to the device. The stroker movement velocity is calculated on device and is based on time difference between points. At least two points needed to move the stroker.
POST
/
device
/
hps
/
signal
Send Haptic Points Stream Signal
curl --request POST \
--url https://api.getmelody.io/device/hps/signal \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'X-Device-Key: <x-device-key>' \
--data '
{
"points": [
{
"time": 1000,
"pos": 5000
}
]
}
'import requests
url = "https://api.getmelody.io/device/hps/signal"
payload = { "points": [
{
"time": 1000,
"pos": 5000
}
] }
headers = {
"X-Device-Key": "<x-device-key>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'X-Device-Key': '<x-device-key>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({points: [{time: 1000, pos: 5000}]})
};
fetch('https://api.getmelody.io/device/hps/signal', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.getmelody.io/device/hps/signal",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'points' => [
[
'time' => 1000,
'pos' => 5000
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json",
"X-Device-Key: <x-device-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.getmelody.io/device/hps/signal"
payload := strings.NewReader("{\n \"points\": [\n {\n \"time\": 1000,\n \"pos\": 5000\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-Device-Key", "<x-device-key>")
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.getmelody.io/device/hps/signal")
.header("X-Device-Key", "<x-device-key>")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"points\": [\n {\n \"time\": 1000,\n \"pos\": 5000\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.getmelody.io/device/hps/signal")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-Device-Key"] = '<x-device-key>'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"points\": [\n {\n \"time\": 1000,\n \"pos\": 5000\n }\n ]\n}"
response = http.request(request)
puts response.read_bodyAuthorizations
Short-lived session token obtained from POST /api/sessions/v2.
Send it as Authorization: Bearer <session_token> together with the X-Device-Key: <device-key> header identifying the target device.
Headers
Device Key (4 BIP39 words) identifying the target device.
Obtain it from POST /device/otp/confirm/v2.
Pattern:
^[a-z]+-[a-z]+-[a-z]+-[a-z]+$Example:
"orbit-ranch-silver-tomato"
Body
application/json
The stroker movement velocity is calculated on device and is based on time difference between signals. At least two signals needed to move the stroker.
Array of points with time and position.
Show child attributes
Show child attributes
Response
200
OK