API Quick Start
Available to: Developers (license type) Minimum plan: Free
Get up and running with the TitanRDM API in 5 minutes. This guide walks through creating an OAuth application, obtaining a token, and making your first API calls.
Prerequisites
- A TitanRDM account with at least one deployed table containing data
- Account Administrator access (to create OAuth applications)
curlor any HTTP client (Postman, Insomnia, etc.)
Step 1: Create an OAuth Application
- Navigate to Admin > OAuth Applications
- Click New Application
- Fill in:
- Name:
My API Client(any descriptive name) - Redirect URI:
urn:ietf:wg:oauth:2.0:oob(for testing; use your actual callback URL in production) - Confidential: Yes
- Scopes: Select
api(full access)
- Name:
- Click Create
- Copy the Client Secret immediately — it is shown only once
You now have a Client ID and Client Secret.
Step 2: Obtain an Access Token
Use the Client Credentials flow for quick testing:
curl -X POST https://{subdomain}.titanrdm.com/oauth/token \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "grant_type=client_credentials" \
-d "client_id=YOUR_CLIENT_ID" \
-d "client_secret=YOUR_CLIENT_SECRET" \
-d "scope=api"
Save the access_token from the response:
export TOKEN="your_access_token_here"
Step 3: List Your Domains
curl -H "Authorization: Bearer $TOKEN" \
https://{subdomain}.titanrdm.com/api/v1/domains
Response:
{
"data": [
{
"id": 1,
"name": "Finance",
"abbreviation": "FIN",
"description": "Financial reference data"
}
],
"meta": {
"page": 1,
"per_page": 100,
"total_count": 1,
"total_pages": 1
}
}
Step 4: List Table Definitions
curl -H "Authorization: Bearer $TOKEN" \
https://{subdomain}.titanrdm.com/api/v1/table_definitions
This returns all table definitions across all branches. Filter by branch:
curl -H "Authorization: Bearer $TOKEN" \
"https://{subdomain}.titanrdm.com/api/v1/table_definitions?branch_id=1"
Step 5: Query Table Data
To read data from a deployed table, you need the table_definition_id (from the deployed table definitions endpoint) or the table_definition_key + branch_id:
curl -X POST -H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
https://{subdomain}.titanrdm.com/api/v1/table_data/grid \
-d '{
"table_definition_id": 1,
"startRow": 0,
"endRow": 50,
"filterModel": {},
"sortModel": []
}'
Response:
{
"rows": [
{
"trdm_sk": 1,
"currency_code": "USD",
"currency_name": "US Dollar",
"trdm_created_at": "2024-01-15T10:30:00Z",
"trdm_updated_at": "2024-01-15T10:30:00Z",
"trdm_is_deleted": false
}
],
"rowCount": 150
}
Step 6: Create a Record
curl -X POST -H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
https://{subdomain}.titanrdm.com/api/v1/table_data \
-d '{
"table_definition_id": 1,
"record": {
"currency_code": "GBP",
"currency_name": "British Pound"
}
}'
Response (201 Created):
{
"record": {
"trdm_sk": 151,
"currency_code": "GBP",
"currency_name": "British Pound",
"trdm_created_at": "2024-06-01T09:00:00Z",
"trdm_updated_at": "2024-06-01T09:00:00Z",
"trdm_is_deleted": false
},
"message": "Record created successfully"
}
Step 7: Update a Record
curl -X PATCH -H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
https://{subdomain}.titanrdm.com/api/v1/table_data/151 \
-d '{
"table_definition_id": 1,
"record": {
"currency_name": "Pound Sterling"
}
}'
Step 8: Export Data
Trigger a full export of a table:
curl -X POST -H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
https://{subdomain}.titanrdm.com/api/v1/exports \
-d '{
"branch_id": 1,
"table_definition_key": "currency_codes",
"pattern": "full"
}'
Response (201 Created):
{
"id": 42,
"correlation_code": "a1b2c3d4",
"status": "created",
"pattern": "full",
"download_url": null
}
Poll the export status until status is "completed" and download_url is available:
curl -H "Authorization: Bearer $TOKEN" \
https://{subdomain}.titanrdm.com/api/v1/exports/42
Common Patterns
Paginating Through Results
# Page 1
curl -H "Authorization: Bearer $TOKEN" \
"https://{subdomain}.titanrdm.com/api/v1/table_definitions?page=1&per_page=50"
# Page 2
curl -H "Authorization: Bearer $TOKEN" \
"https://{subdomain}.titanrdm.com/api/v1/table_definitions?page=2&per_page=50"
Filtering with Server-Side Filters
The table data grid endpoint supports AG Grid-compatible filter models:
{
"table_definition_id": 1,
"startRow": 0,
"endRow": 100,
"filterModel": {
"currency_code": {
"filterType": "text",
"type": "contains",
"filter": "USD"
}
},
"sortModel": [
{ "colId": "currency_name", "sort": "asc" }
]
}
Handling Token Expiration
# Check if token is still valid
curl -H "Authorization: Bearer $TOKEN" \
https://{subdomain}.titanrdm.com/api/v1/account
# If you get 401, request a new token
curl -X POST https://{subdomain}.titanrdm.com/oauth/token \
-d "grant_type=client_credentials" \
-d "client_id=YOUR_CLIENT_ID" \
-d "client_secret=YOUR_CLIENT_SECRET" \
-d "scope=api"
Next Steps
- API Endpoints Reference — full documentation of every endpoint
- Authentication — advanced auth patterns (Authorization Code flow, refresh tokens)
- OAuth Applications — managing multiple applications
- SDK Imports and Exports — automating bulk data operations