Relai Access documentation
Build apps that open Relai Exchange Zone nodes. People drop off and pick up on their own time, without meeting: your app owns the experience, Relai authorizes every open server-side, and the SDK handles the hardware.
Start with the two checklists if you are setting up or integrating; the rest are reference. Search is in the bar above, from any page.
- Portal setup checklist · What to configure in the portal so your app behaves as expected: subscription, payment mode, prices, handoff modes, webhooks, test end-users.
- Starting prompts · Two copy-paste prompts for AI coding tools: one for a new app from scratch, one for adding Relai to an existing mobile app.
- Integration checklist · Phase-by-phase checklist for adding Relai Access to an app, with a verification step at the end of each phase. Written for AI coding assistants.
- Build an app · Step-by-step for React Native, new or existing. The AI starting prompts live on their own page.
- Drop-offs and pick-ups · Handoff modes (self, directed, open), access tags and links, pick-up windows, late fees, and override links.
- Billing and pricing · The two things you pay for, the plans side by side, how opens are counted, the fees an order can carry, and how invoices work.
- Dictionary · The Relai vocabulary, footnoted with usage notes and common hiccups.
- SDK changelog · Every released version of the SDK, what it added, changed, or fixed, and which upgrades need a code change.
- Error codes · Every stable error code the API returns, and what to do about each.
How it works
- Get access. Sign in, onboard as a Relai 3 partner, and request SDK access, which approves instantly. Then choose a subscription and create your app; its sandbox keys and its own simulated Exchange Zones are provisioned right then. Real hardware is a separate request you make later, for that same app.
- Integrate the SDK.
@relai-team/access-sdkhandles end-user sign-in (email OTP), Exchange Zone discovery, orders, and the BLE unlock flow. - Open nodes. Create an order, request an open with an intent, and the SDK drives the authenticated unlock against the tower's Parent controller.
Quick start
import { RelaiClient, SimulatedTransport, Intents } from "@relai-team/access-sdk";
const relai = new RelaiClient({ publishableKey: "pk_sandbox_…" });
await relai.auth.startOtp("rider@example.com");
await relai.auth.verifyOtp("rider@example.com", "123456");
const [ez] = await relai.exchangeZones.near({ lat: 40.7128, lng: -74.006 });
const order = await relai.orders.create({ exchangeZoneId: ez.id });
const result = await relai.unlock({
orderId: order.id,
intent: Intents.Occupy,
transport: new SimulatedTransport(),
});Sandbox keys work against simulated Exchange Zones: same routes, no hardware needed.