# Get co-sell dashboard / insights

`GET https://api.suger.cloud/org/{orgId}/cosell/metric`

Retrieve co-sell analytics for the organization. The response shape depends on the `page` query param:
- (page omitted): legacy 12-month overview (Overview + CntMonthly only; a different schema from the page-specific responses below)
- performance: aggregate KPIs over the period (pipeline, win rate, etc.) — pass `page=performance` explicitly
- actions: outstanding referrals needing user action
- logs: time-ordered execution log (returns ListOperationsResponse, not CosellDashboardData)

Time window controlled by `period` (7d, 30d default, quarter, year, or `custom_<YYYY-MM-DD>_<YYYY-MM-DD>` for an explicit range). On the logs page, further narrow with `partner` (AWS / AZURE / GCP), `action`, `status` (Temporal workflow status: Running/Completed/Failed/Canceled/Terminated/ContinuedAsNew/TimedOut — NOT the Suger referral status enum), and `search` (free text or UUID).

Use this when: user asks for co-sell KPIs, pipeline summary, or recent activity.

## Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `orgId` | path | string | yes | Organization ID |
| `contactId` | query | string | no | Optional contact ID to filter referrals (legacy mode) |
| `page` | query | string | no | Dashboard page: performance (default), actions, logs |
| `period` | query | string | no | Time period: 7d, 30d (default), quarter, year |
| `nocache` | query | boolean | no | Bypass cache and force fresh data |
| `action` | query | string | no | Filter by cosell action type (logs page only, e.g. AutoCreate) |
| `partner` | query | string | no | Filter by cloud partner (logs page only, e.g. AWS) |
| `status` | query | string | no | Filter by Temporal execution status (logs page only). One of: Running, Completed, Failed, Canceled, Terminated, ContinuedAsNew, TimedOut. |
| `search` | query | string | no | Search referrals by name, external ID, or UUID (logs page only) |
| `offsetToken` | query | string | no | Pagination cursor for the logs page; echo the token from the previous response to fetch the next page |
| `pageSize` | query | integer | no | Page size (logs page only). 1–100, default 50. |

## Responses

### 200 — OK

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

**`CosellDashboardData`** fields:

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `actions` | CosellActionsData | no |  |
| `closedWon` | CosellClosedWonSummary | no |  |
| `cntMonthly` | array<CosellMonthlyTrend> | no |  |
| `overview` | CosellOverview | no |  |
| `providerMetrics` | array<CosellProviderMetric> | no |  |
| `tcvMonthly` | array<CosellMonthlyTCV> | no |  |
| `topContacts` | array<CosellTopContact> | no |  |
| `trends` | array<CosellTrendBucket> | no |  |

**`CosellActionsData`** fields:

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `actionRequired` | array<CosellActionReferral> | no |  |
| `duplicates` | CosellDuplicateSummary | no |  |
| `failureReasons` | array<CosellFailureReason> | no |  |
| `pendingAcceptance` | array<CosellActionReferral> | no |  |

**`CosellClosedWonSummary`** fields:

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `mainCurrencyRevenue` | CosellRevenueMetric | no |  |
| `otherCurrencyRevenue` | array<CosellRevenueMetric> | no |  |
| `providerCounts` | array<CosellProviderCount> | no |  |
| `totalCount` | integer | no |  |
| `trendDelta` | integer | no |  |

**`CosellMonthlyTrend`** fields:

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `inboundCount` | integer | no |  |
| `month` | string | no |  |
| `outboundCount` | integer | no |  |
| `total` | integer | no |  |

**`CosellOverview`** fields:

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `activeCount` | integer | no |  |
| `avgPerDay` | string | no |  |
| `closedLostCount` | integer | no |  |
| `closedWonCount` | integer | no |  |
| `inboundWinRate` | string | no |  |
| `outboundWinRate` | string | no |  |
| `tcv` | array<CosellTCVByCurrency> | no |  |
| `totalCount` | integer | no |  |
| `winRate` | string | no |  |
| `winRateTrend` | string | no |  |
| `yoyGrowthRate` | string | no |  |

**`CosellProviderMetric`** fields:

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `lostCount` | integer | no |  |
| `partner` | string | no |  |
| `totalCount` | integer | no |  |
| `winRate` | string | no |  |
| `winRateTrend` | string | no |  |
| `wonCount` | integer | no |  |

**`CosellMonthlyTCV`** fields:

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `month` | string | no |  |
| `tcv` | array<CosellTCVByMonth> | no |  |

**`CosellTopContact`** fields:

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `contactId` | string | no |  |
| `name` | string | no |  |
| `partner` | string | no |  |
| `referrals` | integer | no |  |
| `winRate` | string | no |  |
| `wonCount` | integer | no |  |

**`CosellTrendBucket`** fields:

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `date` | string | no |  |
| `lostCount` | integer | no |  |
| `referralCount` | integer | no |  |
| `wonCount` | integer | no |  |

**`CosellActionReferral`** fields:

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `account` | string | no |  |
| `direction` | string | no |  |
| `externalId` | string | no |  |
| `id` | string | no |  |
| `name` | string | no |  |
| `partner` | string | no |  |
| `stage` | string | no |  |
| `status` | string | no |  |

**`CosellDuplicateSummary`** fields:

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `groups` | array<CosellDuplicateGroup> | no |  |
| `totalDuplicates` | integer | no |  |

**`CosellFailureReason`** fields:

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `agentId` | string | no | AgentID is the AI agent ID for generating fix suggestions (empty until agent is registered) |
| `count` | integer | no |  |
| `errorMessage` | string | no |  |
| `referrals` | array<CosellFailureRef> | 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 |  |

---

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