API Reference
The Resplendent Data API gives you programmatic access to your data. Use it to export information, integrate with other systems, or build custom workflows.
Authentication
Section titled “Authentication”All API requests need an API credential. Create one from your account settings:
- Go to Settings → API
- Click New Credential
- Copy the ID and Key (the key is shown only once)
Include your credentials in the Authorization header using HTTP Basic authentication. Use the credential ID as the username and the Key as the password:
Authorization: Basic base64(YOUR_CREDENTIAL_ID:YOUR_CREDENTIAL_KEY)Base URL
Section titled “Base URL”https://app.resplendentdata.com/api/v1Export Data
Section titled “Export Data”Retrieve data from tables and modified datasets. This endpoint returns JSON with support for pagination.
Endpoint
Section titled “Endpoint”GET /export-data/{data_stream_type}/{data_stream_id}Path Parameters
Section titled “Path Parameters”| Parameter | Type | Description |
|---|---|---|
data_stream_type | string | Either table (raw dataset) or modifier (filtered/transformed dataset) |
data_stream_id | string | UUID of the table or modifier you want to export |
Query Parameters
Section titled “Query Parameters”| Parameter | Type | Default | Description |
|---|---|---|---|
page | integer | 1 | Page number to retrieve (minimum: 1) |
page_size | integer | 1000 | Number of records per page (minimum: 1) |
Response
Section titled “Response”Returns an array of JSON objects. Each object represents one row with column names as keys:
[ { "id": 1, "company_name": "Acme Corp", "revenue": 50000, "created_at": "2024-01-15" }, { "id": 2, "company_name": "TechStart Inc", "revenue": 125000, "created_at": "2024-02-20" }]Example Request
Section titled “Example Request”Export page 2 of a table with 500 records per page:
curl -X GET "https://app.resplendentdata.com/api/v1/export-data/table/a1b2c3d4-5678-90ab-cdef-example12345?page=2&page_size=500" \ -u "YOUR_CREDENTIAL_ID:YOUR_CREDENTIAL_KEY"Export from a modified dataset:
curl -X GET "https://app.resplendentdata.com/api/v1/export-data/modifier/b2c3d4e5-6789-01bc-defa-example23456?page=1&page_size=2000" \ -u "YOUR_CREDENTIAL_ID:YOUR_CREDENTIAL_KEY"Rate Limits
Section titled “Rate Limits”The export endpoint has rate limiting to keep the service stable:
- 45 requests per 30 seconds per customer account
- Exceeding this returns a
429 Too Many Requestserror - The response includes how many seconds to wait before retrying
Caching
Section titled “Caching”Results are cached for 15 minutes to improve performance. If you request the same data within this window, you get the cached version immediately without hitting the database.
Error Responses
Section titled “Error Responses”| Status | Code | Meaning |
|---|---|---|
| 400 | page must be at least 1 | Invalid page parameter |
| 400 | pageSize must be at least 1 | Invalid page_size parameter |
| 401 | Unauthorized | Missing or invalid API key |
| 404 | Table not found | The table UUID does not exist or you do not have access |
| 404 | Data modifier not found | The modifier UUID does not exist or you do not have access |
| 429 | Rate limit exceeded | Too many requests, retry after the specified time |
Finding Table and Modifier UUIDs
Section titled “Finding Table and Modifier UUIDs”Tables:
- Go to Settings → Datasets
- Click on a table name
- Copy the UUID from the browser URL or table details
Modifiers:
- Go to Settings → Modified Datasets
- Click on a modifier name
- Copy the UUID from the browser URL or modifier details
Data Types
Section titled “Data Types”The API converts database types to JSON-compatible formats:
| Database Type | JSON Output | Example |
|---|---|---|
| Integer | Number | 42 |
| Decimal/Float | Number | 123.45 |
| String/Text | String | "Hello" |
| Boolean | Boolean | true or false |
| Date | ISO 8601 string | "2024-01-15" |
| DateTime | ISO 8601 string | "2024-01-15T14:30:00" |
| Null values | null | null |
Manage Integrations
Section titled “Manage Integrations”List and control which integrations are active. Disabling an integration stops new syncs while preserving existing datasets and dashboards.
List integrations
Section titled “List integrations”Retrieve every integration connection for a customer.
Endpoint
Section titled “Endpoint”POST /get-integrationsRequest body
Section titled “Request body”| Parameter | Type | Required | Description |
|---|---|---|---|
wl_customer_id | string | Yes | Customer identifier |
wl_env_id | string | Yes | Environment identifier |
Response
Section titled “Response”Returns an array of integration objects:
| Field | Type | Description |
|---|---|---|
source_uuid | string | Unique identifier for the integration |
source_name | string | Display name |
engine_type | string | Integration type (e.g., connectwise, quickbooks) |
is_disabled | boolean | Whether the integration is currently disabled |
last_sync | datetime | Timestamp of the last successful sync (or null) |
failed_attempts | integer | Number of consecutive failed sync attempts |
Example request
Section titled “Example request”curl -X POST "https://app.resplendentdata.com/api/v1/get-integrations" \ -u "YOUR_CREDENTIAL_ID:YOUR_CREDENTIAL_KEY" \ -H "Content-Type: application/json" \ -d '{ "wl_customer_id": "12345", "wl_env_id": "us10" }'Example response
Section titled “Example response”[ { "source_uuid": "abc-123", "source_name": "ConnectWise Production", "engine_type": "connectwise", "is_disabled": false, "last_sync": "2026-06-04T14:30:00", "failed_attempts": 0 }, { "source_uuid": "def-456", "source_name": "QuickBooks Sandbox", "engine_type": "quickbooks", "is_disabled": true, "last_sync": "2026-05-20T10:00:00", "failed_attempts": 3 }]Set integration status
Section titled “Set integration status”Enable or disable one or more integrations in a single call.
Endpoint
Section titled “Endpoint”POST /set-integration-statusRequest body
Section titled “Request body”| Parameter | Type | Required | Description |
|---|---|---|---|
wl_customer_id | string | Yes | Customer identifier |
wl_env_id | string | Yes | Environment identifier |
integrations | array | Yes | List of status updates (see below) |
Each item in integrations:
| Field | Type | Required | Description |
|---|---|---|---|
source_uuid | string | Yes | UUID of the integration to update |
is_disabled | boolean | Yes | true to disable, false to enable |
Behavior
Section titled “Behavior”- Disabling an integration stops future syncs. Existing datasets and dashboards remain intact.
- Enabling an integration resumes normal sync scheduling.
- Returns
404if anysource_uuiddoes not belong to the customer.
Example request
Section titled “Example request”curl -X POST "https://app.resplendentdata.com/api/v1/set-integration-status" \ -u "YOUR_CREDENTIAL_ID:YOUR_CREDENTIAL_KEY" \ -H "Content-Type: application/json" \ -d '{ "wl_customer_id": "12345", "wl_env_id": "us10", "integrations": [ {"source_uuid": "abc-123", "is_disabled": true}, {"source_uuid": "def-456", "is_disabled": false} ] }'Response
Section titled “Response”Returns 204 No Content on success.
Error responses
Section titled “Error responses”| Status | Meaning |
|---|---|
| 404 | One or more integration UUIDs were not found |
| 401 | Missing or invalid API credentials |
Pagination Tips
Section titled “Pagination Tips”- Start with
page=1and increment until you receive an empty array - Page sizes above 10,000 may time out; stick to 1,000–5,000 for reliability
- The API reads up to 10 million rows per request internally
- Cache is keyed by the stream ID, not by page parameters
Common Use Cases
Section titled “Common Use Cases”Exporting a dataset:
import requests
credential_id = "YOUR_CREDENTIAL_ID"credential_key = "YOUR_CREDENTIAL_KEY"table_id = "YOUR_TABLE_UUID"page = 1all_data = []
while True: response = requests.get( f"https://app.resplendentdata.com/api/v1/export-data/table/{table_id}?page={page}&page_size=5000", auth=(credential_id, credential_key) ) data = response.json() if not data: break all_data.extend(data) page += 1
# all_data now contains every row from the table