Developers & integrators

The personalisation engine, as an API

Your app already knows who its members are. SharEarn turns one design into a finished, personalised card for each of them — and hands it back to you, inside your own product. Your users never leave your app.

A developer working at a wide monitor late in the evening
Ribbons of amber and plum light flowing across a dark field
Who this is for

Systems that already have members

If people log in to your product and you know their name, their photo and who they work for, you already have everything a personalised card needs. This is the part you do not have to build.

📇

A CRM

Give every salesperson today's occasion card with their own name and number on it, from inside the CRM they already use.

👥

A community platform

Chapters, federations and member bodies — one approved design, every member's card personalised, no design work asked of anyone.

🏬

A franchise or dealer portal

Head office publishes the artwork; each outlet shares it with its own branch details composed on.

🧩

A SaaS product

Add greetings, milestones and campaign creatives as a feature of your own app, without building a rendering pipeline.

The mental model

Three steps from your database to a finished card

1

Pick a design

Choose the template you want to render — an occasion card, a greeting, a business promotion. The design decides which slots get filled and where they sit.

2

Post the member's details

One call carries the details you already hold: who the card is from, the brand it belongs to, and — on a card about someone — who it is about.

3

Get back a finished image

A composed card image and an attributed link come back. Show them in your app, attach them to a message, or hand them straight to the member to share.

The call

One request: POST /v1/render

The details arrive with the request. Below is a fuller version of the example on the homepage — every slot the three namespaces define, filled in at once.

POST /v1/render

{
  "template": "birthday-classic",

  "brand": {
    "name":      "Lopez Realty",
    "logo_url":  "https://…/lopez-mark.png",
    "chapter":   "Bay Area",
    "website":   "https://lopezrealty.example",
    "phone":     "+1 415 xxx xxxx"
  },

  "personal": {
    "name":      "Maria Lopez",
    "photo_url": "https://…/maria.jpg",
    "position":  "Principal Broker",
    "contact":   "+1 415 xxx xxxx"
  },

  "subject": {
    "name":      "Ayesha Khan",
    "photo_url": "https://…/ayesha.jpg",
    "message":   "Many happy returns from all of us"
  }
}

→ 200 · finished card image · attributed link

personal is the person sharing the card. subject is the person the card is about — a colleague's birthday, an award recipient, a new joiner. On a card that is only about the sharer, you send brand and personal and leave subject out.

The slots

Twelve keys, in three closed namespaces

That is the whole vocabulary. The namespaces are closed, so an unknown key is refused at submit — it is not quietly dropped and it does not render as a blank. If you send a key that is not on this list, the request comes back rejected, which is how you find a typo on your first test rather than on a thousand cards.

NamespaceKeyRequiredWhat it holds
brandbrand.nameRequiredThe organisation or business the card belongs to.
brandbrand.logo_urlOptionalThe logo composed onto the card.
brandbrand.chapterOptionalThe branch, chapter or unit within the organisation.
brandbrand.websiteOptionalThe website shown on the card.
brandbrand.phoneOptionalThe business number shown on the card.
personalpersonal.nameRequiredThe person sharing the card.
personalpersonal.photo_urlOptionalTheir photo. Falls back to initials when it is missing.
personalpersonal.positionOptionalTheir designation or role.
personalpersonal.contactOptionalTheir own number or contact line.
subjectsubject.nameRequired on subject cardsThe person the card is about.
subjectsubject.photo_urlOptionalTheir photo. Falls back to initials when it is missing.
subjectsubject.messageOptionalA short line addressed to them. Maximum 90 characters.
No broken faces Both photo slots fall back to initials when you have no photo for someone — so a half-filled member record still produces a card you would be happy to send.
Authentication & isolation

Your key, your tenancy, and none of your users

🔑

A per-client key

Each integrating client authenticates with its own key. There is no shared key and no end-user login to arrange — your app calls us, your users do not.

🧱

Clients are isolated

One client's designs, calls and rendered output are not reachable from another's. Isolation is the boundary, not a setting you have to switch on.

🔒

We store nothing about your users

Member details arrive with the render call and are used to compose that card. SharEarn keeps no record of the people in your system — there is no profile of your users here to leak, export or reconcile.

This is usually the part that decides the integration. You are not handing a member database to a third party; you are sending the fields for one card, one call at a time.

What comes back

A finished card, and a link that carries credit

Two things return from a render. The card image is composed and final — no client-side compositing, no font loading, no canvas work in your app. The attributed link travels with the card, so a share that came from your platform is still recognisable as such once it has left it.

Live today Nexus CRM runs its own member sharing on this API today. It is a working integration in production use — not a pilot, and not a demo.

Output today is image cards. Personalised video is coming; nothing else is promised beyond that.

Getting started

Ask us for a key

There is no self-serve key issuance yet, so access is arranged by hand. Use the contact form on the organisations page — tell us what you are building and roughly how your members are structured, and we will take it from there.

Request API access  See the plans →

Per-client keys · client isolation · we store nothing about your users