CRM Opportunities
Track deals through the Talkturo CRM — create, list, update, and delete opportunities with pipeline stages, amounts, probabilities, and activity history.
curl -X GET "https://app.talkturo.com/api/crm/opportunities?teamId=team_4f8a2c91&stage=proposal&ownerUserId=usr_82c1d7a4&limit=25&offset=0" \
-H "Cookie: sb-access-token=example_session_cookie"
const params = new URLSearchParams({
teamId: "team_4f8a2c91",
stage: "proposal",
ownerUserId: "usr_82c1d7a4",
limit: "25",
offset: "0"
});
const response = await fetch(
`https://app.talkturo.com/api/crm/opportunities?${params}`,
{
method: "GET",
credentials: "include"
}
);
const data = await response.json();
console.log(data);
{
"opportunities": [
{
"id": "opp_2d91c6f4",
"team_id": "team_4f8a2c91",
"name": "Northwind Health Platform Expansion",
"primary_contact_id": "cnt_91b4a2e7",
"stage": "proposal",
"amount": 48000,
"currency": "USD",
"probability": 70,
"expected_close_date": "2026-10-15",
"owner_user_id": "usr_82c1d7a4",
"notes": "Proposal review scheduled with the procurement team."
}
],
"count": 1,
"limit": 25,
"offset": 0,
"stageTotals": {
"lead": 4,
"qualified": 3,
"proposal": 1,
"negotiation": 2,
"won": 8,
"lost": 5
}
}
curl -X POST "https://app.talkturo.com/api/crm/opportunities" \
-H "Content-Type: application/json" \
-H "Cookie: sb-access-token=example_session_cookie" \
-d '{
"teamId": "team_4f8a2c91",
"name": "Northwind Health Platform Expansion",
"primaryContactId": "cnt_91b4a2e7",
"stage": "qualified",
"amount": 48000,
"currency": "USD",
"probability": 60,
"expectedCloseDate": "2026-10-15",
"ownerUserId": "usr_82c1d7a4",
"notes": "Expansion opportunity identified during the quarterly review.",
"customFields": {
"region": "North America",
"contractTermMonths": 24
}
}'
const response = await fetch(
"https://app.talkturo.com/api/crm/opportunities",
{
method: "POST",
credentials: "include",
headers: {
"Content-Type": "application/json"
},
body: JSON.stringify({
teamId: "team_4f8a2c91",
name: "Northwind Health Platform Expansion",
primaryContactId: "cnt_91b4a2e7",
stage: "qualified",
amount: 48000,
currency: "USD",
probability: 60,
expectedCloseDate: "2026-10-15",
ownerUserId: "usr_82c1d7a4",
notes: "Expansion opportunity identified during the quarterly review.",
customFields: {
region: "North America",
contractTermMonths: 24
}
})
}
);
const data = await response.json();
console.log(data);
{
"success": true,
"opportunity": {
"id": "opp_6c52a1ef",
"team_id": "team_4f8a2c91",
"name": "Northwind Health Platform Expansion",
"primary_contact_id": "cnt_91b4a2e7",
"stage": "qualified",
"amount": 48000,
"currency": "USD",
"probability": 60,
"expected_close_date": "2026-10-15",
"owner_user_id": "usr_82c1d7a4",
"notes": "Expansion opportunity identified during the quarterly review.",
"custom_fields": {
"region": "North America",
"contractTermMonths": 24
}
}
}
curl -X GET "https://app.talkturo.com/api/crm/opportunities/opp_6c52a1ef" \
-H "Cookie: sb-access-token=example_session_cookie"
const response = await fetch(
"https://app.talkturo.com/api/crm/opportunities/opp_6c52a1ef",
{
method: "GET",
credentials: "include"
}
);
const data = await response.json();
console.log(data);
{
"success": true,
"opportunity": {
"id": "opp_6c52a1ef",
"team_id": "team_4f8a2c91",
"name": "Northwind Health Platform Expansion",
"primary_contact_id": "cnt_91b4a2e7",
"stage": "qualified",
"amount": 48000,
"currency": "USD",
"probability": 60,
"expected_close_date": "2026-10-15",
"owner_user_id": "usr_82c1d7a4",
"notes": "Expansion opportunity identified during the quarterly review."
},
"activities": [
{
"id": "act_4b27e8c1",
"contact_id": "cnt_91b4a2e7",
"activity_type": "meeting",
"created_at": "2026-07-18T14:30:00Z"
}
]
}
curl -X PUT "https://app.talkturo.com/api/crm/opportunities/opp_6c52a1ef" \
-H "Content-Type: application/json" \
-H "Cookie: sb-access-token=example_session_cookie" \
-d '{
"name": "Northwind Health Platform Expansion",
"stage": "proposal",
"amount": 52000,
"currency": "USD",
"probability": 75,
"expectedCloseDate": "2026-10-31",
"ownerUserId": "usr_82c1d7a4",
"notes": "Proposal sent for procurement review.",
"customFields": {
"region": "North America",
"contractTermMonths": 24
},
"actualCloseDate": null,
"lostReason": null,
"wonDetails": null
}'
const response = await fetch(
"https://app.talkturo.com/api/crm/opportunities/opp_6c52a1ef",
{
method: "PUT",
credentials: "include",
headers: {
"Content-Type": "application/json"
},
body: JSON.stringify({
name: "Northwind Health Platform Expansion",
stage: "proposal",
amount: 52000,
currency: "USD",
probability: 75,
expectedCloseDate: "2026-10-31",
ownerUserId: "usr_82c1d7a4",
notes: "Proposal sent for procurement review.",
customFields: {
region: "North America",
contractTermMonths: 24
},
actualCloseDate: null,
lostReason: null,
wonDetails: null
})
}
);
const data = await response.json();
console.log(data);
{
"success": true,
"opportunity": {
"id": "opp_6c52a1ef",
"team_id": "team_4f8a2c91",
"name": "Northwind Health Platform Expansion",
"primary_contact_id": "cnt_91b4a2e7",
"stage": "proposal",
"amount": 52000,
"currency": "USD",
"probability": 75,
"expected_close_date": "2026-10-31",
"owner_user_id": "usr_82c1d7a4",
"notes": "Proposal sent for procurement review.",
"custom_fields": {
"region": "North America",
"contractTermMonths": 24
}
}
}
curl -X DELETE "https://app.talkturo.com/api/crm/opportunities/opp_6c52a1ef" \
-H "Cookie: sb-access-token=example_session_cookie"
const response = await fetch(
"https://app.talkturo.com/api/crm/opportunities/opp_6c52a1ef",
{
method: "DELETE",
credentials: "include"
}
);
const data = await response.json();
console.log(data);
{
"success": true
}
Manage CRM opportunities
Use the CRM Opportunities API to manage deals for a team. You can filter opportunities by pipeline stage and owner, track amounts and close dates, and retrieve related contact activity.
All CRM Opportunities endpoints require an authenticated session cookie. These endpoints do not accept API key authentication.
The item route derives the opportunity's team_id and verifies that the authenticated session can access the team before it reads, updates, or deletes the opportunity.
Endpoints at a glance
| Method | Path | Description |
|---|---|---|
GET | /api/crm/opportunities | List opportunities for a team |
POST | /api/crm/opportunities | Create an opportunity |
GET | /api/crm/opportunities/{id} | Retrieve an opportunity and related activities |
PUT | /api/crm/opportunities/{id} | Update an opportunity |
DELETE | /api/crm/opportunities/{id} | Delete an opportunity |
Pipeline stages
The stage field accepts these values:
leadqualifiedproposalnegotiationwonlost
List opportunities
Retrieve opportunities for a team with optional stage and owner filters. Use limit and offset to paginate the results.
Query parameters
Team whose opportunities to return.
Filter results by pipeline stage.
leadqualifiedproposalnegotiationwonlostFilter results by the user assigned as the opportunity owner.
Maximum number of opportunities to return.
Number of matching opportunities to skip before returning results.
Response fields
Opportunities matching the requested team and filters.
Number of opportunities in the response.
Maximum number of opportunities requested for the page.
Number of opportunities skipped before the returned results.
Stage totals for the team's opportunities.
Create an opportunity
Create an opportunity for a team. The teamId and name fields are required; all other fields are optional.
Request body
Team that owns the opportunity.
Name of the opportunity.
ID of the primary contact associated with the opportunity.
Pipeline stage for the opportunity.
leadqualifiedproposalnegotiationwonlostMonetary amount associated with the opportunity.
Currency code for the opportunity amount.
Estimated probability of closing the opportunity.
Expected date on which the opportunity will close.
ID of the user who owns the opportunity.
Notes associated with the opportunity.
Additional opportunity fields stored as a custom object.
Response fields
Indicates whether the opportunity was created successfully.
The newly created opportunity.
Get an opportunity
Retrieve one opportunity by ID. The response includes up to 50 related contact_activities records.
Path parameter
Unique identifier of the opportunity to retrieve.
Response fields
Indicates whether the opportunity was found.
The requested opportunity.
Up to 50 related contact_activities records.
Update an opportunity
Update one or more fields on an existing opportunity with PUT. The request does not require fields that you are not changing.
Path parameter
Unique identifier of the opportunity to update.
Request body
Updated name of the opportunity.
Updated monetary amount.
Updated currency code.
Updated estimated probability of closing the opportunity.
Updated expected close date.
Updated owner user ID.
Updated notes for the opportunity.
Updated custom opportunity fields.
Actual date on which the opportunity closed.
Reason the opportunity was lost.
Details associated with winning the opportunity.
Response fields
Indicates whether the opportunity was updated successfully.
The updated opportunity.
Delete an opportunity
Delete an opportunity by ID.
Path parameter
Unique identifier of the opportunity to delete.
Response fields
Indicates whether the opportunity was deleted successfully.
Deleting an opportunity is irreversible. Confirm the opportunity ID before sending the request.