Destinations
Create, list, retrieve, update, and delete destinations in the Ours Privacy REST API, discover supported destination types, and configure destination-specific settings through the shared settings object.
Use this page to create, list, retrieve, update, and delete destinations in your account.
Where this fits in the dispatch flow
Destinations are the last stop:
Configuration changes at any stage take effect once you publish a new version.
A destination only receives an event if (1) an allowed event lists it on destinationIds, (2) no data-governance category stops dispatch, and (3) a mapping on this destination matches. Configuring a destination here without setting up the upstream stages will leave it idle.
Every destination's per-type configuration lives under the polymorphic settings object on both reads and writes.
Discover destination types
Before you create a destination, use the destination-type discovery endpoints to see which type values are available and which settings keys each one accepts.
These endpoints are read-only and account-agnostic. Use them to populate a destination picker in your UI or to generate infrastructure-as-code against the destinations API.
POST /destinations creates event-dispatch destinations only. Some warehouse and cloud-storage destination types may appear on read responses or in the broader platform, but they are not creatable through this REST POST surface.
Settings entries with type: Alert are informational messages displayed in the UI. Do not include their key in POST or PATCH settings.
Configuring a destination
POST and PATCH accept the configuration under settings.<key>:
curl -X POST "$BASE/rest/v1/destinations" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "My Klaviyo",
"type": "Klaviyo",
"settings": { "projectAPIKey": "pk_live_..." }
}'GET returns the same shape — populated configuration is always under settings:
{
"id": "885d88b9-...",
"name": "My Klaviyo",
"type": "Klaviyo",
"status": "Enabled",
"settings": { "projectAPIKey": "******" },
}Secret-typed settings are masked as ****** in read responses. To rotate a secret, send a new value on PATCH; sending the masked value back preserves the stored secret.
Destination updates follow the standard API PATCH behavior documented in the API Overview. The destination-specific rule is that per-type configuration keys always live under settings.
POST and PATCH both return the full destination entity (the same shape as GET /rest/v1/destinations/{id}), so a follow-up GET to confirm a write is no longer required.
Authorization
apiKey Ours Privacy API key
In: header
Query Parameters
Maximum number of items to return. Defaults to 25; values below 1 are clamped to 1 and values above 100 are clamped to 100.
Opaque pagination cursor from pagination.nextCursor in the previous response. Do not decode or modify it. Malformed cursors return 400 Bad Request.
Filter destinations by status.
"Disabled" | "Enabled"Filter destinations by destination type.
"AWSEventBridge" | "AWSKinesis" | "AWSLambda" | "AWSS3" | "AWSSNS" | "ActiveCampaignApi" | "Admitad" | "AdobeAnalytics" | "AmazonDSP" | "Amplitude" | "AppLovin" | "ArtsAI" | "Attentive" | "Audiohook" | "AzureBlob" | "BasisPostback" | "BeeswaxPostback" | "BingAds" | "BingAdsWeb" | "Braze" | "ConvertABTestingEvent" | "Customerio" | "DomoWarehouse" | "Everflow" | "Facebook" | "FloodlightSGTM" | "FullContact" | "G4Analytics" | "GA4MeasurementProtocol" | "GA4ServerProxy" | "Google" | "GoogleAds360" | "GoogleAdsServerContainer" | "GoogleBigQuery" | "GoogleBigQueryWarehouse" | "GoogleDataManagerEventIngest" | "GooglePubSub" | "GoogleStorage" | "HTTPCustomRequest" | "HTTPDestination" | "Hubspot" | "IHeartMediaMagellan" | "Impact" | "Iterable" | "Klaviyo" | "LinkedInAdsCAPI" | "LiveIntent" | "LiveRampWarehouse" | "Mailchimp" | "Mixpanel" | "NextdoorAds" | "OursSyntheticData" | "Partnerize" | "Pinterest" | "Plausible" | "Podscribe" | "PostHog" | "QuantcastCAPI" | "QuoraAds" | "Reddit" | "RokuCAPI" | "SnapchatAdsCapi" | "Spotify" | "StackAdaptAPI" | "Taboola" | "Tatari" | "TheTradeDesk" | "TikTok" | "UniversalAds" | "VWO" | "Viant" | "ViantCAPI" | "Vibe" | "Woopra" | "XAds" | "Zendesk" | "ZoomInfo"Response Body
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://app.oursprivacy.com/rest/v1/destinations"{
"entities": [
{
"id": "string",
"name": "string",
"type": "AWSEventBridge",
"status": "Disabled",
"createdAt": "string",
"updatedAt": "string",
"settings": {},
"limitedToSourceIds": [
"string"
],
"hashingSalt": "string"
}
],
"pagination": {
"nextCursor": "string",
"hasMore": true
}
}{
"error": "string",
"details": "string"
}{
"error": "string",
"details": "string"
}{
"error": "string",
"details": "string"
}{
"error": "string",
"details": "string"
}{
"error": "string",
"details": "string"
}Authorization
apiKey Ours Privacy API key
In: header
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://app.oursprivacy.com/rest/v1/destinations" \ -H "Content-Type: application/json" \ -d '{ "type": "Audiohook" }'{
"id": "string",
"name": "string",
"type": "AWSEventBridge",
"status": "Disabled",
"createdAt": "string",
"updatedAt": "string",
"settings": {},
"limitedToSourceIds": [
"string"
],
"hashingSalt": "string"
}{
"error": "string",
"details": "string"
}{
"error": "string",
"details": "string"
}{
"error": "string",
"details": "string"
}{
"error": "string",
"details": "string"
}{
"error": "string",
"details": "string"
}Authorization
apiKey Ours Privacy API key
In: header
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://app.oursprivacy.com/rest/v1/destinations/types"{
"entities": [
{
"id": "Audiohook",
"label": "string",
"status": "deprecated",
"capabilities": {
"oauth": true,
"listsAccounts": true,
"supportsRenamedEvents": true
},
"settings": [
{
"key": "string",
"type": "Alert",
"label": "string"
}
]
}
]
}{
"error": "string",
"details": "string"
}{
"error": "string",
"details": "string"
}{
"error": "string",
"details": "string"
}{
"error": "string",
"details": "string"
}{
"error": "string",
"details": "string"
}Authorization
apiKey Ours Privacy API key
In: header
Path Parameters
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://app.oursprivacy.com/rest/v1/destinations/string"{
"id": "string",
"name": "string",
"type": "AWSEventBridge",
"status": "Disabled",
"createdAt": "string",
"updatedAt": "string",
"settings": {},
"limitedToSourceIds": [
"string"
],
"hashingSalt": "string"
}{
"error": "string",
"details": "string"
}{
"error": "string",
"details": "string"
}{
"error": "string",
"details": "string"
}{
"error": "string",
"details": "string"
}{
"error": "string",
"details": "string"
}Authorization
apiKey Ours Privacy API key
In: header
Path Parameters
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
curl -X PATCH "https://app.oursprivacy.com/rest/v1/destinations/string" \ -H "Content-Type: application/json" \ -d '{}'{
"id": "string",
"name": "string",
"type": "AWSEventBridge",
"status": "Disabled",
"createdAt": "string",
"updatedAt": "string",
"settings": {},
"limitedToSourceIds": [
"string"
],
"hashingSalt": "string"
}{
"error": "string",
"details": "string"
}{
"error": "string",
"details": "string"
}{
"error": "string",
"details": "string"
}{
"error": "string",
"details": "string"
}{
"error": "string",
"details": "string"
}Authorization
apiKey Ours Privacy API key
In: header
Path Parameters
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
curl -X DELETE "https://app.oursprivacy.com/rest/v1/destinations/string"true{
"error": "string",
"details": "string"
}{
"error": "string",
"details": "string"
}{
"error": "string",
"details": "string"
}{
"error": "string",
"details": "string"
}{
"error": "string",
"details": "string"
}How is this guide?

