Get a project revenue adjustment
curl --request GET \
--url https://www.ruddr.io/api/workspace/project-revenue-adjustments/{id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://www.ruddr.io/api/workspace/project-revenue-adjustments/{id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://www.ruddr.io/api/workspace/project-revenue-adjustments/{id}', 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-revenue-adjustments/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://www.ruddr.io/api/workspace/project-revenue-adjustments/{id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://www.ruddr.io/api/workspace/project-revenue-adjustments/{id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://www.ruddr.io/api/workspace/project-revenue-adjustments/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"id": "d1dee101-6d4b-4a26-bc0f-8508b22b3b85",
"date": "2026-02-10",
"revenueType": "other_items",
"amount": 900,
"notes": "Reimbursable rebill",
"creditNoteId": null,
"createdAt": "2026-02-10T08:15:42.731Z",
"project": {
"id": "060a0758-a538-4523-a6ad-989e50e3cb82",
"name": "Platform Migration",
"client": {
"id": "212477bf-4473-42c3-bebc-885a1225c12d",
"name": "Initech"
}
}
}{
"status": 400,
"message": "Parameter 'id' is not a valid UUID."
}{
"status": 404,
"message": "Object with id '26a1408f-fd04-46bd-a663-c9fc083878bb' not found."
}Project Revenue Adjustments
Get a project revenue adjustment
GET
/
project-revenue-adjustments
/
{id}
Get a project revenue adjustment
curl --request GET \
--url https://www.ruddr.io/api/workspace/project-revenue-adjustments/{id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://www.ruddr.io/api/workspace/project-revenue-adjustments/{id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://www.ruddr.io/api/workspace/project-revenue-adjustments/{id}', 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-revenue-adjustments/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://www.ruddr.io/api/workspace/project-revenue-adjustments/{id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://www.ruddr.io/api/workspace/project-revenue-adjustments/{id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://www.ruddr.io/api/workspace/project-revenue-adjustments/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"id": "d1dee101-6d4b-4a26-bc0f-8508b22b3b85",
"date": "2026-02-10",
"revenueType": "other_items",
"amount": 900,
"notes": "Reimbursable rebill",
"creditNoteId": null,
"createdAt": "2026-02-10T08:15:42.731Z",
"project": {
"id": "060a0758-a538-4523-a6ad-989e50e3cb82",
"name": "Platform Migration",
"client": {
"id": "212477bf-4473-42c3-bebc-885a1225c12d",
"name": "Initech"
}
}
}{
"status": 400,
"message": "Parameter 'id' is not a valid UUID."
}{
"status": 404,
"message": "Object with id '26a1408f-fd04-46bd-a663-c9fc083878bb' not found."
}Manual positive or negative adjustments to a project’s earned revenue. They affect earned revenue only and never change invoiced revenue. Available on billable projects.
Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
The project revenue adjustment uuid.
Response
200
The unique identifier for the object.
The date of the adjustment. Will be in the form YYYY-MM-DD.
The category of earned revenue this adjustment applies to.
Available options:
services, expenses, products, other_items The adjustment amount. Positive values increase earned revenue and negative values decrease it.
Any notes about the adjustment.
The ID (uuid) of the credit note that created this adjustment when it was published, if any. Adjustments created by a credit note are read-only.
The timestamp when the object was created.
The project this adjustment belongs to.
Show child attributes
Show child attributes