> ## Documentation Index
> Fetch the complete documentation index at: https://learn.nexudus.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Get one CrmOpportunity

> Retrieve a single CrmOpportunity record by its Id.

A **CrmOpportunity** represents a potential or existing deal linked to a customer record that moves through stages on a CRM board.

Opportunities track the lifecycle of a customer interaction — from initial enquiry or tour request through to a won or lost outcome. Each opportunity sits in a single CRM stage (`CrmBoardColumn`) and can be moved between stages manually or automatically via stage auto-assignment rules.

Key fields:

* **Status** — `InProgress`, `Won`, or `Lost`. Stages with `WinOpportunity` or `LoseOpportunity` update this automatically.
* **LeadSource** — how the opportunity was acquired (e.g. Web, Phone, Referral, Broker, GoogleSearch).
* **LossReason** — why the opportunity was lost (e.g. Price, Competition, Location). Only meaningful when Status is `Lost`.
* **Value** — expected revenue if the opportunity is won.
* **DueDate** — follow-up date for the opportunity.
* **UTM fields** — automatically populated from the URL the opportunity used to reach the sign-up or contact form.

There is a limit of 5,000 opportunities per location.

## Authentication

<Note>
  This endpoint requires OAuth2 authentication. Include a valid bearer token in the `Authorization` header.
  The authenticated user must be a full unrestricted administrator or have the **`CrmOpportunity-Read`** role.
</Note>

## Path Parameters

<ParamField path="id" type="integer" required>
  The Id of the CrmOpportunity record to retrieve.
</ParamField>

## Code Examples

<CodeGroup>
  ```bash cURL theme={null}
  curl -X GET \
    "https://spaces.nexudus.com/api/crm/crmopportunities/87654321" \
    -H "Authorization: Bearer YOUR_TOKEN"
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch(
    'https://spaces.nexudus.com/api/crm/crmopportunities/87654321',
    {
      headers: {
        'Authorization': 'Bearer YOUR_TOKEN'
      }
    }
  );

  const record = await response.json();
  ```

  ```python Python theme={null}
  import requests

  response = requests.get(
      'https://spaces.nexudus.com/api/crm/crmopportunities/87654321',
      headers={
          'Authorization': 'Bearer YOUR_TOKEN'
      }
  )

  record = response.json()
  ```
</CodeGroup>

## Response

### 200

<ResponseField name="Name" type="string">
  Optional tag to identify this opportunity, useful when the same customer appears in multiple boards.
</ResponseField>

<ResponseField name="CrmBoardColumnId" type="integer">
  Crm Board Column Id.
</ResponseField>

<ResponseField name="CrmBoardColumnName" type="string">
  CRM stage name.
</ResponseField>

<ResponseField name="CrmBoardColumnCrmBoardId" type="integer">
  CRM board ID.
</ResponseField>

<ResponseField name="CrmBoardColumnCrmBoardName" type="string">
  CRM board name.
</ResponseField>

<ResponseField name="CrmBoardColumnCrmBoardBusinessId" type="integer">
  Business ID of the CRM board.
</ResponseField>

<ResponseField name="CrmBoardColumnCrmBoardBusinessName" type="string">
  Business name of the CRM board.
</ResponseField>

<ResponseField name="CrmBoardColumnCrmBoardBusinessCurrencyId" type="integer">
  Currency ID of the CRM board's business.
</ResponseField>

<ResponseField name="CrmBoardColumnCrmBoardBusinessCurrencyCode" type="string">
  Currency code of the CRM board's business.
</ResponseField>

<ResponseField name="CoworkerId" type="integer">
  Coworker Id.
</ResponseField>

<ResponseField name="CoworkerFullName" type="string">
  Customer full name.
</ResponseField>

<ResponseField name="CoworkerCoworkerType" type="string">
  Customer record type.
</ResponseField>

<ResponseField name="CoworkerCompanyName" type="string">
  Customer company name.
</ResponseField>

<ResponseField name="CoworkerEmail" type="string">
  Customer email address.
</ResponseField>

<ResponseField name="TeamId" type="integer">
  Team Id.
</ResponseField>

<ResponseField name="TeamName" type="string">
  Team name.
</ResponseField>

<ResponseField name="TeamDescription" type="string">
  Team description.
</ResponseField>

<ResponseField name="TeamProfileWebsite" type="string">
  Team profile website.
</ResponseField>

<ResponseField name="OpportunityTypeId" type="integer">
  Opportunity type used to categorise and auto-populate general notes from a template.
</ResponseField>

<ResponseField name="OpportunityTypeName" type="string">
  Opportunity type name.
</ResponseField>

<ResponseField name="ResponsibleId" type="integer">
  Admin user responsible for managing this opportunity.
</ResponseField>

<ResponseField name="ResponsibleFullName" type="string">
  Responsible admin full name.
</ResponseField>

<ResponseField name="ReferrerId" type="integer">
  Customer who referred this opportunity.
</ResponseField>

<ResponseField name="AgentId" type="integer">
  External agent or broker who brought this opportunity.
</ResponseField>

<ResponseField name="Notes" type="string">
  General notes visible to admins when viewing the opportunity. Auto-populated from the opportunity type template if a type is assigned.
</ResponseField>

<ResponseField name="Completed" type="boolean">
  Whether the opportunity has been completed (won or lost).
</ResponseField>

<ResponseField name="DueDate" type="string">
  Follow-up date for the opportunity.
</ResponseField>

<ResponseField name="Value" type="number">
  Expected revenue if the opportunity is won.
</ResponseField>

<ResponseField name="Reminded" type="boolean">
  Whether a follow-up reminder has been sent for this opportunity.
</ResponseField>

<ResponseField name="LeadSource" type="integer">
  How the opportunity was acquired (e.g. Web, Phone, Referral, Broker, GoogleSearch).
</ResponseField>

<ResponseField name="LossReason" type="integer">
  Why the opportunity was lost (e.g. Price, Competition, Location). Only relevant when Status is Lost.
</ResponseField>

<ResponseField name="Status" type="integer">
  Opportunity status: InProgress (still active), Won (led to a sale), or Lost (did not lead to a sale). See `eCrmOpportunityStatus` enum values: `1` = InProgress, `2` = Won, `3` = Lost.
</ResponseField>

<ResponseField name="WonOn" type="string">
  Date when the opportunity was marked as won.
</ResponseField>

<ResponseField name="LostOn" type="string">
  Date when the opportunity was marked as lost.
</ResponseField>

<ResponseField name="CrmUpdatedOn" type="string">
  Timestamp of the last CRM-related update to this opportunity.
</ResponseField>

<ResponseField name="Position" type="integer">
  Display order of the opportunity within its current stage.
</ResponseField>

<ResponseField name="UtmSource" type="string">
  UTM source parameter captured from the URL the opportunity used.
</ResponseField>

<ResponseField name="UtmMedium" type="string">
  UTM medium parameter captured from the URL the opportunity used.
</ResponseField>

<ResponseField name="UtmCampaign" type="string">
  UTM campaign parameter captured from the URL the opportunity used.
</ResponseField>

<ResponseField name="UtmContent" type="string">
  UTM content parameter captured from the URL the opportunity used.
</ResponseField>

<ResponseField name="UtmTerm" type="string">
  UTM term parameter captured from the URL the opportunity used.
</ResponseField>

<ResponseField name="Id" type="integer">
  Unique record identifier.
</ResponseField>

<ResponseField name="UniqueId" type="string">
  UUID of the record.
</ResponseField>

<ResponseField name="CreatedOn" type="string">
  Date and time the record was created (ISO 8601).
</ResponseField>

<ResponseField name="UpdatedOn" type="string">
  Date and time the record was last updated (ISO 8601).
</ResponseField>

<ResponseField name="UpdatedBy" type="string">
  Email of the user who last updated this record.
</ResponseField>

<ResponseField name="IsNew" type="boolean">
  Whether the record was recently created.
</ResponseField>

<ResponseField name="SystemId" type="string">
  External system identifier.
</ResponseField>

```json Example Response theme={null}
{
  "Name": null,
  "CrmBoardColumnId": 0,
  "CrmBoardColumnName": null,
  "CrmBoardColumnCrmBoardId": null,
  "CrmBoardColumnCrmBoardName": null,
  "CrmBoardColumnCrmBoardBusinessId": null,
  "CrmBoardColumnCrmBoardBusinessName": null,
  "CrmBoardColumnCrmBoardBusinessCurrencyId": null,
  "CrmBoardColumnCrmBoardBusinessCurrencyCode": null,
  "CoworkerId": null,
  "CoworkerFullName": null,
  "CoworkerCoworkerType": null,
  "CoworkerCompanyName": null,
  "CoworkerEmail": null,
  "TeamId": null,
  "TeamName": null,
  "TeamDescription": null,
  "TeamProfileWebsite": null,
  "OpportunityTypeId": null,
  "OpportunityTypeName": null,
  "ResponsibleId": null,
  "ResponsibleFullName": null,
  "ReferrerId": null,
  "AgentId": null,
  "Notes": null,
  "Completed": false,
  "DueDate": null,
  "Value": null,
  "Reminded": false,
  "LeadSource": 0,
  "LossReason": 0,
  "Status": 0,
  "WonOn": null,
  "LostOn": null,
  "CrmUpdatedOn": null,
  "Position": 0,
  "UtmSource": null,
  "UtmMedium": null,
  "UtmCampaign": null,
  "UtmContent": null,
  "UtmTerm": null,
  "Id": 87654321,
  "UpdatedOn": "2025-01-15T10:30:00Z",
  "CreatedOn": "2025-01-10T08:00:00Z",
  "UniqueId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "UpdatedBy": "admin@example.com",
  "IsNew": false,
  "SystemId": null,
  "ToStringText": "CrmOpportunity Example",
  "LocalizationDetails": null,
  "CustomFields": null
}
```
