Update Opportunity
PUT/external/v1/opportunities/:idUpdates an existing opportunity and its linked contact. Only provided fields will be updated.
Authentication
Requires opportunities:write permission.
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
id | string | Yes | The unique identifier of the opportunity |
Request Body
All fields are optional. Contact fields update the linked contact; opportunity fields update the opportunity itself.
| Field | Type | Description |
|---|---|---|
name | string | Lead's full name (updates contact name and opportunity title) |
title | string | Contact's job title/position |
company | string | Company name |
location | string | Location |
headline | string | Contact headline |
profile_url | string | Profile URL |
profile_picture | string | Profile picture URL |
email | string | Email address |
phone | string | Phone number |
score | number | Lead score |
notes | string | Additional notes |
owner_user_id | string | Assigned seller |
pipeline_id | string | Pipeline |
stage_id | string | Stage |
TIP
To move the opportunity between stages with automatic lifecycle timestamps and an optional loss reason, use the Update Stage endpoint.
Request
bash
curl --request PUT \
--url "https://app.getraze.com/external/v1/opportunities/opp_abc123def456" \
--header "Content-Type: application/json" \
--header "X-API-Key: YOUR_API_KEY" \
--data '{
"score": 95,
"notes": "Upgraded to enterprise package"
}'javascript
const axios = require('axios');
const opportunityId = 'opp_abc123def456';
const response = await axios.put(
`https://app.getraze.com/external/v1/opportunities/${opportunityId}`,
{
score: 95,
notes: 'Upgraded to enterprise package'
},
{
headers: {
'X-API-Key': 'YOUR_API_KEY',
'Content-Type': 'application/json'
}
}
);
console.log(response.data);python
import requests
opportunity_id = 'opp_abc123def456'
response = requests.put(
f'https://app.getraze.com/external/v1/opportunities/{opportunity_id}',
headers={
'X-API-Key': 'YOUR_API_KEY',
'Content-Type': 'application/json'
},
json={
'score': 95,
'notes': 'Upgraded to enterprise package'
}
)
print(response.json())Response
json
{
"success": true,
"data": {
"id": "opp_abc123def456",
"title": "Acme Inc - Plan Pro",
"score": 95,
"notes": "Upgraded to enterprise package",
"pipeline_id": "pipe_01",
"stage_id": "stg_proposal",
"contact_id": "cnt_abc123",
"contact_name": "John Doe",
"contact_email": "john@example.com",
"contact_company": "Acme Inc",
"contact_title": "CEO",
"owner_user_name": "Maria Silva",
"updated_at": "2026-01-25T10:00:00Z"
}
}Errors
| Status | Code | Description |
|---|---|---|
| 400 | VALIDATION_ERROR | No fields provided to update |
| 404 | NOT_FOUND | Opportunity not found |