API ReferenceDestinations

Destinations API

Destinations are the tools and platforms where SignalSmith sends your data. Destinations receive data from syncs and audience syncs, and support a wide range of types including CRM platforms, advertising networks, marketing tools, warehouses, and webhooks.

Endpoints

MethodPathDescription
GET/api/v1/workspaces/{id}/destinationsList all destinations
POST/api/v1/workspaces/{id}/destinationsCreate a destination
GET/api/v1/workspaces/{id}/destinations/{destId}Get a destination
PUT/api/v1/workspaces/{id}/destinations/{destId}Update a destination
DELETE/api/v1/workspaces/{id}/destinations/{destId}Delete a destination
POST/api/v1/workspaces/{id}/destinations/testTest a new connection (SSE)
POST/api/v1/workspaces/{id}/destinations/{destId}/testTest an existing connection (SSE)
GET/api/v1/workspaces/{id}/destinations/{destId}/fieldsDescribe destination fields
GET/api/v1/workspaces/{id}/destinations/{destId}/permissionsGet destination permissions

List Destinations

GET /api/v1/workspaces/{id}/destinations

Returns all destinations in the workspace.

Response

[
  {
    "id": "550e8400-e29b-41d4-a716-446655440000",
    "workspace_id": "660e8400-e29b-41d4-a716-446655440000",
    "connection_id": null,
    "name": "Salesforce Production",
    "destination_type": "salesforce",
    "config": {
      "instance_url": "https://mycompany.salesforce.com",
      "api_version": "58.0",
      "object": "Contact"
    },
    "status": "connected",
    "status_error": "",
    "created_by": "770e8400-e29b-41d4-a716-446655440000",
    "created_at": "2024-01-15T09:30:00Z",
    "updated_at": "2024-01-15T09:30:00Z"
  }
]

Example

curl -X GET https://your-instance.signalsmith.io/api/v1/workspaces/{id}/destinations \
  -H "Authorization: Bearer <token>" \
  -H "X-Workspace-ID: <workspace-id>"

Create Destination

POST /api/v1/workspaces/{id}/destinations

Creates a new destination connection.

Request Body

FieldTypeRequiredDescription
namestringYesDisplay name
destination_typestringYesDestination connector type
configobjectYesConnection configuration (varies by type)
connection_idstringNoShared connection ID

Supported Destination Types

TypeDescription
salesforceSalesforce CRM
hubspotHubSpot CRM
google_adsGoogle Ads
facebook_adsFacebook/Meta Ads
linkedin_adsLinkedIn Ads
the_trade_deskThe Trade Desk
brazeBraze
iterableIterable
klaviyoKlaviyo
mailchimpMailchimp
snowflakeSnowflake (as destination)
bigqueryBigQuery (as destination)
databricksDatabricks (as destination)
webhookCustom webhook
s3Amazon S3
gcsGoogle Cloud Storage

Webhook Config Example

{
  "name": "Custom Webhook",
  "destination_type": "webhook",
  "config": {
    "url": "https://api.example.com/webhook",
    "method": "POST",
    "headers": {
      "X-API-Key": "your-api-key"
    }
  }
}

Response

Returns the created destination with status 201 Created.

Example

curl -X POST https://your-instance.signalsmith.io/api/v1/workspaces/{id}/destinations \
  -H "Authorization: Bearer <token>" \
  -H "X-Workspace-ID: <workspace-id>" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Salesforce Production",
    "destination_type": "salesforce",
    "config": {
      "instance_url": "https://mycompany.salesforce.com",
      "api_version": "58.0"
    }
  }'

Get Destination

GET /api/v1/workspaces/{id}/destinations/{destId}

Returns a single destination by ID.

Example

curl -X GET https://your-instance.signalsmith.io/api/v1/workspaces/{id}/destinations/{destId} \
  -H "Authorization: Bearer <token>" \
  -H "X-Workspace-ID: <workspace-id>"

Update Destination

PUT /api/v1/workspaces/{id}/destinations/{destId}

Updates an existing destination.

Request Body

Same fields as create. Only include fields you want to change.

Example

curl -X PUT https://your-instance.signalsmith.io/api/v1/workspaces/{id}/destinations/{destId} \
  -H "Authorization: Bearer <token>" \
  -H "X-Workspace-ID: <workspace-id>" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Salesforce Production (Updated)"
  }'

Delete Destination

DELETE /api/v1/workspaces/{id}/destinations/{destId}

Deletes a destination. Cannot be deleted if active syncs reference it.

Response

{
  "status": "deleted"
}

Test New Connection

POST /api/v1/workspaces/{id}/destinations/test

Tests a destination connection using provided credentials. Response is streamed via Server-Sent Events (SSE).

Request Body

FieldTypeRequiredDescription
destination_typestringYesDestination connector type
configobjectYesConnection configuration

Response (SSE Stream)

event: step
data: {"name":"connectivity","status":"passed","message":"Successfully connected"}

event: step
data: {"name":"authentication","status":"passed","message":"OAuth token valid"}

event: done
data: {"success":true,"steps":[...]}

Test Existing Connection

POST /api/v1/workspaces/{id}/destinations/{destId}/test

Tests an existing destination’s connection. On completion, the destination’s status is updated.

Response (SSE Stream)

event: step
data: {"name":"connectivity","status":"passed","message":"Connected successfully"}

event: done
data: {"success":true,"destination":{...},"steps":[...]}

Describe Fields

GET /api/v1/workspaces/{id}/destinations/{destId}/fields

Returns the available fields in the destination that can be mapped to during sync configuration. The structure varies by destination type.

Example

curl -X GET https://your-instance.signalsmith.io/api/v1/workspaces/{id}/destinations/{destId}/fields \
  -H "Authorization: Bearer <token>" \
  -H "X-Workspace-ID: <workspace-id>"

Get Permissions

GET /api/v1/workspaces/{id}/destinations/{destId}/permissions

Returns the role-based permission settings for a destination.

Response

[
  {
    "destination_id": "550e8400-e29b-41d4-a716-446655440000",
    "role": "admin",
    "trigger_syncs": true,
    "configure_models_syncs": true,
    "manage_destination": true
  },
  {
    "destination_id": "550e8400-e29b-41d4-a716-446655440000",
    "role": "member",
    "trigger_syncs": true,
    "configure_models_syncs": false,
    "manage_destination": false
  }
]

Destination Object

FieldTypeDescription
idstring (UUID)Unique identifier
workspace_idstring (UUID)Owning workspace
connection_idstring (UUID) or nullShared connection reference
namestringDisplay name
destination_typestringConnector type
configobjectConnection configuration
statusstringpending, connected, or error
status_errorstringError message when status is error
created_bystring (UUID)Account that created the destination
created_atstring (ISO 8601)Creation timestamp
updated_atstring (ISO 8601)Last update timestamp