Create a project monthly budget service item
curl --request POST \
--url https://www.ruddr.io/api/workspace/project-monthly-budget-service-items \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"fee": 123,
"projectId": "<string>",
"invoiceItemId": "<string>",
"description": "<string>"
}
'import requests
url = "https://www.ruddr.io/api/workspace/project-monthly-budget-service-items"
payload = {
"fee": 123,
"projectId": "<string>",
"invoiceItemId": "<string>",
"description": "<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({
fee: 123,
projectId: '<string>',
invoiceItemId: '<string>',
description: '<string>'
})
};
fetch('https://www.ruddr.io/api/workspace/project-monthly-budget-service-items', 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/project-monthly-budget-service-items",
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([
'fee' => 123,
'projectId' => '<string>',
'invoiceItemId' => '<string>',
'description' => '<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/project-monthly-budget-service-items"
payload := strings.NewReader("{\n \"fee\": 123,\n \"projectId\": \"<string>\",\n \"invoiceItemId\": \"<string>\",\n \"description\": \"<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/project-monthly-budget-service-items")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"fee\": 123,\n \"projectId\": \"<string>\",\n \"invoiceItemId\": \"<string>\",\n \"description\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://www.ruddr.io/api/workspace/project-monthly-budget-service-items")
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 \"fee\": 123,\n \"projectId\": \"<string>\",\n \"invoiceItemId\": \"<string>\",\n \"description\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"id": "c2d83f47-6a19-4e0b-b5e8-d1c70f9a42b6",
"fee": 3500,
"description": "Monthly managed services retainer",
"createdAt": "2026-06-04T16:40:12.508Z",
"project": {
"id": "d4f81c36-7b29-4e5a-a2d8-c3e7f09b61a4",
"name": "Infrastructure Modernization",
"client": {
"id": "e9a52d47-1c83-4b6f-b7e3-d0f29a8c74b2",
"name": "Sterling Cooper"
}
},
"invoiceItem": {
"id": "f1c74e28-9b03-4d5a-86e2-a3d7f0c52b19",
"name": "Managed Services"
}
}Project Monthly Budget Service Items
Create a project monthly budget service item
POST
/
project-monthly-budget-service-items
Create a project monthly budget service item
curl --request POST \
--url https://www.ruddr.io/api/workspace/project-monthly-budget-service-items \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"fee": 123,
"projectId": "<string>",
"invoiceItemId": "<string>",
"description": "<string>"
}
'import requests
url = "https://www.ruddr.io/api/workspace/project-monthly-budget-service-items"
payload = {
"fee": 123,
"projectId": "<string>",
"invoiceItemId": "<string>",
"description": "<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({
fee: 123,
projectId: '<string>',
invoiceItemId: '<string>',
description: '<string>'
})
};
fetch('https://www.ruddr.io/api/workspace/project-monthly-budget-service-items', 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/project-monthly-budget-service-items",
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([
'fee' => 123,
'projectId' => '<string>',
'invoiceItemId' => '<string>',
'description' => '<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/project-monthly-budget-service-items"
payload := strings.NewReader("{\n \"fee\": 123,\n \"projectId\": \"<string>\",\n \"invoiceItemId\": \"<string>\",\n \"description\": \"<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/project-monthly-budget-service-items")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"fee\": 123,\n \"projectId\": \"<string>\",\n \"invoiceItemId\": \"<string>\",\n \"description\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://www.ruddr.io/api/workspace/project-monthly-budget-service-items")
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 \"fee\": 123,\n \"projectId\": \"<string>\",\n \"invoiceItemId\": \"<string>\",\n \"description\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"id": "c2d83f47-6a19-4e0b-b5e8-d1c70f9a42b6",
"fee": 3500,
"description": "Monthly managed services retainer",
"createdAt": "2026-06-04T16:40:12.508Z",
"project": {
"id": "d4f81c36-7b29-4e5a-a2d8-c3e7f09b61a4",
"name": "Infrastructure Modernization",
"client": {
"id": "e9a52d47-1c83-4b6f-b7e3-d0f29a8c74b2",
"name": "Sterling Cooper"
}
},
"invoiceItem": {
"id": "f1c74e28-9b03-4d5a-86e2-a3d7f0c52b19",
"name": "Managed Services"
}
}The monthly budget for an additional service invoice item on a project. Only available for billable projects using a monthly budget and the monthly budget mode is “detailed”.
Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
application/json
The total amount of the item.
The ID (uuid) of the project this item belongs to.
The ID (uuid) of the invoice item to associate with this budget line.
A description of the item being charged. Maximum 255 characters.
Response
200
The unique identifier for the object.
The total amount of the item.
A description of the item being charged.
The timestamp when the object was created.
The project this item belongs to.
Show child attributes
Show child attributes
The invoice item associated with this budget line.
Show child attributes
Show child attributes
⌘I