Send link request to another member

POST /api/members/{memberId}/link-requests

Success: 200 OK

Overview

Invites another existing member to be linked to this one, so the two accounts can share memberships and book for each other. The invitation is pending until the other member accepts it with Accept a link request from a primary member; nothing is linked by this call alone.

You identify the other member by their personal details, not by their member id. All four fields must match a member record: first name and last name compared case-insensitively, email compared exactly, and date of birth matched to the day. If no member matches, the request fails with 404 — which in practice means "these details do not identify anyone", not "that person has no account".

The rules the sender and receiver must satisfy are strict, and each has its own status code:

On success a message is published internally, which is what triggers the notification to the invited member.

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

Endpoint

POST {base_url}/api/members/{memberId}/link-requests

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

Path parameters

NameTypeRequiredDescription
memberIdinteger (int32)YesThe member sending the invitation. Must match the member id in your access token, or be a member linked to it. This member becomes the primary of the link if the invitation is accepted.

Request body

All four fields identify the member being invited, and all four are used in the lookup — omitting any of them will fail to match.

FieldTypeRequiredDescription
firstNamestringYesThe invited member's first name(s) as recorded on their account. Compared case-insensitively, but not trimmed or fuzzy-matched, so it must otherwise be exact.
lastNamestringYesThe invited member's surname as recorded on their account. Compared case-insensitively.
dateOfBirthstring (date-time)YesThe invited member's date of birth. Matched to within a day either side, so the time component does not matter. Also used for the age-of-consent check, which uses this value, not the date of birth stored on the matched account.
emailstringYesThe invited member's home email address. Compared exactly, including case, so it must be reproduced as they registered it.

Sample request

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

Response fields

This action returns the single link request it created — a flat object with id, firstName, lastName, createdOn, senderMemberId, receiverMemberId and email — not the sent/received envelope shown below. That envelope is the shape returned by Get pending link requests for member; the two share a response type in the schema. Build against the flat object, and use the pending-requests endpoint if you need both directions.

FieldTypeDescription
sentarray of objectInvitations this member has sent and that are still awaiting a response. Populated by the pending-requests endpoint, not by this one.
sent[].idinteger (int32)The link request's id. Pass it to Delete link request to withdraw the invitation.
sent[].firstNamestringThe invited member's first name.
sent[].lastNamestringThe invited member's surname.
sent[].createdOnstring (date-time)When the invitation was created. Stamped from the server's local clock, not UTC.
sent[].senderMemberIdinteger (int32)The member who sent the invitation — the one who becomes primary if it is accepted.
sent[].receiverMemberIdinteger (int32)The member who was invited, resolved from the personal details you supplied. This is how you learn their member id.
sent[].emailstringThe email address the invitation was matched on.
receivedarray of objectInvitations sent to this member by others and still awaiting their response. Populated by the pending-requests endpoint, not by this one.
received[].idinteger (int32)The link request's id, for accepting or declining it.
received[].firstNamestringThe inviting member's first name.
received[].lastNamestringThe inviting member's surname.
received[].createdOnstring (date-time)When the invitation was created.
received[].senderMemberIdinteger (int32)The member who sent the invitation.
received[].receiverMemberIdinteger (int32)The member who was invited — this member.
received[].emailstringThe inviting member's email address.

Sample response

200 OK
{
  "sent": [
    {
      "id": 12345,
      "firstName": "string",
      "lastName": "string",
      "createdOn": "2026-08-14T19:00:00Z",
      "senderMemberId": 12345,
      "receiverMemberId": 12345,
      "email": "member@example.com"
    }
  ],
  "received": [
    {
      "id": 12345,
      "firstName": "string",
      "lastName": "string",
      "createdOn": "2026-08-14T19:00:00Z",
      "senderMemberId": 12345,
      "receiverMemberId": 12345,
      "email": "member@example.com"
    }
  ]
}

Errors

StatusMeaningWhen
400Bad requestThe invited member is below the tenant's age of consent: Age of consent is greater than the age of the member.
400Bad requestThe details identify the sender: You cannot send a link request to yourself.
400Bad requestThe two members are already linked: This link already exists between {senderId} and {receiverId}
400Bad requestAn identical invitation is already pending: The request link between {senderId} and {receiverId} was already sent.
400Bad requestThe sender's links plus pending invitations have reached the tenant's cap: Maximum limit of linked members for this member has been reached
404Not foundNo member matches the four personal details supplied: The member with the ID: 0 does not exist.
404Not foundThe sending member does not exist: The sender member: {memberId}, does not exists in the database.
409ConflictThe sender is already a secondary member in someone else's link: The member with ID:{memberId} is a secondary one.
409ConflictThe invited member is already linked to someone: The receiver member {receiverId} is already linked to another member
409ConflictThe invited member is a primary of their own link group: The member with ID:{receiverId} is a primary one.
500Internal server errorThe link request could not be saved, the notification could not be sent, or an unexpected server-side failure occurred.

This page as markdown · All pages · llms.txt