Skip to main content

Manage Stages

There is no dedicated stage-shift endpoint in Public API v2. Change stages by patching the stage attribute on the record. For account lifecycle stage, use the account field current_stage_id instead of stage.

Contact stages

curl -X PATCH "https://api.reevo.ai/api/v2/contact/<contact_id>" \
  -H "Authorization: Bearer <your-api-key>" \
  -H "Content-Type: application/json" \
  -d '{
    "attributes": {
      "stage": "working"
    }
  }'
Contact stage changes can be blocked by entrance criteria. When that happens, the API returns 422 stage_entrance_criteria_not_met.

Opportunity stages

Opportunity stage is required when creating an opportunity.
{
  "attributes": {
    "display_name": "Acme - Enterprise Deal",
    "stage": "proposal",
    "account_id": "<account_id>",
    "amount": 150000
  }
}
Patch the stage attribute to move an opportunity:
curl -X PATCH "https://api.reevo.ai/api/v2/opportunity/<opportunity_id>" \
  -H "Authorization: Bearer <your-api-key>" \
  -H "Content-Type: application/json" \
  -d '{
    "attributes": {
      "stage": "closed_won"
    }
  }'
Opportunity stage writes accept stage ID, API name, or display value when the value resolves unambiguously.

Read-only opportunity fields

Do not write these fields directly:
  • outcome
  • status
  • closed_at
  • stage_last_shifted_at
They are rendered on reads where available, but direct writes are rejected.

Common errors

Error codeUsually meansHow to recover
field_required_missingOpportunity create omitted display_name, stage, or account_idInclude all required fields in the create request
field_value_invalidStage value could not be resolvedUse a valid stage ID, API name, or display value
field_not_updatableRequest tried to write a read-only stage-related fieldRemove read-only fields from the request
stage_entrance_criteria_not_metContact stage move is blocked by criteriaFix the missing prerequisites before retrying