---
title: "Update my profile"
method: POST
path: "/v1/actions/update_my_profile"
tags: ["Profile"]
---

# Update my profile

`POST /v1/actions/update_my_profile`

## Request

- Base URL: `https://api.heyreagent.com`
- URL: `https://api.heyreagent.com/v1/actions/update_my_profile`
- Auth: HTTP bearer

Read, preview a change to, or change your own profile.

What comes back depends on action. Called with no field: "current_profile", with profileUrl, experience[].id and education[].id. With a field and confirm false: "preview", with changes, and locationOptions when the place name matched more than one place. With confirm true: "updated".

To edit an existing experience or education entry pass its id; without one a new entry is added.

location is a place name the action looks up itself; locationId overrides it.

Docs: https://heyreagent.com/docs/actions/update_my_profile

## Request body

- object
  - `connectionId` string: Whose profile to edit: the LinkedIn account id from list_linkedin_accounts. May be omitted only when the setup has exactly one live sender.
  - `headline` string: New headline — the line under the name (max 220 characters).
  - `about` string: New About section (max 2600 characters). Replaces the whole section.
  - `location` string: New profile location as a place name, e.g. "Austin, Texas". Matched to a LinkedIn place — the preview shows the match.
  - `locationId` string: An exact LinkedIn place id, taken from locationOptions in a preview. Overrides location.
  - `postalCode` string: 5-digit postal code to go with the location (optional).
  - `websiteLink` object: The link shown near the top of the profile.
    - `type` 'WEBSITE' | 'PORTFOLIO' | 'BLOG' | 'NEWSLETTER' | 'STORE', required: What the link is.
    - `url` string, uri, required: The full https:// URL.
    - `displayOn` 'EVERYWHERE' | 'PROFILE_ONLY': Where LinkedIn shows it (default EVERYWHERE).
  - `experience` object: Add or edit ONE experience entry.
    - `id` string: Id of the experience to EDIT (from the preview's current.experience). Omit to ADD a new one.
    - `role` string: Job title. Required when adding.
    - `company` string: Company name. Required when adding.
    - `companyId` string: LinkedIn company id, to link the entry to that company page (e.g. a companyId from search_companies).
    - `location` string: Where the job is / was, as free text.
    - `presence` 'ON_SITE' | 'HYBRID' | 'REMOTE'
    - `startDate` object
    - `endDate` object: Omit for a current position. Needs startDate with it, also when editing an entry (pass the start date the entry has).
    - `description` string
    - `notifyNetwork` boolean: true = let LinkedIn announce it to the network. Default false (no announcement).
  - `education` object: Add or edit ONE education entry.
    - `id` string: Id of the education entry to EDIT (from the preview's current.education). Omit to ADD a new one.
    - `school` string: School name. Required when adding.
    - `degree` string
    - `fieldOfStudy` string
    - `grade` string
    - `activities` string
    - `description` string
    - `startDate` object
    - `endDate` object
    - `notifyNetwork` boolean: true = let LinkedIn announce it to the network. Default false (no announcement).
  - `addSkills` string[]: Skills to ADD to the profile, by name (up to 20 per call). Skills already on the profile are kept; removing a skill is not possible here.
  - `pictureUrl` string, uri: New PROFILE picture: a public https:// link straight to a JPEG or PNG file (max 8MB). LinkedIn applies its default crop.
  - `coverPictureUrl` string, uri: New COVER (banner) picture: a public https:// link straight to a JPEG or PNG file (max 8MB). LinkedIn's banner is 1584×396.
  - `openToWork` object: Set the "open to work" job preferences. It cannot be turned off from here.
    - `jobTitles` string[], required: Job titles the person is open to (1–5), by name — each is matched to LinkedIn's own title list.
    - `workplaces` string[], required: Which workplace types: ON_SITE, HYBRID, REMOTE.
    - `onSiteLocations` string[]: Places for on-site / hybrid work, by name. Required when workplaces has ON_SITE or HYBRID.
    - `remoteLocations` string[]: Places (usually countries) for remote work, by name. Required when workplaces has REMOTE.
    - `startDate` 'IMMEDIATELY' | 'FLEXIBLE'
    - `employmentTypes` string[]
    - `visibility` 'RECRUITERS_ONLY' | 'ALL', required: RECRUITERS_ONLY = only people using LinkedIn Recruiter see it. ALL = everyone sees it, with the green #OpenToWork frame on the profile photo — ask the user which, never assume.
  - `confirm` boolean: false (default) = preview only, nothing changes. true = change the profile now (only after the user said yes).

## Response `200`

It worked. Inside result: action, account, message, profileUrl, experience, education, locationOptions, changes.

- Worked
  - `ok` true, required
  - `result` object, required: What was asked for. A field that does not apply is left out, or is null.

## Other responses

- `default`: It did not work. The message says why, in plain English.

---

[API](https://skmtc.dev/heyreagent/apis/heyreagent-api.md) · [All operations](https://skmtc.dev/heyreagent/apis/heyreagent-api/llms.txt) · [OpenAPI document](https://skmtc.dev/heyreagent/apis/heyreagent-api/revisions/917360c5f841?raw)
