Skip to content

Create a profile share

Gateway module

POST/profile-sharesprofileShares.create

A consent snapshot of profile fields shared with one org. Live updates stop on revoke after close. Creates a profile share. Requires `Idempotency-Key`; a replay returns the original response. The organization is derived from the credential or the parent row, never from the body.

  • Requires the capability me.profile.write.
  • OAuth scopes: me.
  • Send an Idempotency-Key header. A replay with the same key returns the original response.
  • Error statuses: 400, 401, 409, 422, 429. Errors are RFC 9457 problem details.

Request body: ProfileShareCreate

profileShares.create: ProfileShareCreate
FieldTypeRequiredDescription
organization_idstring (uuid) | nullNoIdentifier of the external account sharing its company profile; null when a person shares their own.
shared_fieldsarray of objectYesEach shared field with the value at the time of sharing.
engagement_idstring (uuid) | nullNoIdentifier of the engagement the share serves; live updates flow only while it is open.
{
  "organization_id": "0192f1e2-7c3a-7b4d-9e8f-1a2b3c4d5e6f",
  "shared_fields": [
    {
      "field_key": "headline",
      "field_value": "Head Rigger"
    }
  ],
  "engagement_id": "0192f1e2-7c3a-7b4d-9e8f-1a2b3c4d5e6f"
}

Response 201: ProfileShare

profileShares.create: ProfileShare
FieldTypeRequiredDescription
idstring (uuid)YesIdentifier of the profile share.
created_atstring (date-time)YesWhen the row was created.
updated_atstring (date-time)YesWhen the row was last updated.
person_idstring (uuid) | nullYesIdentifier of the sharing person.
organization_idstring (uuid) | nullYesIdentifier of the external account sharing its company profile; null when a person shares their own.
shared_fieldsarray of objectYesEach shared field with the value at the time of sharing.
shared_atstring (date-time)YesWhen the snapshot was taken.
revoked_atstring (date-time) | nullYesWhen consent was revoked.
engagement_idstring (uuid) | nullYesIdentifier of the engagement the share serves; live updates flow only while it is open.
{
  "id": "0192f1e2-7c3a-7b4d-9e8f-1a2b3c4d5e6f",
  "created_at": "2026-10-08T14:30:00Z",
  "updated_at": "2026-10-08T14:30:00Z",
  "person_id": "0192f1e2-7c3a-7b4d-9e8f-1a2b3c4d5e6f",
  "organization_id": "0192f1e2-7c3a-7b4d-9e8f-1a2b3c4d5e6f",
  "shared_fields": [
    {
      "field_key": "headline",
      "field_value": "Head Rigger"
    }
  ],
  "shared_at": "2026-10-08T14:30:00Z",
  "revoked_at": "2026-10-08T14:30:00Z",
  "engagement_id": "0192f1e2-7c3a-7b4d-9e8f-1a2b3c4d5e6f"
}

Code samples

curl -X POST "$XOS_BASE_URL/profile-shares" \
  -H "Authorization: Bearer $XOS_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"organization_id":"0192f1e2-7c3a-7b4d-9e8f-1a2b3c4d5e6f","shared_fields":[{"field_key":"headline","field_value":"Head Rigger"}],"engagement_id":"0192f1e2-7c3a-7b4d-9e8f-1a2b3c4d5e6f"}'
const { data } = await xos.profileShares.create({
    "organization_id": "0192f1e2-7c3a-7b4d-9e8f-1a2b3c4d5e6f",
    "shared_fields": [
      {
        "field_key": "headline",
        "field_value": "Head Rigger"
      }
    ],
    "engagement_id": "0192f1e2-7c3a-7b4d-9e8f-1a2b3c4d5e6f"
  });
response = xos.profile_shares.create({"organization_id": "0192f1e2-7c3a-7b4d-9e8f-1a2b3c4d5e6f", "shared_fields": [{"field_key": "headline", "field_value": "Head Rigger"}], "engagement_id": "0192f1e2-7c3a-7b4d-9e8f-1a2b3c4d5e6f"})
xos profile-shares create --data '{"organization_id":"0192f1e2-7c3a-7b4d-9e8f-1a2b3c4d5e6f","shared_fields":[{"field_key":"headline","field_value":"Head Rigger"}],"engagement_id":"0192f1e2-7c3a-7b4d-9e8f-1a2b3c4d5e6f"}'