# Batch Create Co-Sell Referrals

`POST https://api.suger.cloud/org/{orgId}/cosell/referral/batchCreate`

Create multiple co-sell referrals in one call. Supports AWS / AZURE / GCP (CRM-driven bulk share) and SUGER (PRM bulk deal-registration upload). Each item in the batch is an `CosellReferral` value following the same partner-specific nested required-field rules as CreateCosellReferral — see that operation's description for the exact `info.aceOpportunityV2` / `info.microsoftReferralSet` / `info.gcpOpportunityV2` / `info.sugerOpportunity` paths.

IMPORTANT: keep batch size small (at most 20). Larger batches risk hitting partner API rate limits (AWS ACE in particular). For very large imports, split into multiple calls.

Use this when: user wants to share a small set of opportunities with a partner at once. For one-off creates, use CreateCosellReferral.

## Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `orgId` | path | string | yes | Organization ID |

## Request Body

Required.

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

**`BatchCreateCosellReferralsRequest`** fields:

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `cosellReferrals` | object | yes |  |
| `crmPartner` | Partner | yes |  |
| `partner` | Partner | yes |  |

## Responses

### 200 — OK

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

**`OperationExecutionDetails`** fields:

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `newWorkflowStarted` | boolean | no |  |
| `referralId` | string | no | ReferralID is the created referral's id, set by the SUGER co-sell create so the caller can chain follow-up calls (e.g. InviteCosellPartners) onto the new engagement without re-querying. Empty elsewhere. |
| `runID` | string | no |  |
| `slackMirrorWarning` | string | no | SlackMirrorWarning is a non-blocking advisory set when a SUGER co-sell console message was saved but could not be mirrored to the partner's Slack channel (no workspace connected, no channel mapped, bot not in the channel, or a transient post failure). Empty when the message mirrored or Slack is not involved. The console surfaces it as a warning toast; the message is always persisted regardless (best-effort mirror). |
| `status` | string | no |  |
| `workflowID` | string | no |  |

### 400 — Bad request error

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

**`ErrorResponse`** fields:

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `code` | ErrorCode | no |  |
| `info` | object | no |  |
| `message` | string | no |  |

### 500 — Internal server error

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

**`ErrorResponse`** fields:

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `code` | ErrorCode | no |  |
| `info` | object | no |  |
| `message` | string | no |  |

## Example

_Generated from this operation's schema. Values are placeholders — substitute your own ids, and set `SUGER_TOKEN` to a bearer token from the [OAuth client-credentials exchange](https://doc.fours.com/settings/oauth-app/)._

### Request

```bash
curl -X POST 'https://api.suger.cloud/org/{orgId}/cosell/referral/batchCreate' \
  -H "Authorization: Bearer $SUGER_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{
  "cosellReferrals": {},
  "crmPartner": "",
  "partner": ""
}'
```

### Response — 200

```json
{
  "newWorkflowStarted": true,
  "referralId": "01H0000000000000000000",
  "runID": "01H0000000000000000000",
  "slackMirrorWarning": "string",
  "status": "string",
  "workflowID": "01H0000000000000000000"
}
```

### Error — 400

```json
{
  "code": "InternalServerError",
  "message": "string"
}
```

---

API reference: https://doc.fours.com/api/
