curl --request GET \
--url https://www.ruddr.io/api/workspace/expense-items/{id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://www.ruddr.io/api/workspace/expense-items/{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/expense-items/{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/expense-items/{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/expense-items/{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/expense-items/{id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://www.ruddr.io/api/workspace/expense-items/{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": "3b7e1f2a-4c8d-4e9f-a0b1-2c3d4e5f6a7b",
"statusId": "approved",
"vendor": "Personal Vehicle",
"notes": "Client site visit for project kickoff meeting.",
"attendees": "Alice Johnson, Bob Smith",
"date": "2025-01-15",
"currency": "USD",
"amount": 33.5,
"markupMethod": "amount",
"markupRatio": null,
"markupAmount": 5,
"markup": 5,
"total": 38.5,
"unitCount": 50,
"unitAmount": 0.67,
"isReimbursable": true,
"isBillable": true,
"isReimbursed": true,
"createdAt": "2025-01-15T20:47:03.284Z",
"modifiedAt": "2025-02-05T20:47:03.284Z",
"expenseReport": {
"id": "4a186944-4259-4e8a-8aba-b9aaf6937c04",
"title": "January 2025 Expenses"
},
"expenseCategory": {
"id": "175e0635-ac9e-4880-8492-07fa584f1b15",
"name": "Mileage",
"unitName": "Mile"
},
"member": {
"id": "7c8f2e19-4d5a-4a3b-9c6d-2e8f1a0b3c4d",
"name": "Jane Smith"
},
"project": {
"id": "b4cc2b99-3b3a-4b73-8f4e-8c1d7a94e5b0",
"name": "Website Redesign",
"client": {
"id": "56deca22-a707-4148-a5f7-ea3ae6391d67",
"name": "Acme Corp"
}
},
"receipts": [
{
"id": "a040df90-415a-44a0-9a2f-736370072dd5",
"fileName": "gas-station-receipt.pdf",
"contentType": "application/pdf",
"createdAt": "2025-01-15T20:47:03.284Z"
}
],
"invoiced": false
}{
"status": 400,
"message": "Parameter 'id' is not a valid UUID."
}{
"status": 403,
"message": "Feature 'Expense Reporting' is not enabled."
}{
"status": 404,
"message": "Object with id 'e84a7c31-5f2b-4d89-b6e0-9a3c8d7f1e52' not found."
}Get an expense item
curl --request GET \
--url https://www.ruddr.io/api/workspace/expense-items/{id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://www.ruddr.io/api/workspace/expense-items/{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/expense-items/{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/expense-items/{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/expense-items/{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/expense-items/{id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://www.ruddr.io/api/workspace/expense-items/{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": "3b7e1f2a-4c8d-4e9f-a0b1-2c3d4e5f6a7b",
"statusId": "approved",
"vendor": "Personal Vehicle",
"notes": "Client site visit for project kickoff meeting.",
"attendees": "Alice Johnson, Bob Smith",
"date": "2025-01-15",
"currency": "USD",
"amount": 33.5,
"markupMethod": "amount",
"markupRatio": null,
"markupAmount": 5,
"markup": 5,
"total": 38.5,
"unitCount": 50,
"unitAmount": 0.67,
"isReimbursable": true,
"isBillable": true,
"isReimbursed": true,
"createdAt": "2025-01-15T20:47:03.284Z",
"modifiedAt": "2025-02-05T20:47:03.284Z",
"expenseReport": {
"id": "4a186944-4259-4e8a-8aba-b9aaf6937c04",
"title": "January 2025 Expenses"
},
"expenseCategory": {
"id": "175e0635-ac9e-4880-8492-07fa584f1b15",
"name": "Mileage",
"unitName": "Mile"
},
"member": {
"id": "7c8f2e19-4d5a-4a3b-9c6d-2e8f1a0b3c4d",
"name": "Jane Smith"
},
"project": {
"id": "b4cc2b99-3b3a-4b73-8f4e-8c1d7a94e5b0",
"name": "Website Redesign",
"client": {
"id": "56deca22-a707-4148-a5f7-ea3ae6391d67",
"name": "Acme Corp"
}
},
"receipts": [
{
"id": "a040df90-415a-44a0-9a2f-736370072dd5",
"fileName": "gas-station-receipt.pdf",
"contentType": "application/pdf",
"createdAt": "2025-01-15T20:47:03.284Z"
}
],
"invoiced": false
}{
"status": 400,
"message": "Parameter 'id' is not a valid UUID."
}{
"status": 403,
"message": "Feature 'Expense Reporting' is not enabled."
}{
"status": 404,
"message": "Object with id 'e84a7c31-5f2b-4d89-b6e0-9a3c8d7f1e52' not found."
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
The expense item uuid
Response
200
The unique identifier for the object.
The approval status of the expense item.
not_submitted, pending_approval, approved, rejected The name of the vendor for the expense.
Additional notes about the expense item.
The attendees for the expense (e.g. for meals or entertainment categories).
The date of the expense. In the form YYYY-MM-DD.
The ISO 4217 currency code for the expense amount (e.g. USD).
The expense amount in the expense's currency.
The markup method applied to the expense. null if no markup is applied.
percentage, amount, null The markup ratio (e.g. 0.1 for 10%). Present when markupMethod is percentage, otherwise null.
The fixed markup amount. Present when markupMethod is amount, otherwise null.
The computed markup value in the expense's currency. null when no markup method is set.
The total billed amount including any markup, in the expense's currency.
The number of units for unit-based expense categories. null if not applicable.
The per-unit amount for unit-based expense categories. null if not applicable.
Whether the expense is reimbursable to the member.
Whether the expense item is billable back to the client.
Whether the expense has been reimbursed to the member.
The timestamp when the object was created.
The timestamp when the object was last modified.
The expense report this item belongs to.
Show child attributes
Show child attributes
The expense category for this item.
Show child attributes
Show child attributes
The member who submitted the expense.
Show child attributes
Show child attributes
The project associated with this expense item. null if not assigned to a project.
Show child attributes
Show child attributes
The receipts attached to this expense item, oldest first. Receipts whose file upload never completed are not included.
Show child attributes
Show child attributes
Whether this record has been invoiced.