---
title: "Link or unlink a profile's Company. Always a manual, pinned change (company-profiles-spec.md rule 6) — the only automatic path is the domain auto-association job."
method: PATCH
path: "/api/v1/profile/{profileId}/company"
tags: ["Profile"]
---

# Link or unlink a profile's Company. Always a manual, pinned change (company-profiles-spec.md rule 6) — the only automatic path is the domain auto-association job.

`PATCH /api/v1/profile/{profileId}/company`

## Request

- Base URL: `https://api.intheloop.io`
- URL: `https://api.intheloop.io/api/v1/profile/{profileId}/company`
- Auth: API key in header `Authorization`

## Path parameters

- `profileId` string, required

## Headers

- `Loop-Workspace-Id` string
- `Authorization` string
- `X-Impersonate-User` string

## Request body

- ProfileCompanyLinkRequest: Request body to link or unlink a profile's Company.
  - `companyId` string: Company to link, or null to unlink.
  - `companyLinkManual` boolean, required: True for a manual link/unlink (pins the profile so the domain job never overrides it). Always true when called through this endpoint — the only automatic path is the domain job.

## Response `200`

OK

- ProfileUser: Profile user
  - `id` string: Resource id
  - `name` string: Resource name or title
  - `revision` string: Resource revision
  - `clientId` string: Resource client id
  - `$type` string, required
  - `contextType` 'Workspace' | 'Virtual', required: Defines whether a profile context is shared (workspace) or private (user).
  - `isPublic` boolean, required: Indicates whether this profile is public (has identificators) or private.
  - `company` string: Company associated with this profile.
  - `companyId` string: Id of the linked Company entity, or null if unlinked. The only company representation used by new profiles — resolve the display name via this id, it is never denormalized.
  - `companyLinkManual` boolean, required: True when the Company link was set/cleared manually. A manual link is pinned: the domain auto-association job never re-links or switches it.
  - `title` string: Title associated with this profile.
  - `userData` ProfileUserData: Per-user custom data stored on a profile.
    - `nickName` string: Custom nickname for the profile.
    - `notes` string: Free-text notes about this profile.
    - `profileIdentificators` ProfileUserIdentificator[]: Private identificators visible only to this user.
      - `userIdentificator` string: User's Identificator for EmailUser is email for phone is telephone, ....
      - `userType` 'EmailUser' | 'ViberUser' | 'MessengerUser' | 'WhatsappUser' | 'PhoneUser', required: User types
      - `userId` string: User ID.
      - `identificator` string: Unique string identificator for the user in this context.
  - `profileIdentificators` ProfileUserIdentificator[]: Public Identificators linking.
    - `userIdentificator` string: User's Identificator for EmailUser is email for phone is telephone, ....
    - `userType` 'EmailUser' | 'ViberUser' | 'MessengerUser' | 'WhatsappUser' | 'PhoneUser', required: User types
    - `userId` string: User ID.
    - `identificator` string: Unique string identificator for the user in this context.
  - `weight` number, required: Usage weight (contact interaction frequency) for the current user on this profile.

## Other responses

- `400`: Bad request. Check fields message and error code from response body for additional information.
- `401`: Unauthorized request. Check fields message and error code from response body for additional information.
- `404`: Requested resource not found.
- `429`: Too many requests. Check response header Retry-After indicating how long to wait before making a new request.

---

[API](https://skmtc.dev/intheloop/apis/loop-api.md) - [All operations](https://skmtc.dev/intheloop/apis/loop-api/llms.txt) - [OpenAPI document](https://skmtc.dev/intheloop/apis/loop-api/revisions/0892c5ba0787?raw)
