Developers
Haptic navigation, in a few lines of code.
Native SDKs for iOS and Wear OS, a REST API and WebSocket streaming. Integrates with your existing mapping stack in hours, not weeks.
Platforms
<50ms SDK response latency. Works on any device with a vibration motor: phones, watches, rings, earbuds.
-
Available
iOS SDK
Native Swift SDK with Core Haptics and AHAP support. Apple Watch integration live.
-
Available
Wear OS SDK
Native SDK for Wear OS watches. Phone-to-wrist handoff.
-
Available
REST API
Compute Haptic Corridors for routes, manage sessions, pull analytics.
-
Available
WebSocket
Stream heading and position; receive haptic frames in real time.
-
Update coming
Android SDK
An updated Android SDK is on the way. Ask us for early access.
-
Enterprise
OEM / firmware
Embed the corridor engine on your device’s haptic motor. Per-device licensing.
How integration works
Never ship an API key inside an app. HapticNav uses the same pattern as payment SDKs: a secret key on your server mints short-lived session tokens for devices.
-
Request access
Get a free Developer workspace: 10,000 navigation sessions a month, the full haptic pattern library, iOS SDK and REST API.
-
Mint session tokens on your server
Your secret key stays server-side. Your backend exchanges it for short-lived, single-user session tokens.
-
Start a navigation session
Pass the token to the SDK on the device, set a destination and corridor width, and the user feels the way.
-
Watch usage and set budgets
Usage dashboards per meter, with budget alerts at 50%, 90% and 100% of your monthly cap.
// Runs on YOUR backend. The secret key never ships to devices.
import { HapticAdmin } from '@haptic/navigation-sdk/server';
const haptic = new HapticAdmin({
secretKey: process.env.HAPTIC_SECRET_KEY,
});
app.post('/haptic/session', requireUser, async (req, res) => {
const { token, expiresAt } = await haptic.sessions.create({
userId: hash(req.user.id), // pseudonymous, never PII
scopes: ['navigate'],
ttlSeconds: 900, // short-lived, single user
});
res.json({ token, expiresAt });
}); // The device only ever sees a short-lived session token.
import { HapticNav } from '@haptic/navigation-sdk';
const { token } = await fetch('/haptic/session', { method: 'POST' })
.then((r) => r.json());
const haptic = new HapticNav({
sessionToken: token,
corridorWidth: 2.5, // metres
platform: 'ios', // 'ios' | 'wearos' | 'web'
});
// Start navigation: one navigation session
haptic.navigate({
destination: { lat: 40.7128, lng: -74.006 },
onDeviation: (angle, distance) => haptic.calculateFeedback(angle),
}); # REST: compute a Haptic Corridor for a route (one routing API request)
curl https://api.haptic.works/v1/corridors \
-H "Authorization: Bearer $HAPTIC_SESSION_TOKEN" \
-H "Content-Type: application/json" \
-d '{"origin":[40.7580,-73.9855],"destination":[40.7128,-74.0060],"profile":"walking","width_m":2.5}' // WebSocket: stream heading + position, receive haptic frames
const ws = new WebSocket(`wss://api.haptic.works/v1/stream?token=${token}`);
ws.onmessage = ({ data }) => device.play(JSON.parse(data)); // { intensity, pattern }
ws.send(JSON.stringify({ heading: 182, lat: 40.7579, lng: -73.9857 })); Samples are illustrative of the integration pattern. The SDK reference has exact method names.
What gets metered
Usage is counted per workspace per calendar month (UTC). Each meter has a free monthly allowance, then graduated pricing.
See pricing & calculator- Navigation sessions
- One session starts when the SDK begins haptic guidance toward a destination and ends on arrival, cancellation, or 60 minutes without movement. Rerouting inside a trip does not start a new session.
- SDK monthly active users
- One MAU is one app installation (iOS, Wear OS or wearable) that initializes the SDK at least once during the month. The same person on a phone and a watch counts as two MAUs.
- SDK MAU, unlimited sessions
- Same MAU definition as above. Navigation sessions from SDK clients are not billed separately on this option.
- Haptic Corridor & routing API requests
- One request is one successful REST call or one WebSocket route/corridor computation. Routing done by the SDK inside a billed navigation session is included and not counted here. Errors (4xx/5xx) are not billed.
- Crowd-finding sessions
- One session is one group of devices finding each other, from invite accepted to found or cancelled, up to 4 hours.
- Analytics & telemetry events
- One event is one telemetry record (e.g. session start, corridor deviation, arrival) ingested and retained for the plan's retention period.
- Wearable & OEM devices
- One device is one activated hardware unit with the HapticNav runtime during the month. Volume pricing: every billable device is charged at the rate of the band your total reaches.
Documentation
Public docs are coming soon. Developer-tier workspaces get the full SDK reference today.
-
Quickstart (iOS)
Available with SDK access.
-
Quickstart (Wear OS)
Available with SDK access.
-
REST API reference
Available with SDK access.
-
WebSocket protocol
Available with SDK access.
-
Session tokens & auth
Available with SDK access.
-
Haptic pattern library (AHAP, JSON)
Available with SDK access.
HapticAI & HapticLab
Design the feel, then export it anywhere.
Human tactile perception peaks around 250 Hz, where Pacinian corpuscles are most sensitive. HapticNav tunes feedback in that range. Amplitude communicates how far you’ve drifted; silence means perfect alignment.
- Export patterns as AHAP (iPhone-ready), JSON (any platform), CSV (analysis) or JS (Web Vibration API)
- Sine, square, triangle and sawtooth waveforms with quick presets
- Adaptive feedback tuned to walking speed, environment and user preference
- Custom haptic pattern design available as an add-on
Ship screen-free navigation this sprint.
Start on the free Developer tier today, or talk to our licensing team about what HapticNav can do for your product, your users and your bottom line.