Update a member's basic profile details

PUT /api/members/{memberId}/profile

Overview

Updates the core identity fields on a member record — name, title, date of birth, email, join date — and the three administrative codes that classify the member: siteId, statusId and priceLevelId.

This is a partial update with one exception. Every field you omit (or send as null) is left at its current value, so you can send only the fields you are changing. The exception is titleId: if you omit it, send null or send an empty string, the member's title is overwritten with the default title UNKNO. If you are not changing the title, send the member's current titleId back.

Validation runs against the member record as it will be after your changes, so a change to dateOfBirth is checked against the price level you are also setting in the same request. All validation failures return 400 with a plain-text message; nothing is written unless every check passes.

Linked members are permitted — a token issued for a member linked to {memberId} may call this endpoint.

Endpoint

PUT {base_url}/api/members/{memberId}/profile

{base_url} is the environment URL issued to your integration. See Authenticating with Gladstone APIs.

Path parameters

NameTypeRequiredDescription
memberIdinteger (int32)YesThe member whose profile is updated. Must match the member id in your access token, or be a member linked to it, or the request is rejected. Any id in the body is ignored and replaced with this value.

Request body

FieldTypeRequiredDescription
titleIdstringNoThe member's form of address, as an id from the tenant's title list. 1–15 characters. Omitting this field does not leave the title alone — an absent, null or empty titleId resets the member's title to the default UNKNO. Send the current value back if you are not changing it. A value that does not exist in the title list is rejected with 400 Title ID {titleId} not found.
firstNamestringNoThe member's forename(s), maximum 25 characters. Omit, or send null or an empty string, to leave the existing value unchanged — this field cannot be cleared through this endpoint.
lastNamestringNoThe member's surname, 1–25 characters. Omit, or send null or an empty string, to leave the existing value unchanged — this field cannot be cleared through this endpoint.
dateOfBirthstring (date-time)NoThe member's date of birth. Must not be in the future. Omit or send null to leave it unchanged. Some price levels are age-restricted: if the price level in force after this request requires a date of birth and the member has none, the call fails with A date of birth is required for this price level; if the date of birth falls outside the price level's age range it fails with The member's date of birth is outside of the age range defined on the price level.
siteIdstringNoThe centre the member is registered at, 1–15 characters. Must be an existing site id or the call fails with 400 Site ID {siteId} not found. Omit or send null to leave the member at their current site.
statusIdstringNoThe member's account status code (an id from the tenant's status list), 1–15 characters. Must exist or the call fails with 400 Status ID {statusId} not found. Omit or send null to leave the status unchanged.
priceLevelIdstringNoThe pricing band the member is charged at, 1–15 characters. Must exist or the call fails with 400 Price level ID {priceLevelId} not found. Changing it re-runs the age check described under dateOfBirth. Omit or send null to leave the price level unchanged.
emailstringNoThe member's home email address, maximum 255 characters. Validated as a well-formed address, and must not already belong to a different member — a clash returns 400 A member with that email address already exists. Omit or send null to leave the existing address unchanged.
joinDatestring (date-time)NoThe date the member joined, used as the start of their membership history. Omit or send null to leave the existing join date unchanged.

Sample request

cURL
curl -X PUT '{base_url}/api/members/{memberId}/profile' \
  -H 'Authorization: Bearer {accessToken}' \
  -H 'X-Use-SSO: true' \
  -H 'Content-Type: application/json' \
  -d '{
  "titleId": "string",
  "firstName": "string",
  "lastName": "string",
  "dateOfBirth": "2026-08-14T19:00:00Z",
  "siteId": "string",
  "statusId": "string",
  "priceLevelId": "string",
  "email": "member@example.com",
  "joinDate": "2026-08-14T19:00:00Z"
}'

Errors

A successful call returns 204 No Content with an empty body. Failures return a plain-text message, not JSON.

StatusMeaningWhen
400Bad requestemail is not a well-formed address: The email field is not a valid e-mail address.
400Bad requestemail already belongs to another member: A member with that email address already exists
400Bad requestAn unknown code was supplied: Price level ID … not found, Status ID … not found, Site ID … not found or Title ID … not found
400Bad requestThe price level requires a date of birth the member does not have: A date of birth is required for this price level
400Bad requestThe member's date of birth is outside of the age range defined on the price level
400Bad requestA field breaches its length limit, or dateOfBirth is in the future — for example Last name cannot be more than 25 characters, Date of Birth must not be in the future
404Not foundNo member exists with that id: No member could be found with the ID {memberId}
500Internal server errorThe change could not be saved, or another unexpected server-side failure occurred. No detail is returned in the body.

This page as markdown · All pages · llms.txt