Real-time data plane · edge in 14 regions

Data, the moment
it happens.

Streamplane is a real-time streaming API. Open one connection, subscribe to the channels you care about, and receive every event as it is produced — ordered, replayable, delivered from the edge nearest your users.

< 40 ms p50 edge TLS 1.3 · token auth WebSocket & SSE
GETwss://cdn.hyperline.uk/api/v2/stream
LIVE
Messages / secondlast 60s
1,742▲ live
Incoming events
    Product

    One stream, built for production

    Everything you need to move events in real time — and nothing you don’t.

    Edge delivery

    Points of presence in 14 regions terminate the connection close to the client, keeping the median hop to a subscriber under 40 ms.

    Ordered & replayable

    Every message carries a monotonic sequence number. Reconnect with the last seq you saw and the stream resumes exactly where it stopped.

    Server-side filters

    Subscribe with wildcards and attach JSON filters, so only the events you actually want ever cross the wire.

    Scoped tokens

    Issue tokens limited to specific channels with a TTL, revoke instantly, and mint them server-side so keys never touch the browser.

    WebSocket or SSE

    Browsers, mobile and backends connect to one endpoint. WebSocket for duplex, Server-Sent Events when you only receive.

    SDKs & webhooks

    Typed SDKs for JavaScript, Python and Go, plus outbound webhooks if you would rather receive events as HTTP POSTs.

    Quickstart

    Connected in four lines

    Authenticate with a token, open the stream and subscribe. Messages arrive as JSON frames; one endpoint speaks WebSocket and SSE.

    const ws = new WebSocket("wss://cdn.hyperline.uk/api/v2/stream", {
      headers: { "Authorization": "Bearer " + process.env.SP_TOKEN }
    });
    
    ws.onopen  = () => ws.send(JSON.stringify({ subscribe: ["orders.eu", "prices.*"] }));
    ws.onmessage = (e) => {
      const evt = JSON.parse(e.data);
      console.log(evt.channel, evt.seq, evt.data);
    };
    import os, json, websocket
    
    ws = websocket.create_connection(
        "wss://cdn.hyperline.uk/api/v2/stream",
        header=[f"Authorization: Bearer {os.environ['SP_TOKEN']}"],
    )
    ws.send(json.dumps({"subscribe": ["orders.eu", "prices.*"]}))
    while True:
        evt = json.loads(ws.recv())
        print(evt["channel"], evt["seq"], evt["data"])
    # Server-Sent Events — same data, one-way, over plain HTTPS
    curl -N https://cdn.hyperline.uk/api/v2/stream?channels=orders.eu,prices.* \
      -H "Authorization: Bearer $SP_TOKEN" \
      -H "Accept: text/event-stream"
    
    # event: message
    # data: {"channel":"orders.eu","seq":918342,"data":{...}}
    API

    A small, predictable surface

    One streaming endpoint plus a few REST calls. Base URL https://cdn.hyperline.uk/api/v2.

    MethodPathDescription
    WS/streamOpen the real-time stream and subscribe to channels.
    GET/stream?channels=…The same stream over Server-Sent Events.
    POST/channelsCreate a channel and set its retention window.
    POST/publishPublish an event to a channel from your backend.
    POST/tokensMint a scoped, short-lived subscriber token.
    GET/healthLiveness probe. Returns 200 ok.

    Requests without a valid token are rejected with 400 Bad Request — opening the stream URL in a browser is expected to fail that way.

    Pricing

    Priced per connection and message

    Every plan includes all regions, replay and both transports. Prices in GBP, excluding VAT.

    Free
    £0
    • 50 concurrent connections
    • 1M messages / month
    • 1-hour replay window
    • Community support
    Start free
    Popular
    Developer
    £29 /mo
    • 1,000 concurrent connections
    • 50M messages / month
    • 24-hour replay window
    • Email support
    Choose Developer
    Scale
    £199 /mo
    • 10,000 concurrent connections
    • 1B messages / month
    • 7-day replay window
    • Priority support & SLA
    Choose Scale
    Enterprise
    Custom
    • Unlimited connections
    • Dedicated edge capacity
    • Custom retention
    • 24/7 support & onboarding
    Talk to us

    Overage is billed per million messages. Annual billing saves 15%.

    Request access

    Get an API key

    Streamplane is in managed availability. Tell us about your workload and we’ll send credentials and a sandbox channel.

    • Sandbox token within one business day
    • No card required to evaluate
    • Migration help from WebSocket, MQTT or polling

    Thanks — we’re on it.

    We’ll email your sandbox token within one business day.
    Reference:

    Status

    All systems operational

    Live platform health. No incidents in the current window.

    ComponentRegionStatus
    Streaming edgeGlobal● Operational
    Publish APIeu-west, us-east● Operational
    Token serviceGlobal● Operational
    DashboardGlobal● Operational
    FAQ

    Questions, answered

    How is Streamplane billed?+
    Per concurrent connection and per million messages each month, with volume tiers. Edge delivery is included up to your plan’s allowance. Exact rates are on the pricing section above.
    Do you read the contents of my events?+
    No. Events pass through the edge only to be delivered to your subscribers. We don’t inspect payloads for any other purpose and never use them to train anything.
    What happens if a client disconnects?+
    Reconnect with the last sequence number you saw and the stream resumes from there within the replay window of your plan — no gaps, no duplicates.
    Which languages have SDKs?+
    JavaScript/TypeScript, Python and Go today, with community libraries for Rust and Elixir. The wire protocol is plain JSON over WebSocket or SSE, so any language works.
    Contact

    Talk to the team

    Support

    [email protected]

    Technical questions and incidents.

    Sales

    [email protected]

    Plans, volume pricing and SLAs.

    Privacy

    [email protected]

    Data access and deletion requests.