Skip to main content
All list endpoints in the Ruddr API use cursor-based pagination and return results in a common response format.

Response Format

List endpoints return a wrapper object:
{
  "results": [
    { "id": "...", "createdAt": "2024-01-15T10:30:00.000Z", ... },
    { "id": "...", "createdAt": "2024-01-14T09:00:00.000Z", ... }
  ],
  "hasMore": true
}
FieldTypeDescription
resultsarrayArray of resource objects
hasMorebooleanWhether additional pages exist in the traversal direction

Pagination

Query Parameters

ParameterTypeDefaultDescription
startingAfterUUIDCursor ID from the previous response to request the next page
endingBeforeUUIDCursor ID from the previous response to request the previous page
limitinteger10Maximum number of results to return (1100)
startingAfter and endingBefore are mutually exclusive — only one can be used per request. Omitting both returns results from the beginning.

Iterating Through Pages

To fetch all results, use the id of the last item in each response as the startingAfter cursor for the next request. Continue until hasMore is false. First page:
curl "https://www.ruddr.io/api/workspace/clients?limit=10" \
  -H "Authorization: Bearer YOUR_API_KEY"
Next page (using the last id from the previous response):
curl "https://www.ruddr.io/api/workspace/clients?limit=10&startingAfter=LAST_ID" \
  -H "Authorization: Bearer YOUR_API_KEY"
Previous page (using the first id from the current response):
curl "https://www.ruddr.io/api/workspace/clients?limit=10&endingBefore=FIRST_ID" \
  -H "Authorization: Bearer YOUR_API_KEY"

Sorting

All list endpoints return results sorted by createdAt in descending order (newest first). The sort order is not configurable — there are no sort or orderBy parameters.

Filtering

Most list endpoints accept query parameters to narrow results. Available filters vary by endpoint and are documented in the API Reference.

Filter Types

TypeConventionExample
UUIDField name (e.g., clientId)?clientId=<uuid>
Exact stringField name (e.g., code)?code=PRJ-001
String matchingfield, fieldContains, fieldStartsWith, fieldEndsWith?nameContains=Acme
Date rangefield, fieldAfter, fieldOnAfter, fieldBefore, fieldOnBefore?dateOnAfter=2025-01-01&dateBefore=2025-02-01
EnumField name (e.g., statusId)?statusId=active
String matching filters are case-insensitive. Date filters use YYYY-MM-DD format.

Example

Fetch the first page of active projects for a specific client:
curl "https://www.ruddr.io/api/workspace/projects?clientId=CLIENT_ID&statusId=active&limit=25" \
  -H "Authorization: Bearer YOUR_API_KEY"
Combine filtering with pagination to iterate through the results:
curl "https://www.ruddr.io/api/workspace/projects?clientId=CLIENT_ID&statusId=active&limit=25&startingAfter=LAST_ID" \
  -H "Authorization: Bearer YOUR_API_KEY"