DocsIntegration

Integration Guide

PickPoint exposes four APIs over standard HTTPS (REST/JSON) and WebSocket (tracking.v2). We recommend the official SDKs for your language — they handle auth, retries, and the tracking wire protocol so you can ship faster and avoid common integration pitfalls.

Official SDKs

Each SDK wraps the same surface: forward, reverse, search, route, device registry, and (where supported) live tracking via connect / publish.

LanguagePackageTracking WS
JavaScript / TypeScript@pickpoint/sdk (npm)@pickpoint/sdk/tracking
Pythonpickpoint (PyPI)pickpoint.tracking
Gogithub.com/pickpoint/go-sdkgo-sdk/tracking
Rustpickpoint (crates.io)pickpoint::tracking
Kotlin / Javaio.pickpoint:pickpoint (Maven)io.pickpoint.tracking
Dartpickpoint (pub.dev)package:pickpoint/tracking.dart
C++cpp-sdkpickpoint::tracking
Rubypickpoint gemHTTP only
Swift / iOSNo official SDK — implement wire format from pickpoint-proto

Why use the SDK?

  • Less boilerplate — auth headers, query encoding, JSON bodies, and typed errors are built in; no hand-rolled fetch or socket framing.
  • Tracking protocol — binary tracking.v2 frames, Hello handshake, heartbeats, sequence numbers, and acknowledgements handled automatically.
  • Resilience — WebSocket reconnect with trip Resume (same trackUid after a drop); client-token refresh; HTTP retries on transient failures.
  • Batch & limits — geocode batch helpers with in-flight caps; rate limiting helpers on the publish path (up to 50 Hz).
  • Cross-language consistency — same API surface across JavaScript, Python, Go, Rust, JVM, Dart, and C++.

Not using one of these languages? All HTTP endpoints are documented in the OpenAPI reference on docs.pickpoint.io. Live tracking wire format is in pickpoint-proto.

Choose your integration pattern

There is no single “correct” architecture — pick the pattern that matches where your code runs and who holds credentials.

PatternWhenCredentialsExamples
1. Server-sideBackend jobs, microservices, CLI, internal toolsX-Api-Key in server envBatch geocoding
2. Client-facing APIBrowser or mobile UI needs geocoding/routingYour auth → backend SDK → PickPointServer integration, Web maps
3. Live trackingReal-time GPS publish and subscribeDevice: client-id + secret direct; Subscriber: client-token via backendDevice Tracking, Navigator

Pattern 1: Server-side

Your server holds the API key and calls PickPoint directly via the SDK. No REST wrapper, no proxy — just PICKPOINT_KEY in an environment variable and SDK calls from your job or service.

🔑 PICKPOINT_KEYYour ServerCron · ETL · microservice · CLIPickPoint APIGeocoding · Routing · DevicesSDK: forward(), route(), …

Pattern 2: Client-facing backend

Use this when browsers or mobile apps need geocoding or routing but must not hold your API key. Clients authenticate against your backend (JWT, session, OAuth). Your backend validates the request, calls PickPoint via the SDK, and returns the result.

Client App🌐 Browser📱 Mobile app🔑 PICKPOINT_KEYYour Backend✓ Auth & rate-limiting✓ Response cachingPickPoint API📍 Geocoding🗺️ Routing

Pattern 3: Live tracking

Devices publish GPS directly to PickPoint using per-device credentials — safe to embed in mobile and IoT apps. Subscribers (dispatch dashboards) connect through your backend, which mints a short-lived client token.

DEVICE (sends location)IoT / Mobile Devicedirect WebSocket · SDK publish()client-id + client-secretPickPointTracking WS📡 Receives locations📡 Pushes to subscribersSUBSCRIBER (receives live feed)Dashboard / App🔑 API KEYYour Backendclient-token

Security rules

Three credential types — don't mix them up:

CredentialScopeWhere it lives
API key (X-Api-Key)Full account access — billing, all APIsServer env only — never in browser, mobile bundle, or firmware
Device credentials (client-id + secret)One device — publish location onlySafe in mobile/IoT apps; rotate if device is lost
Client token (accessToken)Short-lived subscriber access (scope devices)Minted on backend; passed to dashboard clients
  • Store PICKPOINT_KEY in an environment variable, never in source code.
  • Use separate keys for development, staging, and production.
  • Set up usage alerts — an unexpected spike is the first sign of a leaked key.
  • Rotate the key immediately if you suspect exposure.

Getting StartedServer IntegrationDevice TrackingAPI Reference ↗