curl --request GET \
--url https://www.ruddr.io/api/workspace/project-rate-cards/{id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://www.ruddr.io/api/workspace/project-rate-cards/{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-rate-cards/{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-rate-cards/{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-rate-cards/{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-rate-cards/{id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://www.ruddr.io/api/workspace/project-rate-cards/{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": "4f1c8e27-3d95-42ab-9b61-7c0e5a9d1382",
"notes": "Rates agreed for the 2026 statement of work.",
"start": "2026-01-01",
"end": null,
"isBudgetRateCard": false,
"createdAt": "2026-01-05T15:04:12.000Z",
"project": {
"id": "c4d5e6f7-8a9b-0c1d-2e3f-4a5b6c7d8e9f",
"name": "Website Redesign",
"client": {
"id": "1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d",
"name": "Acme Corporation"
}
},
"memberRates": [
{
"memberId": "b7c8d9e0-1f2a-3b4c-5d6e-7f8a9b0c1d2e",
"rate": 185,
"overrideCostRate": true,
"costCurrency": "USD",
"costPerHour": 85,
"overheadCostPerHour": 12.5
}
],
"roleRates": [
{
"projectRoleId": "9a1b2c3d-4e5f-6a7b-8c9d-0e1f2a3b4c5d",
"rate": 200
}
]
}{
"status": 400,
"message": "Parameter 'id' is not a valid UUID."
}{
"status": 403,
"message": "Feature 'Project Rate Cards' is not enabled."
}{
"status": 404,
"message": "Object with id 'b7e4a219-6d83-4f1c-ae52-c9d0f3b81e47' not found."
}Get a project rate card
Requires the Project Rate Cards workspace feature.
curl --request GET \
--url https://www.ruddr.io/api/workspace/project-rate-cards/{id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://www.ruddr.io/api/workspace/project-rate-cards/{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-rate-cards/{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-rate-cards/{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-rate-cards/{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-rate-cards/{id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://www.ruddr.io/api/workspace/project-rate-cards/{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": "4f1c8e27-3d95-42ab-9b61-7c0e5a9d1382",
"notes": "Rates agreed for the 2026 statement of work.",
"start": "2026-01-01",
"end": null,
"isBudgetRateCard": false,
"createdAt": "2026-01-05T15:04:12.000Z",
"project": {
"id": "c4d5e6f7-8a9b-0c1d-2e3f-4a5b6c7d8e9f",
"name": "Website Redesign",
"client": {
"id": "1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d",
"name": "Acme Corporation"
}
},
"memberRates": [
{
"memberId": "b7c8d9e0-1f2a-3b4c-5d6e-7f8a9b0c1d2e",
"rate": 185,
"overrideCostRate": true,
"costCurrency": "USD",
"costPerHour": 85,
"overheadCostPerHour": 12.5
}
],
"roleRates": [
{
"projectRoleId": "9a1b2c3d-4e5f-6a7b-8c9d-0e1f2a3b4c5d",
"rate": 200
}
]
}{
"status": 400,
"message": "Parameter 'id' is not a valid UUID."
}{
"status": 403,
"message": "Feature 'Project Rate Cards' is not enabled."
}{
"status": 404,
"message": "Object with id 'b7e4a219-6d83-4f1c-ae52-c9d0f3b81e47' not found."
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
The project rate card uuid.
Response
200
The unique identifier for the object.
Notes describing the rate card.
The date the rate card takes effect. Will be in the form YYYY-MM-DD. Null for the earliest rate card on a project, which covers every date before the next one.
The last date the rate card covers. Will be in the form YYYY-MM-DD. Derived from the start of the next rate card, and null for the last one.
Whether the project budget is priced with this rate card.
The timestamp when the object was created.
The project this rate card belongs to.
Show child attributes
Show child attributes
The member rates recorded on this rate card.
Show child attributes
Show child attributes
The role rates recorded on this rate card.
Show child attributes
Show child attributes