Settings
Settings endpoints provide read access to configured integrations and a message log view.
All endpoints require authentication via the X-API-Key header. See Authentication.
List integrations
GET /settings/integrations
Returns all configured integrations for the org. Only type and createdAt are included — credentials are excluded.
Example request
Response
Supported integration types
salesforce, google-analytics, pipedrive, raisers-edge.
Get an integration
GET /settings/integrations/:type
Returns a single integration by type. Credentials (accessToken, refreshToken) are excluded. Returns null data with 200 status if no integration of that type exists.
Path parameters
| Parameter | Type | Description |
|---|---|---|
type | string | Integration type (e.g. salesforce). |
Example request
Response
If no integration exists for the type:
List message logs
GET /settings/messages/logs
Returns direct messages across all platforms, sorted by timestamp descending. Each log entry includes populated user, author, and contact objects.
Query parameters
| Parameter | Type | Default | Notes |
|---|---|---|---|
page | number | 0 | 0-indexed. |
perPage | number | 50 | Items per page. |
Example request
Response
Log entry fields
| Field | Type | Description |
|---|---|---|
direction | string | in (received) or out (sent). |
platform | string | email, stacked-sms, personal-sms, twitter, or web-chat. |
status | string | delivered, undelivered, or pending. |
body | string | null | Message text content. |
media | string[] | null | Media URLs if any. |
from | string | Sender identifier (phone, email, etc.). |
to | string | Recipient identifier. |
timestamp | number | Unix timestamp. |
user | object | Sending/receiving user (populated). |
author | object | null | Original author if different from user. |
contact | object | Contact (populated). |
Response envelope
All endpoints use the standard envelope:
Error responses:
data is null for a general failure, such as a database error or an upstream timeout. When the request is rejected because of a specific field, data carries the field(s) at fault instead:
Each issue carries a path (the dotted path into the request body) and a message. A label is added when the path is not self-describing, which today means custom fields only, for example "path": "fields.68b0a1f39c2e4d0012ab77e5", "label": "Class Year". issues is an array, but treat it as holding at most one entry: validation stops at the first failure.