curl --request POST \
--url https://www.ruddr.io/api/workspace/opportunity-stages \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>",
"probability": 123,
"opportunityPipelineId": "<string>",
"description": "<string>",
"isActive": true
}
'import requests
url = "https://www.ruddr.io/api/workspace/opportunity-stages"
payload = {
"name": "<string>",
"probability": 123,
"opportunityPipelineId": "<string>",
"description": "<string>",
"isActive": True
}
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>',
probability: 123,
opportunityPipelineId: '<string>',
description: '<string>',
isActive: true
})
};
fetch('https://www.ruddr.io/api/workspace/opportunity-stages', 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/opportunity-stages",
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>',
'probability' => 123,
'opportunityPipelineId' => '<string>',
'description' => '<string>',
'isActive' => true
]),
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/opportunity-stages"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"probability\": 123,\n \"opportunityPipelineId\": \"<string>\",\n \"description\": \"<string>\",\n \"isActive\": true\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/opportunity-stages")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"probability\": 123,\n \"opportunityPipelineId\": \"<string>\",\n \"description\": \"<string>\",\n \"isActive\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://www.ruddr.io/api/workspace/opportunity-stages")
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 \"probability\": 123,\n \"opportunityPipelineId\": \"<string>\",\n \"description\": \"<string>\",\n \"isActive\": true\n}"
response = http.request(request)
puts response.read_body{
"id": "d4a8c1e7-5f32-4b69-80d3-a9e2f6c01b85",
"name": "Proposal Sent",
"description": "A formal proposal has been submitted to the prospective client for review.",
"probability": 0.45,
"statusId": "open",
"isActive": true,
"opportunityPipelineId": "b9c85ac3-1a1d-4f31-a0c5-6e7d3d8ee0b2",
"createdAt": "2025-04-18T10:22:37.614Z"
}Create an opportunity stage
curl --request POST \
--url https://www.ruddr.io/api/workspace/opportunity-stages \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>",
"probability": 123,
"opportunityPipelineId": "<string>",
"description": "<string>",
"isActive": true
}
'import requests
url = "https://www.ruddr.io/api/workspace/opportunity-stages"
payload = {
"name": "<string>",
"probability": 123,
"opportunityPipelineId": "<string>",
"description": "<string>",
"isActive": True
}
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>',
probability: 123,
opportunityPipelineId: '<string>',
description: '<string>',
isActive: true
})
};
fetch('https://www.ruddr.io/api/workspace/opportunity-stages', 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/opportunity-stages",
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>',
'probability' => 123,
'opportunityPipelineId' => '<string>',
'description' => '<string>',
'isActive' => true
]),
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/opportunity-stages"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"probability\": 123,\n \"opportunityPipelineId\": \"<string>\",\n \"description\": \"<string>\",\n \"isActive\": true\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/opportunity-stages")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"probability\": 123,\n \"opportunityPipelineId\": \"<string>\",\n \"description\": \"<string>\",\n \"isActive\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://www.ruddr.io/api/workspace/opportunity-stages")
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 \"probability\": 123,\n \"opportunityPipelineId\": \"<string>\",\n \"description\": \"<string>\",\n \"isActive\": true\n}"
response = http.request(request)
puts response.read_body{
"id": "d4a8c1e7-5f32-4b69-80d3-a9e2f6c01b85",
"name": "Proposal Sent",
"description": "A formal proposal has been submitted to the prospective client for review.",
"probability": 0.45,
"statusId": "open",
"isActive": true,
"opportunityPipelineId": "b9c85ac3-1a1d-4f31-a0c5-6e7d3d8ee0b2",
"createdAt": "2025-04-18T10:22:37.614Z"
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
The name of the opportunity stage. Max 255 characters.
The win probability for opportunities at this stage, expressed as a decimal between 0 and 1. Max 4 decimal places.
The status of the stage.
open, won, lost The ID (uuid) of the parent opportunity pipeline.
The description of the opportunity stage. Max 5000 characters.
Whether the opportunity stage is active. Defaults to true if not provided.
Response
200
The unique identifier for the object.
The name of the opportunity stage.
The description of the opportunity stage.
The win probability for opportunities at this stage, expressed as a decimal between 0 and 1.
The status of the stage.
open, won, lost Whether the opportunity stage is active.
The unique identifier for the parent opportunity pipeline.
The timestamp when the object was created.