These endpoints let you list all the Sources, Destinations, and Destination settings that Segment supports.
Like the Segment Public API, the Config API has endpoints to navigate the catalog of Integrations supported by Segment. See the sections below for some key differences:
Config API | Public API |
---|---|
name | See note on names vs IDs in the migration guide |
displayName | name |
description | description |
categories | categories |
logos | logos |
type | Removed |
Config API | Public API |
---|---|
browserUnbundlingPublic | supportedFeatures.browserUnbundlingPublic |
browserUnbundlingSupported | supportedFeatures.browserUnbundling |
categories | categories |
components | components |
description | description |
displayName | name , |
id | id |
logos | logos |
methods | supportedMethods |
name | See note on names vs IDs in the migration guide |
platforms | supportedPlatforms |
previousNames | previousNames |
settings | options |
slug | slug |
status | status |
type | Not returned |
website | website |
To migrate, replace any use of the Config API endpoints with the Segment Public API counterparts, using the field mappings in the table above.
Returns a Destination catalog item by its id.
OK
Resource not found
Validation failure
Too many requests
import { configureApis, unwrap } from '@segment/public-api-sdk-typescript' const api = configureApis('/* Insert your Public API token here */') try { const result = await unwrap(api.catalog.getDestinationMetadata('54521fd525e721e32a72ee91')) console.log(JSON.stringify(result)) } catch (e) { console.log('ERROR:', e) }
{- "data": {
- "destinationMetadata": {
- "id": "54521fd525e721e32a72ee91",
- "name": "Amplitude",
- "description": "Amplitude is an event tracking and segmentation platform for your web and mobile apps. By analyzing the actions your users perform, you can gain a better understanding to drive retention, engagement, and conversion.",
- "slug": "amplitude",
- "logos": {
}, - "options": [
- {
- "name": "apiKey",
- "type": "string",
- "defaultValue": "",
- "description": "You can find your API Key on your Amplitude [Settings page](https://amplitude.com/settings).",
- "required": true,
- "label": "API Key"
}, - {
- "name": "appendFieldsToEventProps",
- "type": "text-map",
- "defaultValue": { },
- "description": "Web Device-mode only. Configure event fields to be appended to `event_props` for all track calls. For example, entering `context.page.title` on the left and `pageTitle` on the right will set the value of `context.page.title` at `event_properties.pageTitle`.",
- "required": false,
- "label": "Append Fields To Event Properties"
}, - {
- "name": "batchEvents",
- "type": "boolean",
- "defaultValue": false,
- "description": "If true, events are batched together and uploaded only when the number of unsent events is greater than or equal to `eventUploadThreshold` or after `eventUploadPeriodMillis` milliseconds have passed since the first unsent event was logged.",
- "required": false,
- "label": "Batch Events"
}, - {
- "name": "deviceIdFromUrlParam",
- "type": "boolean",
- "defaultValue": false,
- "description": "If true, the SDK will parse device ID values from url parameter `amp_device_id` if available.",
- "required": false,
- "label": "Set Device ID From URL Parameter amp_device_id"
}, - {
- "name": "enableLocationListening",
- "type": "boolean",
- "defaultValue": true,
- "description": "Mobile Only. If a user has granted your app location permissions, enable this setting so that the SDK will also grab the location of the user. Amplitude will never prompt the user for location permission, so this must be done by your app. ",
- "required": false,
- "label": "Enable Location Listening"
}
], - "status": "PUBLIC",
- "categories": [
- "Analytics"
], - "components": [
- {
- "owner": "SEGMENT",
- "type": "BROWSER"
}, - {
- "owner": "SEGMENT",
- "type": "IOS"
}, - {
- "owner": "SEGMENT",
- "type": "ANDROID"
}, - {
- "owner": "SEGMENT",
- "type": "SERVER"
}
], - "previousNames": [
- "Amplitude"
], - "supportedMethods": {
- "track": true,
- "pageview": true,
- "identify": true,
- "group": true,
- "alias": false
}, - "supportedPlatforms": {
- "browser": true,
- "mobile": true,
- "server": true,
- "warehouse": false
}, - "supportedFeatures": {
- "cloudModeInstances": "0",
- "deviceModeInstances": "0",
- "replay": false,
- "browserUnbundling": true,
- "browserUnbundlingPublic": true
}, - "actions": [ ],
- "presets": [ ],
- "contacts": [
- {
- "name": "Mike Ottavi-Brannon",
- "email": "mike@amplitude.com",
- "role": "Principle Product Manager",
- "isPrimary": true
}, - {
- "name": "Kurt Norwood",
- "email": "kurt@amplitude.com",
- "role": "Software Engineer",
- "isPrimary": false
}
], - "partnerOwned": false,
- "supportedRegions": [
- "eu-west-1",
- "us-west-2"
], - "regionEndpoints": [
- "US",
- "EU"
]
}
}
}
Returns a list of all available Destinations in the Segment catalog.
object (PaginationInput) Required pagination parameters used to filter the Destinations catalog. This parameter exists in v1. Example: pagination=pagination.count=2 |
OK
Resource not found
Validation failure
Too many requests
import { configureApis, unwrap } from '@segment/public-api-sdk-typescript' const api = configureApis('/* Insert your Public API token here */') try { const result = await unwrap(api.catalog.getDestinationsCatalog()) console.log(JSON.stringify(result)) } catch (e) { console.log('ERROR:', e) }
{- "data": {
- "destinationsCatalog": [
- {
- "id": "54521fd525e721e32a72ee8e",
- "name": "AdRoll",
- "description": "AdRoll is a retargeting network that allows you to show ads to visitors who've landed on your site while browsing the web. ",
- "slug": "adroll",
- "logos": {
}, - "options": [
- {
- "name": "_version",
- "type": "number",
- "defaultValue": 2,
- "description": "",
- "required": false,
- "label": "_version"
}, - {
- "name": "advId",
- "type": "string",
- "defaultValue": "",
- "description": "You can find your Advertiser ID in your AdRoll dashboard by clicking the **green or red dot** in the lower-left corner. In the Javascript snippet, the Advertiser ID appears as `adroll_avd_id = 'XXXXXXX'` on line 2. It should be 22 characters long and look something like this: `WYJD6WNIAJC2XG6PT7UK4B`.",
- "required": true,
- "label": "Advertiser ID"
}, - {
- "name": "events",
- "type": "text-map",
- "defaultValue": { },
- "description": "AdRoll allows you to create a Segment Name and ID for conversions events. Use this mapping to trigger the *AdRoll Segment ID* (on the right) when the Event Name (on the left) is passed in a Track method.",
- "required": false,
- "label": "Events"
}, - {
- "name": "pixId",
- "type": "string",
- "defaultValue": "",
- "description": "You can find your Pixel ID in your AdRoll dashboard by clicking the **green or red dot** in the lower-left corner. In the Javascript snippet, the Pixel ID appears as `adroll_pix_id = 'XXXXXXX'` on line 3. It should be 22 characters long, and look something like this: `6UUA5LKILFESVE44XH6SVX`.",
- "required": true,
- "label": "Pixel ID"
}
], - "status": "PUBLIC",
- "categories": [
- "Advertising"
], - "components": [
- {
- "type": "BROWSER"
}
], - "previousNames": [
- "AdRoll"
], - "supportedMethods": {
- "track": true,
- "pageview": true,
- "identify": true,
- "group": false,
- "alias": false
}, - "supportedPlatforms": {
- "browser": true,
- "mobile": false,
- "server": false,
- "warehouse": false
}, - "supportedFeatures": {
- "cloudModeInstances": "0",
- "deviceModeInstances": "0",
- "replay": false,
- "browserUnbundling": false,
- "browserUnbundlingPublic": true
}, - "actions": [ ],
- "presets": [ ],
- "contacts": [
- {
- "name": "John Doe",
- "email": "john.doe@example.com",
- "role": "VP of engineering",
- "isPrimary": true
}
], - "partnerOwned": false
}, - {
- "id": "54521fd525e721e32a72ee8f",
- "name": "AppsFlyer",
- "description": "Mobile app measurement and tracking.",
- "slug": "appsflyer",
- "logos": {
}, - "options": [
- {
- "name": "androidAppID",
- "type": "string",
- "defaultValue": "",
- "description": "Your Android App's ID. Find this in your AppsFlyer's 'My App' dashboard. It should look something like 'com.appsflyer.myapp'. This is required for Android projects if you want to send events using the server side integration.",
- "required": true,
- "label": "Android App ID"
}, - {
- "name": "appleAppID",
- "type": "string",
- "defaultValue": "",
- "description": "Your App's ID, which is accessible from iTunes or in AppsFlyer's 'My App' dashboard. This is optional for Android projects, and only required for iOS projects.",
- "required": true,
- "label": "Apple App ID (iOS)"
}, - {
- "name": "appsFlyerDevKey",
- "type": "string",
- "defaultValue": "",
- "description": "Your unique developer ID from AppsFlyer, which is accessible from your AppsFlyer account.",
- "required": true,
- "label": "AppsFlyer Dev Key"
}, - {
- "name": "canOmitAppsFlyerId",
- "type": "boolean",
- "defaultValue": false,
- "description": "*Only applicable for Appsflyer's Business Tiers customers using server-side or cloud mode destination.* Please contact your AppsFlyer representative for more information. This setting allows to use the advertising ID as appsflyer ID.",
- "required": false,
- "label": "Can Omit AppsFlyerId"
}, - {
- "name": "fallbackToIdfv",
- "type": "boolean",
- "defaultValue": false,
- "description": "With the update to use analytics-ios v4.x SDK if adTrackingEnabled is set to false, the advertisingId key will be deleted from the event. If you have the setting enabled \"Can Omit AppsFlyerId\", these events will fail when sent to AppsFlyer API. To prevent these event failures in this scenario enable this send the IDFV instead. When the \"Can Omit AppsFlyerId\" setting is enabled if the IDFA is zeroed out, we will also send an IDFV when this setting is enabled. ",
- "required": false,
- "label": "Fallback to send IDFV when advertisingId key not present (Server-Side Only)"
}
], - "status": "PUBLIC",
- "categories": [
- "Attribution",
- "Deep Linking"
], - "components": [
- {
- "owner": "PARTNER",
- "type": "ANDROID"
}, - {
- "owner": "SEGMENT",
- "type": "SERVER"
}
], - "previousNames": [
- "AppsFlyer"
], - "supportedMethods": {
- "track": true,
- "pageview": false,
- "identify": true,
- "group": false,
- "alias": false
}, - "supportedPlatforms": {
- "browser": false,
- "mobile": true,
- "server": true,
- "warehouse": false
}, - "supportedFeatures": {
- "cloudModeInstances": "0",
- "deviceModeInstances": "0",
- "replay": false,
- "browserUnbundling": false,
- "browserUnbundlingPublic": true
}, - "actions": [ ],
- "presets": [ ],
- "contacts": [ ],
- "partnerOwned": false
}
], - "pagination": {
- "current": "MA==",
- "next": "Mg==",
- "totalEntries": 446
}
}
}
Returns a Source catalog item by its id.
OK
Resource not found
Validation failure
Too many requests
import { configureApis, unwrap } from '@segment/public-api-sdk-typescript' const api = configureApis('/* Insert your Public API token here */') try { const result = await unwrap(api.catalog.getSourceMetadata('1bow82lmk')) console.log(JSON.stringify(result)) } catch (e) { console.log('ERROR:', e) }
{- "data": {
- "sourceMetadata": {
- "id": "1bow82lmk",
- "slug": "stripe",
- "name": "Stripe",
- "categories": [
- "Payments"
], - "description": "Once you have successfully OAuth’d into Stripe, we will begin syncing Stripe objects (and their corresponding properties) to any databases you have turned on (to turn on a database, navigate to the database tab in the navigation pane on the left).",
- "logos": {
}, - "options": [ ],
- "isCloudEventSource": false
}
}
}
Returns a list of all available Sources in the Segment catalog.
object (PaginationInput) Defines the pagination parameters. This parameter exists in v1. Example: pagination=pagination.count=2 |
OK
Resource not found
Validation failure
Too many requests
import { configureApis, unwrap } from '@segment/public-api-sdk-typescript' const api = configureApis('/* Insert your Public API token here */') try { const result = await unwrap(api.catalog.getSourcesCatalog()) console.log(JSON.stringify(result)) } catch (e) { console.log('ERROR:', e) }
{- "data": {
- "sourcesCatalog": [
- {
- "id": "XE0vf1bTDh",
- "slug": "active-campaign",
- "name": "ActiveCampaign",
- "categories": [
- "Email Marketing"
], - "description": "",
- "logos": {
}, - "options": [ ],
- "isCloudEventSource": true
}, - {
- "id": "cQ8NOxeApJ",
- "slug": "adwords",
- "name": "Google Ads",
- "categories": [
- "Advertising"
], - "description": "The Google Ads source pulls impressions, spend, campaign, and click data from your Google Ads account into your data warehouse.",
- "logos": {
}, - "options": [
- {
- "name": "accounts",
- "required": true,
- "type": "string",
- "defaultValue": "",
- "description": "Google Ads Customer ID override. By default, we use the \"primary\" customer for your user."
}
], - "isCloudEventSource": false
}
], - "pagination": {
- "current": "MA==",
- "next": "Mg==",
- "totalEntries": 106
}
}
}
Returns a Warehouse catalog item by its id.
OK
Resource not found
Validation failure
Too many requests
import { configureApis, unwrap } from '@segment/public-api-sdk-typescript' const api = configureApis('/* Insert your Public API token here */') try { const result = await unwrap(api.catalog.getWarehouseMetadata('55d3d3aea3c')) console.log(JSON.stringify(result)) } catch (e) { console.log('ERROR:', e) }
{- "data": {
- "warehouseMetadata": {
- "id": "55d3d3aea3c",
- "slug": "postgres",
- "name": "Postgres",
- "description": "Open source data warehouse",
- "logos": {
- "mark": "",
- "alt": ""
}, - "options": [
- {
- "name": "port",
- "required": true,
- "type": "string"
}, - {
- "name": "database",
- "required": true,
- "type": "string"
}, - {
- "name": "hostname",
- "required": true,
- "type": "string"
}, - {
- "name": "password",
- "required": true,
- "type": "string"
}, - {
- "name": "username",
- "required": true,
- "type": "string"
}, - {
- "name": "ciphertext",
- "required": true,
- "type": "string"
}
]
}
}
}
Returns a list of all available Warehouses in the Segment catalog.
object (PaginationInput) Optional pagination params used to filter the Warehouses catalog. This parameter exists in v1. Example: pagination=pagination.count=2 |
OK
Resource not found
Validation failure
Too many requests
import { configureApis, unwrap } from '@segment/public-api-sdk-typescript' const api = configureApis('/* Insert your Public API token here */') try { const result = await unwrap(api.catalog.getWarehousesCatalog()) console.log(JSON.stringify(result)) } catch (e) { console.log('ERROR:', e) }
{- "data": {
- "warehousesCatalog": [
- {
- "id": "WcjBCzUGff",
- "slug": "azuresqldw",
- "name": "Azure SQL Data Warehouse",
- "description": "Connector for Azure SQL Data Warehouse",
- "logos": {
- "alt": ""
}, - "options": [
- {
- "name": "server",
- "type": "string",
- "required": true
}, - {
- "name": "database",
- "type": "string",
- "required": true
}, - {
- "name": "password",
- "type": "string",
- "required": true
}, - {
- "name": "username",
- "type": "string",
- "required": true
}
]
}, - {
- "id": "kwX50Df0hr",
- "slug": "bigquery",
- "name": "BigQuery",
- "description": "Powered by Google Cloud Platform",
- "logos": {
}, - "options": [
- {
- "name": "location",
- "type": "string",
- "required": true
}, - {
- "name": "password",
- "type": "string",
- "required": true
}, - {
- "name": "gc-project",
- "type": "string",
- "required": true
}
]
}
], - "pagination": {
- "current": "MA==",
- "next": "Mg==",
- "totalEntries": 7
}
}
}