Create or update a person
This page needs your own installation with an Embed license.
PUT/
Creates a person by your ID, or updates their name or email.
Needs a partner key: Authorization: Bearer gre_…, from Platform › Partner keys. Call it from your server only.
Parameters
Path
userIdRequired · stringYour ID for the person.
Body
nameOptional · stringUp to 200 characters. Needed to create.
emailOptional · string or nullUp to 320 characters. Contact only: never who they are, never a sign-in.
nullclears it.
Responses
- 200OK
Updated.
- 201Created
Created.
A field isn’t valid.
details.fieldnames it.Something failed on the installation’s side. Try again.
Any call can also answer: 401 UNAUTHORIZED · 403 EMBED_NOT_LICENSED · 403 IP_NOT_ALLOWED · 413 PAYLOAD_TOO_LARGE · 415 INVALID_CONTENT_TYPE · 429 RATE_LIMITED · 503 BUSY. See Errors.
Request
GORUNNER="https://automations.example.com"
GORUNNER_EMBED_KEY="YOUR_PARTNER_KEY" # gre_…
USER_ID="ada-123"
curl -X PUT "$GORUNNER/api/embed/v1/users/$USER_ID" \
-H "Authorization: Bearer $GORUNNER_EMBED_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Ada Lovelace",
"email": "ada@bakery.example"
}'const GORUNNER = "https://automations.example.com";
const KEY = process.env.GORUNNER_EMBED_KEY; // gre_…
const USER_ID = encodeURIComponent("ada-123");
const res = await fetch(
`${GORUNNER}/api/embed/v1/users/${USER_ID}`,
{
method: "PUT",
headers: {
Authorization: `Bearer ${KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
name: "Ada Lovelace",
email: "ada@bakery.example",
}),
},
);
const { data } = await res.json();import os, requests
from urllib.parse import quote
GORUNNER = "https://automations.example.com"
KEY = os.environ["GORUNNER_EMBED_KEY"] # gre_…
USER_ID = quote("ada-123", safe="")
res = requests.put(
f"{GORUNNER}/api/embed/v1/users/{USER_ID}",
headers={"Authorization": f"Bearer {KEY}"},
json={
"name": "Ada Lovelace",
"email": "ada@bakery.example",
},
)
data = res.json()["data"]Response · 200 OK
{
"data": {
"id": "ada-123",
"name": "Ada Lovelace",
"email": "ada@bakery.example",
"memberships": [],
"createdAt": "2026-10-20T08:00:00Z",
"updatedAt": "2026-10-25T09:00:00Z"
}
}Every field
Body
nameOptional · stringRequired to create. Left out or null: left as it is.
emailOptional · string or nullContact data only. Left out: left as it is. Null or empty clears it. Must look like an email address.
Response · 200 OK, 201 Created
dataobjectidstringnamestringemailstring or nullmembershipsarray of objectsaccountobjectidstringnamestringworkspaceobjectidstring or nullThe partner’s workspace id; null for the default workspace.
defaultbooleanrolestringOne of
viewer,operator,editor.createdAttimeupdatedAttime