Retrieve an entity's opportunity stages
Operation ID: getOpportunityStages
Group: CRM › Opportunity Stages
Open in the interactive reference
GET /crm/opportunity-stages/{id}
Read-only: Reads and returns; changes nothing.
Retrieves a legal entity's opportunity stages, in order. The :id in the path is the legal entity's id, not a stage id. An entity without stages returns NOT_FOUND. For the stages an opportunity's stageId belongs to, use the opportunity's entityId as the :id.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
Api-Version |
header | string · v1 | yes | The API version this request targets, named by its public identifier. Required on every request; omitting it, or naming a version this company does not have, is answered with 400. This document describes version v1. |
id |
path | string | yes | The legal entity whose stages to return. See id on GET base/entities. |
Response
200 Success
Under data (getOpportunityStagesOutput):
| Field | Type | Required | Description |
|---|---|---|---|
id |
string | yes | The identifier of this set of stages. It currently equals entityId; treat it as opaque. |
entityId |
string | yes | The legal entity the stages belong to. See id on GET base/entities. |
lastModifiedDate |
date-time | no | The date and time any of the stages last changed, in UTC. Format YYYY-MM-DDTHH:mm:ss.sssZ. |
stages |
array<object> | yes | The stages, ordered by orderIndex. |
stages[].id |
string | yes | The unique identifier for the stage. An opportunity's stageId holds this value. |
stages[].stageName |
string | yes | The display name of the stage, for example 'Qualification'. |
stages[].stageType |
any | yes | What reaching the stage means for an opportunity. One of: "open", "closedWon", "closedLost". |
stages[].probability |
decimal | yes | The likelihood that an opportunity in this stage closes as won, as a percentage from 0 to 100. For example, 25 means 25%. A percentage, not an amount, so it has no currency. |
stages[].orderIndex |
number | yes | The position of the stage; stages are ordered by it. Unique within the entity. After any write the positions are 0, 1, 2 … with no gaps. |
stages[].isDeactivated |
boolean | yes | Whether the stage is retired. A deactivated stage stays on record but is not offered for new opportunities. |
stages[].lastModifiedDate |
date-time | no | The date and time the stage record last changed, in UTC. Every write to the entity's stages updates it for every stage. Format YYYY-MM-DDTHH:mm:ss.sssZ. |
{
"data": {
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"entityId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"lastModifiedDate": "2026-01-15T09:30:00.000Z",
"stages": [
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"stageName": "<stageName>",
"stageType": "open",
"probability": "19.99",
"orderIndex": 0,
"isDeactivated": true,
"lastModifiedDate": "2026-01-15T09:30:00.000Z"
}
]
},
"diagnostics": [
{
"code": "<code>",
"message": "<message>",
"severity": "error",
"path": [
"<path>"
],
"details": "<details>"
}
]
}
Errors
| Code | Status |
|---|---|
NOT_FOUND |
400 |
Statuses
400— Invalid request or business failure. Codes: NOT_FOUND401— The request carries no valid access token.403— Not authorized404— Not found429— Too many requests from this client address. The response has no body and noRetry-Afterheader.500— Internal server error