Developer API

    Build EV charging into your app. Skip the charging backend.

    JPlug abstracts the entire OCPP protocol stack into clean REST endpoints. Start a session, listen for events, stop and bill — all from your existing codebase, without touching a charging protocol.

    No credit card required for sandbox access.

    The Problem We Solve

    OCPP is a protocol, not a product. We made it a product.

    The Open Charge Point Protocol is how EV chargers talk to software. It's also verbose, stateful, and built for network operators — not application developers. Implementing OCPP from scratch takes 3–6 months before you write a single line of your actual product.

    JPlug handles charger authentication, heartbeats, status notifications, firmware management, and metering data. You make REST calls. We handle the protocol.

    OCPP 1.6J and OCPP 2.0.1 support, maintained by us
    WebSocket connections to chargers managed server-side
    Hardware faults, reconnections, and state management abstracted away
    Works with verified compatible OCPP chargers — you never touch vendor SDKs

    The 3-Call Pattern

    From zero to a live charging session: 3 calls.

    Everything else — OCPP handshakes, heartbeats, meter values, fault recovery — is handled by JPlug.

    Call 1 — Check charger availability

    GET /api/v1/chargers/JPLUG-035615
    Authorization: Bearer YOUR_API_KEY
    
    Response 200:
    {
      "id": "JPLUG-035615",
      "status": "Available",
      "connectors": [
        { "id": 1, "type": "CCS2", "power_kw": 22, "status": "Available" }
      ]
    }

    Real-time status from the charger, not a cached record.

    Call 2 — Start a charging session

    POST /api/v1/chargers/JPLUG-035615/sessions
    Authorization: Bearer YOUR_API_KEY
    Content-Type: application/json
    
    {
      "connector_id": 1,
      "user_id": "usr_abc123",
      "tariff_id": "tariff_per_kwh_standard"
    }
    
    Response 200:
    {
      "session_id": "ses_7xk29q",
      "status": "Starting",
      "started_at": "2026-04-08T22:00:00Z"
    }

    JPlug sends the RemoteStartTransaction command to the charger and tracks state.

    Call 3 — Receive live session events via webhook

    POST https://your-app.com/webhooks/jplug
    
    {
      "event": "session.updated",
      "session_id": "ses_7xk29q",
      "energy_kwh": 8.4,
      "duration_min": 42,
      "status": "Charging",
      "cost_cents": 252
    }

    Subscribe to session.started, session.updated, session.ended, and charger.fault. No polling required.

    Use Cases

    What teams are building on JPlug.

    Fleet Charging Control

    Start, stop, and schedule charging for vehicles across depots or driver homes. Set per-vehicle energy limits and charging policies. Pull CDRs for reimbursement.

    Resident & Tenant Apps

    Show charger availability, session progress, and cost inside your resident or tenant app. No separate EV charging app for your users.

    Reference: Grata Technologies

    White-Label Driver Experience

    Use JPlug's UI component library to embed a fully styled charging flow into your app. Charger map, session controls, and receipts — your brand, our backend.

    Building & Utility Automation

    Connect chargers to your BMS or EMS. Enforce site power limits, shift load off-peak, and avoid demand charges — all via API.

    White-Label Components

    Skip the frontend, too.

    Don't want to build the charger map, session progress UI, and receipt flow from scratch? JPlug ships a library of white-label React components you can drop into your app. Fully themeable — your colors, your typography, your brand.

    • Charger availability map (uses your map tile provider)
    • Session start/stop controls with real-time status updates
    • In-session energy and cost meter
    • Session receipt with CDR export
    • Theming via CSS variables or design tokens
    Component Library
    <ChargerMap tileProvider={ ... } />
    <SessionControls sessionId="ses_7xk29q" />
    <EnergyMeter live />
    <SessionReceipt exportCDR />

    Available today. Themeable via CSS variables or design tokens.

    Developer Experience

    We obsess over the first 10 minutes with our API.

    REST + Webhooks

    Clean JSON responses. Predictable error codes. No SOAP, no OCPP state machines in your app.

    API Keys & OAuth

    Authenticate with a static API key for development. Switch to OAuth for production multi-tenant apps.

    Full Docs with Copy-Paste Examples

    Every endpoint documented with Node.js, Python, and curl examples.

    Human-Readable Errors

    { "error": "charger_offline", "message": "JPLUG-035615 has not sent a heartbeat in 3 minutes." } — not error code 500.

    Idempotent Operations

    Safe to retry. Pass an idempotency_key on session start and we guarantee no duplicate sessions.

    SLAs and Observability

    Uptime SLA, monitoring hooks, and session-level logging for high-volume production use.

    Case Study — Grata Technologies

    Grata Technologies shipped EV charging in 4 weeks.

    Grata Technologies (grata.life) — a Toronto-based property technology platform with multi-family buildings across North America — needed to add EV charging to their resident app. Their team had previously scoped a full custom OCPP build at 6 months minimum.

    Using JPlug's API and white-label components, they integrated charger management, session control, and in-app billing for a 120-unit building in Edmonton, AB, in under 4 weeks. Residents see an EV Charging tile directly in the Grata app — no second app, no separate login.

    "Two years on the backlog. Four weeks to production with JPlug."— Grata Technologies engineering team
    < 4 weeks
    Full integration to production
    0
    Separate EV apps for residents
    0 lines
    Of OCPP code written by their team

    Pricing

    Free to develop. Pay per charger in production.

    Sandbox access is free with no time limit or credit card. In production, add $10/month per integration for white-label branding, a custom domain, and API access. Charger management is $25/month per additional charger. No per-API-call fees and no percentage of charging revenue.

    Get your API key and ship your first session today.

    Request sandbox access, then use the documentation's Node.js, Python, and curl examples to build your first integration. We can help verify your production setup when you're ready to launch.

    No credit cardFree sandbox accessOCPP 1.6J & 2.0.1