Hosted chat for your product

Every message,
patched through.

RelayCentre runs the chat inside your app — conversations, live delivery, moderation and usage billing — so your team builds the product, not the plumbing.

Free Dev plan · 5,000 credits every month · no card

Centre · Brightpath Tutors live
    Example thread messages with their sequence numbers. A phone number in one message is replaced by “[removed]” before it is stored.

    How it works

    One message, four stops

    1. 01

      Checked

      Moderation reads it before anything is stored. Phone numbers, links and abuse are redacted, held for review or refused, as you choose.

    2. 02

      Numbered

      It takes the next number in its thread. No gaps and no duplicates, even when a phone on a bad network sends it twice.

    3. 03

      Stored

      It is written to your centre only. Isolation is enforced inside the database, not just in our code.

    4. 04

      Delivered

      Open apps receive it live over SSE or WebSocket. Your server gets a signed webhook, retried until it answers.

    Safety

    Safe on day one

    Built for tutoring centres, schools and communities where the people chatting may be young. The defaults protect them before you change a setting; you decide how strict each rule is.

    Held and removed messages are kept as evidence. Their sender cannot delete them.

    What the other person sees

    call me on [removed] after class

    rule: phone numbers · action: redact · stored without the number

    • Phone numbersRedact
    • E-mail addressesRedact
    • LinksRedact
    • ProfanityRedact
    • Invites to other appsOff
    • Your own blocked wordsHold for review

    Pricing

    Pay for what moves

    Integration

    Two calls from your server

    Keep your secret key on your server. Give each signed-in user a short-lived token, and the browser chats directly with RelayCentre — no chat traffic through your backend.

    // On your server — never in the browser.
    const RC = 'https://api.relaycentre…/v1';
    const headers = { 'X-Api-Key': process.env.RELAYCENTRE_SECRET_KEY,
                      'Content-Type': 'application/json' };
    
    // 1. Make sure the signed-in user exists in your centre.
    await fetch(`${RC}/chat/participants`, { method: 'POST', headers,
      body: JSON.stringify({ external_id: user.id, display_name: user.name }) });
    
    // 2. Hand the browser a token that lasts 15 minutes.
    const res = await fetch(`${RC}/chat/participant-tokens`, { method: 'POST', headers,
      body: JSON.stringify({ external_id: user.id, ttl_seconds: 900 }) });

    Open your centre in a minute

    Your e-mail, a name for your centre, and you have an API key.

    Create a centre