01
Put your details in once
Home, work, the holiday house, the number you actually answer. Keep as many as you need — they are all valid.
You have more than one address and more than one number, and all of them are real. Keep them in one place, and choose which company gets which.
choose the square →
+27 82 461 4417
personal
How it works
01
Home, work, the holiday house, the number you actually answer. Keep as many as you need — they are all valid.
02
When a company asks, you pick the address and number that suit them — and how long they may keep it.
03
New number? Update it here and choose who should hear about it. We show you what arrived and what didn't.
For you
For organisations
Consent you can read
You see the actual address, not the words “your home address”. Optional items arrive unticked. The button counts what you chose, in front of you.
They want to add you as a member and post your card.
Discovery Health now has 2 details from you. Here is exactly what they got and on what terms.
Security & privacy
Organisations pay us to ask you. Nobody pays us to receive an answer you didn’t give.
There is no “accept all” in this product, and optional items are never pre-ticked.
If a company already knows you, we show you and wait. One at a time, always.
Every request, approval, access and change is in your activity list, with the date.
Selective change
When something changes, SameMe shows which organisations use that detail — and says plainly what the rest keep until you decide otherwise.
+27 82 461 4417
Developers
REST, idempotent writes, signed webhooks, and a sandbox with fifteen simulated South African organisations. Consent is a first-class object — you never hold a detail without a record of why you may.
curl -X POST https://api.sameme.co.za/v1/requests \
-H "Authorization: Bearer $SAMEME_KEY" \
-d subject_ref="za-id:8901..083" \
-d reason="Post your membership card" \
-d fields[0][type]=address \
-d fields[0][access]=ongoing \
-d fields[0][updates]=true \
-d fields[1][type]=mobile \
-d fields[1][required]=false
const response = await fetch("https://api.sameme.co.za/v1/requests", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.SAMEME_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
subject_ref: "za-id:8901..083",
reason: "Post your membership card",
fields: [
{ type: "address", access: "ongoing", updates: true },
{ type: "mobile", required: false },
],
}),
});
import os, requests
response = requests.post(
"https://api.sameme.co.za/v1/requests",
headers={"Authorization": f"Bearer {os.environ['SAMEME_KEY']}"},
json={
"subject_ref": "za-id:8901..083",
"reason": "Post your membership card",
"fields": [
{"type": "address", "access": "ongoing", "updates": True},
{"type": "mobile", "required": False},
],
},
)
$response = Http::withToken(env('SAMEME_KEY'))
->post('https://api.sameme.co.za/v1/requests', [
'subject_ref' => 'za-id:8901..083',
'reason' => 'Post your membership card',
'fields' => [
['type' => 'address', 'access' => 'ongoing', 'updates' => true],
['type' => 'mobile', 'required' => false],
],
]);
A better next change