curl --request POST \
--url https://www.ruddr.io/api/workspace/opportunities \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>",
"companyId": "<string>",
"opportunityPipelineId": "<string>",
"description": "<string>",
"nextSteps": "<string>",
"amount": 123,
"probability": 123,
"openDate": "2023-12-25",
"closeDate": "2023-12-25",
"currency": "<string>",
"cloudFolderUrl": "<string>",
"ownerId": "<string>",
"opportunityLeadSourceId": "<string>",
"opportunityTypeId": "<string>",
"tagIds": [
"<string>"
],
"practiceId": "<string>",
"businessUnitId": "<string>",
"projects": [
{
"id": "<string>",
"amount": 123
}
],
"opportunityStageId": "<string>"
}
'import requests
url = "https://www.ruddr.io/api/workspace/opportunities"
payload = {
"name": "<string>",
"companyId": "<string>",
"opportunityPipelineId": "<string>",
"description": "<string>",
"nextSteps": "<string>",
"amount": 123,
"probability": 123,
"openDate": "2023-12-25",
"closeDate": "2023-12-25",
"currency": "<string>",
"cloudFolderUrl": "<string>",
"ownerId": "<string>",
"opportunityLeadSourceId": "<string>",
"opportunityTypeId": "<string>",
"tagIds": ["<string>"],
"practiceId": "<string>",
"businessUnitId": "<string>",
"projects": [
{
"id": "<string>",
"amount": 123
}
],
"opportunityStageId": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: '<string>',
companyId: '<string>',
opportunityPipelineId: '<string>',
description: '<string>',
nextSteps: '<string>',
amount: 123,
probability: 123,
openDate: '2023-12-25',
closeDate: '2023-12-25',
currency: '<string>',
cloudFolderUrl: '<string>',
ownerId: '<string>',
opportunityLeadSourceId: '<string>',
opportunityTypeId: '<string>',
tagIds: ['<string>'],
practiceId: '<string>',
businessUnitId: '<string>',
projects: [{id: '<string>', amount: 123}],
opportunityStageId: '<string>'
})
};
fetch('https://www.ruddr.io/api/workspace/opportunities', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://www.ruddr.io/api/workspace/opportunities",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'name' => '<string>',
'companyId' => '<string>',
'opportunityPipelineId' => '<string>',
'description' => '<string>',
'nextSteps' => '<string>',
'amount' => 123,
'probability' => 123,
'openDate' => '2023-12-25',
'closeDate' => '2023-12-25',
'currency' => '<string>',
'cloudFolderUrl' => '<string>',
'ownerId' => '<string>',
'opportunityLeadSourceId' => '<string>',
'opportunityTypeId' => '<string>',
'tagIds' => [
'<string>'
],
'practiceId' => '<string>',
'businessUnitId' => '<string>',
'projects' => [
[
'id' => '<string>',
'amount' => 123
]
],
'opportunityStageId' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://www.ruddr.io/api/workspace/opportunities"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"companyId\": \"<string>\",\n \"opportunityPipelineId\": \"<string>\",\n \"description\": \"<string>\",\n \"nextSteps\": \"<string>\",\n \"amount\": 123,\n \"probability\": 123,\n \"openDate\": \"2023-12-25\",\n \"closeDate\": \"2023-12-25\",\n \"currency\": \"<string>\",\n \"cloudFolderUrl\": \"<string>\",\n \"ownerId\": \"<string>\",\n \"opportunityLeadSourceId\": \"<string>\",\n \"opportunityTypeId\": \"<string>\",\n \"tagIds\": [\n \"<string>\"\n ],\n \"practiceId\": \"<string>\",\n \"businessUnitId\": \"<string>\",\n \"projects\": [\n {\n \"id\": \"<string>\",\n \"amount\": 123\n }\n ],\n \"opportunityStageId\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://www.ruddr.io/api/workspace/opportunities")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"companyId\": \"<string>\",\n \"opportunityPipelineId\": \"<string>\",\n \"description\": \"<string>\",\n \"nextSteps\": \"<string>\",\n \"amount\": 123,\n \"probability\": 123,\n \"openDate\": \"2023-12-25\",\n \"closeDate\": \"2023-12-25\",\n \"currency\": \"<string>\",\n \"cloudFolderUrl\": \"<string>\",\n \"ownerId\": \"<string>\",\n \"opportunityLeadSourceId\": \"<string>\",\n \"opportunityTypeId\": \"<string>\",\n \"tagIds\": [\n \"<string>\"\n ],\n \"practiceId\": \"<string>\",\n \"businessUnitId\": \"<string>\",\n \"projects\": [\n {\n \"id\": \"<string>\",\n \"amount\": 123\n }\n ],\n \"opportunityStageId\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://www.ruddr.io/api/workspace/opportunities")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"companyId\": \"<string>\",\n \"opportunityPipelineId\": \"<string>\",\n \"description\": \"<string>\",\n \"nextSteps\": \"<string>\",\n \"amount\": 123,\n \"probability\": 123,\n \"openDate\": \"2023-12-25\",\n \"closeDate\": \"2023-12-25\",\n \"currency\": \"<string>\",\n \"cloudFolderUrl\": \"<string>\",\n \"ownerId\": \"<string>\",\n \"opportunityLeadSourceId\": \"<string>\",\n \"opportunityTypeId\": \"<string>\",\n \"tagIds\": [\n \"<string>\"\n ],\n \"practiceId\": \"<string>\",\n \"businessUnitId\": \"<string>\",\n \"projects\": [\n {\n \"id\": \"<string>\",\n \"amount\": 123\n }\n ],\n \"opportunityStageId\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"id": "6739fb0c-d986-4eee-a427-3fbd68f66f76",
"name": "Acme Corp - Mobile App",
"description": "Proposal for a new mobile application.",
"nextSteps": "Follow up with client on proposal.",
"amount": 50000,
"probability": 0.75,
"priorityId": "high",
"createdAt": "2025-01-15T20:47:03.284Z",
"openDate": "2025-01-15",
"closeDate": "2025-06-30",
"modifiedAt": "2025-01-15T20:47:03.284Z",
"currency": "USD",
"cloudFolderUrl": "https://drive.google.com/drive/folders/abc123",
"weightedAmount": 37500,
"owner": {
"id": "94bc043d-95cb-4f4b-8a9f-8e74cd3dd0db",
"name": "John Davis"
},
"opportunityLeadSource": {
"id": "1df022a4-0e91-463f-a88c-b6149c322abd",
"name": "Referral"
},
"opportunityType": {
"id": "8ab56d67-b2f1-40b0-be44-f99556b4aae9",
"name": "New Business"
},
"tags": [
{
"id": "dbdf3703-1fa6-419c-957e-ff427b39d1e6",
"name": "Enterprise"
}
],
"practice": {
"id": "65935388-b0a1-49ed-97e0-6f0d909af05e",
"name": "Consulting"
},
"businessUnit": {
"id": "b0454189-7320-4009-9408-2101142150f5",
"name": "North America"
},
"company": {
"id": "a961cced-0689-4951-9929-9760057618fd",
"name": "Acme Corp",
"client": {
"id": "aa39afdb-e168-4956-b061-41c7c62e8c2e",
"key": "acme-corp",
"name": "Acme Corp"
}
},
"projects": [
{
"id": "8274644a-2b50-46ac-b84d-ade1cefa3b4f",
"name": "Mobile App Development",
"amount": 50000
}
],
"opportunityStage": {
"id": "5fa87e8d-a60f-402e-b9dc-2fd33626cbd9",
"name": "Proposal",
"statusId": "open"
},
"opportunityPipeline": {
"id": "b9c85ac3-1a1d-4f31-a0c5-6e7d3d8ee0b2",
"name": "Sales"
},
"timeSpent": 0,
"salesforceId": "0060b00000BkFxAAAV",
"hubspotId": "12345678"
}Create an opportunity
curl --request POST \
--url https://www.ruddr.io/api/workspace/opportunities \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>",
"companyId": "<string>",
"opportunityPipelineId": "<string>",
"description": "<string>",
"nextSteps": "<string>",
"amount": 123,
"probability": 123,
"openDate": "2023-12-25",
"closeDate": "2023-12-25",
"currency": "<string>",
"cloudFolderUrl": "<string>",
"ownerId": "<string>",
"opportunityLeadSourceId": "<string>",
"opportunityTypeId": "<string>",
"tagIds": [
"<string>"
],
"practiceId": "<string>",
"businessUnitId": "<string>",
"projects": [
{
"id": "<string>",
"amount": 123
}
],
"opportunityStageId": "<string>"
}
'import requests
url = "https://www.ruddr.io/api/workspace/opportunities"
payload = {
"name": "<string>",
"companyId": "<string>",
"opportunityPipelineId": "<string>",
"description": "<string>",
"nextSteps": "<string>",
"amount": 123,
"probability": 123,
"openDate": "2023-12-25",
"closeDate": "2023-12-25",
"currency": "<string>",
"cloudFolderUrl": "<string>",
"ownerId": "<string>",
"opportunityLeadSourceId": "<string>",
"opportunityTypeId": "<string>",
"tagIds": ["<string>"],
"practiceId": "<string>",
"businessUnitId": "<string>",
"projects": [
{
"id": "<string>",
"amount": 123
}
],
"opportunityStageId": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: '<string>',
companyId: '<string>',
opportunityPipelineId: '<string>',
description: '<string>',
nextSteps: '<string>',
amount: 123,
probability: 123,
openDate: '2023-12-25',
closeDate: '2023-12-25',
currency: '<string>',
cloudFolderUrl: '<string>',
ownerId: '<string>',
opportunityLeadSourceId: '<string>',
opportunityTypeId: '<string>',
tagIds: ['<string>'],
practiceId: '<string>',
businessUnitId: '<string>',
projects: [{id: '<string>', amount: 123}],
opportunityStageId: '<string>'
})
};
fetch('https://www.ruddr.io/api/workspace/opportunities', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://www.ruddr.io/api/workspace/opportunities",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'name' => '<string>',
'companyId' => '<string>',
'opportunityPipelineId' => '<string>',
'description' => '<string>',
'nextSteps' => '<string>',
'amount' => 123,
'probability' => 123,
'openDate' => '2023-12-25',
'closeDate' => '2023-12-25',
'currency' => '<string>',
'cloudFolderUrl' => '<string>',
'ownerId' => '<string>',
'opportunityLeadSourceId' => '<string>',
'opportunityTypeId' => '<string>',
'tagIds' => [
'<string>'
],
'practiceId' => '<string>',
'businessUnitId' => '<string>',
'projects' => [
[
'id' => '<string>',
'amount' => 123
]
],
'opportunityStageId' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://www.ruddr.io/api/workspace/opportunities"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"companyId\": \"<string>\",\n \"opportunityPipelineId\": \"<string>\",\n \"description\": \"<string>\",\n \"nextSteps\": \"<string>\",\n \"amount\": 123,\n \"probability\": 123,\n \"openDate\": \"2023-12-25\",\n \"closeDate\": \"2023-12-25\",\n \"currency\": \"<string>\",\n \"cloudFolderUrl\": \"<string>\",\n \"ownerId\": \"<string>\",\n \"opportunityLeadSourceId\": \"<string>\",\n \"opportunityTypeId\": \"<string>\",\n \"tagIds\": [\n \"<string>\"\n ],\n \"practiceId\": \"<string>\",\n \"businessUnitId\": \"<string>\",\n \"projects\": [\n {\n \"id\": \"<string>\",\n \"amount\": 123\n }\n ],\n \"opportunityStageId\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://www.ruddr.io/api/workspace/opportunities")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"companyId\": \"<string>\",\n \"opportunityPipelineId\": \"<string>\",\n \"description\": \"<string>\",\n \"nextSteps\": \"<string>\",\n \"amount\": 123,\n \"probability\": 123,\n \"openDate\": \"2023-12-25\",\n \"closeDate\": \"2023-12-25\",\n \"currency\": \"<string>\",\n \"cloudFolderUrl\": \"<string>\",\n \"ownerId\": \"<string>\",\n \"opportunityLeadSourceId\": \"<string>\",\n \"opportunityTypeId\": \"<string>\",\n \"tagIds\": [\n \"<string>\"\n ],\n \"practiceId\": \"<string>\",\n \"businessUnitId\": \"<string>\",\n \"projects\": [\n {\n \"id\": \"<string>\",\n \"amount\": 123\n }\n ],\n \"opportunityStageId\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://www.ruddr.io/api/workspace/opportunities")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"companyId\": \"<string>\",\n \"opportunityPipelineId\": \"<string>\",\n \"description\": \"<string>\",\n \"nextSteps\": \"<string>\",\n \"amount\": 123,\n \"probability\": 123,\n \"openDate\": \"2023-12-25\",\n \"closeDate\": \"2023-12-25\",\n \"currency\": \"<string>\",\n \"cloudFolderUrl\": \"<string>\",\n \"ownerId\": \"<string>\",\n \"opportunityLeadSourceId\": \"<string>\",\n \"opportunityTypeId\": \"<string>\",\n \"tagIds\": [\n \"<string>\"\n ],\n \"practiceId\": \"<string>\",\n \"businessUnitId\": \"<string>\",\n \"projects\": [\n {\n \"id\": \"<string>\",\n \"amount\": 123\n }\n ],\n \"opportunityStageId\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"id": "6739fb0c-d986-4eee-a427-3fbd68f66f76",
"name": "Acme Corp - Mobile App",
"description": "Proposal for a new mobile application.",
"nextSteps": "Follow up with client on proposal.",
"amount": 50000,
"probability": 0.75,
"priorityId": "high",
"createdAt": "2025-01-15T20:47:03.284Z",
"openDate": "2025-01-15",
"closeDate": "2025-06-30",
"modifiedAt": "2025-01-15T20:47:03.284Z",
"currency": "USD",
"cloudFolderUrl": "https://drive.google.com/drive/folders/abc123",
"weightedAmount": 37500,
"owner": {
"id": "94bc043d-95cb-4f4b-8a9f-8e74cd3dd0db",
"name": "John Davis"
},
"opportunityLeadSource": {
"id": "1df022a4-0e91-463f-a88c-b6149c322abd",
"name": "Referral"
},
"opportunityType": {
"id": "8ab56d67-b2f1-40b0-be44-f99556b4aae9",
"name": "New Business"
},
"tags": [
{
"id": "dbdf3703-1fa6-419c-957e-ff427b39d1e6",
"name": "Enterprise"
}
],
"practice": {
"id": "65935388-b0a1-49ed-97e0-6f0d909af05e",
"name": "Consulting"
},
"businessUnit": {
"id": "b0454189-7320-4009-9408-2101142150f5",
"name": "North America"
},
"company": {
"id": "a961cced-0689-4951-9929-9760057618fd",
"name": "Acme Corp",
"client": {
"id": "aa39afdb-e168-4956-b061-41c7c62e8c2e",
"key": "acme-corp",
"name": "Acme Corp"
}
},
"projects": [
{
"id": "8274644a-2b50-46ac-b84d-ade1cefa3b4f",
"name": "Mobile App Development",
"amount": 50000
}
],
"opportunityStage": {
"id": "5fa87e8d-a60f-402e-b9dc-2fd33626cbd9",
"name": "Proposal",
"statusId": "open"
},
"opportunityPipeline": {
"id": "b9c85ac3-1a1d-4f31-a0c5-6e7d3d8ee0b2",
"name": "Sales"
},
"timeSpent": 0,
"salesforceId": "0060b00000BkFxAAAV",
"hubspotId": "12345678"
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
The name of the opportunity. Max 255 characters.
The ID (uuid) of the company associated with the opportunity.
The ID (uuid) of the opportunity pipeline.
A description of the opportunity. Max 5000 characters.
The next steps for the opportunity. Max 255 characters.
The monetary amount of the opportunity.
The probability of the opportunity closing successfully. Accepts a value of 0 to 1 using a maximum of four decimals.
The priority of the opportunity.
high, medium, low The open date of the opportunity in YYYY-MM-DD format. Defaults to the creation date if not provided.
The expected close date of the opportunity in YYYY-MM-DD format.
The 3-letter currency code for the opportunity. Defaults to the workspace currency if not provided.
A URL to a cloud folder associated with the opportunity. Max 1024 characters.
The member ID (uuid) of the owner of the opportunity.
The ID (uuid) of the lead source for the opportunity.
The ID (uuid) of the opportunity type.
A list of opportunity tag IDs (uuid) to associate with the opportunity.
The ID (uuid) of the practice associated with the opportunity.
The ID (uuid) of the business unit associated with the opportunity.
A list of projects to associate with the opportunity.
Show child attributes
Show child attributes
The ID (uuid) of the opportunity stage. Defaults to the active stage with the lowest probability if not provided.
Response
200
The unique identifier for the object.
The name of the opportunity.
A description of the opportunity.
The next steps for the opportunity.
The monetary amount of the opportunity.
The probability of the opportunity closing successfully, expressed as a decimal between 0 and 1.
The priority level of the opportunity.
high, medium, low The timestamp when the object was created.
The date the opportunity was opened. Will be in the form YYYY-MM-DD.
The expected close date for the opportunity. Will be in the form YYYY-MM-DD.
The timestamp when the object was last modified.
The 3-letter currency code for the opportunity.
A URL to a cloud folder associated with the opportunity.
The probability-weighted amount, calculated as amount multiplied by probability.
The owner of the opportunity.
Show child attributes
Show child attributes
The lead source for the opportunity.
Show child attributes
Show child attributes
The type of the opportunity.
Show child attributes
Show child attributes
The tags associated with the opportunity.
Show child attributes
Show child attributes
The practice associated with the opportunity.
Show child attributes
Show child attributes
The business unit associated with the opportunity.
Show child attributes
Show child attributes
The company associated with the opportunity.
Show child attributes
Show child attributes
The projects associated with the opportunity.
Show child attributes
Show child attributes
The current stage of the opportunity.
Show child attributes
Show child attributes
The pipeline the opportunity belongs to.
Show child attributes
Show child attributes
Total time spent in minutes across all pipeline activities.
The Salesforce opportunity ID. Will be null unless synced via the Salesforce integration.
The HubSpot deal ID. Will be null unless synced via the HubSpot integration.