# Update a co-sell referral (incl. status / stage transitions)

`PATCH https://api.suger.cloud/org/{orgId}/cosell/referral/{referralId}`

Update fields of an existing co-sell referral. Used primarily for business field edits (amount, close date, contacts, etc.). Supports AWS / AZURE / GCP.

Legal Suger unified status values (DB enum, UPPER_SNAKE_CASE): DRAFT, PENDING_CREATE, CREATE_FAILED, UPDATE_FAILED, IN_REVIEW, PENDING_ACCEPTANCE, ACTION_REQUIRED, ACTIVE, EXPIRED, CLOSED_WON, CLOSED_LOST, CLOSED_ERROR, REJECTED.

IMPORTANT: For AWS the unified `status` is recomputed server-side from `info.aceOpportunityV2.lifeCycle`; passing a top-level `status` is not the way to drive state transitions. Instead, edit the partner-specific lifecycle fields and let the server derive `status`.

For AWS inbound referrals, sending a body with `info.aceEngagementInvitation` (and no `info.aceOpportunityV2`) triggers the accept/reject engagement-invitation flow.

NOTE: changing fields here only updates Suger. To push the change to the partner, call SyncSingleReferral with `direction=OUTBOUND` afterwards. `partner=SUGER` (Suger PRM) is not exposed through this MCP tool.

Use this when: user wants to edit a referral's fields or progress an AWS inbound referral via invitation accept/reject.

## Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `orgId` | path | string | yes | Organization ID |
| `referralId` | path | string | yes | Cosell Referral ID |
| `isLinkageUpdate` | query | boolean | no | When true, persist ONLY the CRM-linkage fields (salesforceOpportunityId / salesforceAccountId / hubspotDealId / dynamics365OpportunityId) and skip the partner update validator and outbound sync. The body's partner-opportunity content is ignored. Use this for an account/opportunity match that must link even when the referral's partner-opp would otherwise fail validation (e.g. an AWS referral at Committed stage still carrying solution \ |
| `syncToSlack` | query | boolean | no | When true, mirror the new all-visibility root conversation(s) in this request to the partner's Slack channel (the 'Slack thread' composer mode). Plain Comments and internal notes leave it false; replies mirror based on their root regardless of this flag. Request-only — never persisted. |

## Request Body

Required.

Content-Type: `application/json` · Schema: `orm.CosellReferral`

## Responses

### 200 — OK

Content-Type: `application/json` · Schema: `OperationExecutionDetails`

### 400 — Bad request error

Content-Type: `application/json` · Schema: `ErrorResponse`

### 500 — Internal server error

Content-Type: `application/json` · Schema: `ErrorResponse`

---

Interactive API reference: https://doc.suger.io/api/
