Update a deal
/v1/crm/deals/{deal_id}Updates the fields you send and leaves the rest unchanged.
custom_fields sent here is stored in the deal's metadata.
Headers
AuthorizationstringRequiredBearerfollowed by a space and your API key, for exampleBearer vk_….
Path parameters
deal_idstring · uuidRequiredID of the deal.
Request body
actual_close_datestring · date-time or nullActual close date (set when deal is won/lost)
at most 2,000 charactersExample"2024-03-15T00:00:00+00:00"custom_fieldsobject or nullCustom fields as key-value pairs
expected_close_datestring · date-time or nullExpected close date
at most 2,000 charactersExample"2024-03-31T00:00:00+00:00"namestring or nullDeal name/title
at most 2,000 charactersExample"Acme Corp - Enterprise License"notesstring or nullDeal notes
at most 2,000 charactersExample"Contract under legal review"owner_idstring · uuid or nullID of the deal owner (user)
at most 2,000 charactersExample"f4a5b6c7-d8e9-0123-f012-456789012345"probabilityinteger or nullWin probability percentage (0-100)
≥ 0≤ 100Example75stage_idstring · uuid or nullMove deal to a different stage
at most 2,000 charactersExample"d2e3f4a5-b6c7-8901-def0-234567890123"valuenumber or nullDeal value in dollars
≥ 0Example75000
Response
200
messagestringRequireddealobjectRequiredThe updated deal
Show 14 child attributesHide child attributes
namestringRequiredDeal name/title
Example"Acme Corp - Enterprise License"actual_close_datestring · date-time or nullActual close date (set when deal is won/lost)
created_atstring · date-time or nullWhen the deal was created
Example"2024-01-15T10:30:00+00:00"custom_fieldsobject or nullCustom fields as key-value pairs
expected_close_datestring · date-time or nullExpected close date
Example"2024-03-31T00:00:00+00:00"idstring or nullDeal ID
Example"e3f4a5b6-c7d8-9012-ef01-345678901234"lead_idstring or nullAssociated lead ID
Example"a1b2c3d4-e5f6-7890-abcd-ef1234567890"metadataobject or nullAdditional metadata
notesstring or nullDeal notes
Example"Initial meeting scheduled for next week"owner_idstring or nullID of the deal owner (user)
Example"f4a5b6c7-d8e9-0123-f012-456789012345"probabilityinteger or nullWin probability percentage (0-100)
Example75stage_idstring or nullCurrent stage ID
Example"d2e3f4a5-b6c7-8901-def0-234567890123"updated_atstring · date-time or nullWhen the deal was last updated
Example"2024-01-20T14:45:00+00:00"valuenumber or nullDeal value in dollars
Example50000
successbooleanDefaulttrue
Errors
Errors share one JSON body: success, error, message, optional details, and request_id.
| Status | Code | Meaning |
|---|---|---|
| 400 | VALIDATION_ERROR | The request didn't match the endpoint's schema: a missing or malformed field, a bad query parameter, or a value out of range. |
| 400 | NO_UPDATES | The update request contained no fields to change. |
| 400 | INVALID_STAGE | The |
| 400 | INVALID_OWNER | The |
| 401 | UNAUTHORIZED | The |
| 401 | API_KEY_EXPIRED | The API key is past its expiry date. Create a new key in the Victoria AI app. |
| 403 | INSUFFICIENT_SCOPE | The API key doesn't have the scope this endpoint requires, such as |
| 403 | ORGANIZATION_DEACTIVATED | The organization that owns this API key has been deactivated. |
| 404 | DEAL_NOT_FOUND | No deal with this ID exists in your organization. |
| 404 | NOT_FOUND | No endpoint matches the path. A resource ID in the path that isn't a valid UUID also answers |
| 413 | PAYLOAD_TOO_LARGE | The request body is larger than 1 MB. |
| 429 | RATE_LIMITED | Too many requests for this API key: more than 100 a minute to one endpoint, or 600 a minute in total. Retry after the number of seconds in the |
| 500 | INTERNAL_ERROR | Something failed on our side. The response never includes internal details; quote its |
| 503 | UPSTREAM_TIMEOUT | A service the API depends on timed out. The request is safe to retry. |
| 503 | AUTH_UNAVAILABLE | The API key couldn't be checked because the authentication service was unavailable. The request is safe to retry. |
Response headers
| Header | Description |
|---|---|
X-Request-ID | Correlation ID for the request, also returned as |
RateLimit-Limit | Requests allowed to this endpoint per minute. |
RateLimit-Remaining | Requests you can still send to this endpoint right now. |
RateLimit-Reset | Seconds until the endpoint's full limit is available again. |
Retry-After | On a |