Knowledge Base
Sending Data to The Trade Desk First Party Endpoint
Using Narrative’s Trade Desk Connector for a 1st Party Connection
This guide explains how to create a 1st party connection between your data set and The Trade Desk (TTD) via Narrative. Unlike marketplace listings with a full taxonomy, a 1st party connection is a one-off setup per dataset, allowing a direct link between your data and specific TTD advertisers or partners.
Add an Advertiser
If you need to grant access to a new advertiser in TTD, you must first create the advertiser record in Narrative.
Endpoint
POST https://thetradedesk-dev.narrativeconnectors.com/advertisers
Sample Request Body
{
"name": "my test advertiser ",
"secret": "12343",
"ttd_id": "test advertiser id"
}
Sample Response
{
"id": "005644f4-5b14-47aa-a673-a340fbd04c74",
"company_id": 1,
"created_at": "2025-02-07T19:52:14.508437Z",
"name": "my test advertiser ",
"secret": "12343",
"ttd_id": "test advertiser id",
"updated_at": "2025-02-07T19:52:14.508437Z"
}
nameis an internal reference for the advertiser in Narrative.secretcan be used for authentication or as a unique key.ttd_idlinks this advertiser to your TTD environment.
Create the Connection
Once the advertiser is set up, create a 1st party connection in Narrative. This ties a specific dataset to a TTD partner or advertiser. The example below restricts access to partner_id: "12323" with a hybrid rate (2.00 CPM plus 0.2% of media cost).
Endpoint
POST https://app-dev.narrative.io/openapi/connections
Sample Request Body
{
"parent_element_id": "4a27dfb9-4a1d-430d-b8de-8c028bee5130",
"buyable": true,
"data_rates": [
{
"rate_type": "hybrid",
"type": "create_data_rate_partner",
"batch_id": null,
"element_id": null,
"cpm_rate": 2,
"percent_of_media_cost_rate": 0.2,
"partner_id": "12323"
}
],
"datasets": [
10523
],
"display_name": "maid_and_hem"
}
Sample Response
{
"buyable": true,
"children": [],
"connections": [
{
"type": "connection_draft",
"created_at": "2025-02-07T19:27:17.195663Z",
"dataset_id": 10523,
"status": "draft",
"updated_at": "2025-02-07T19:27:17.195663Z"
}
],
"created_at": "2025-02-07T19:27:17.195663Z",
"data_rates": [
{
"type": "data_rate_partner",
"batch": null,
"cpm_rate": 2.0,
"element_id": "62a863dd-1b2e-4980-880c-3e88e684460d",
"partner_id": "12323",
"percent_of_media_cost_rate": 0.2,
"rate_type": "hybrid"
}
],
"display_name": "maid_and_hem",
"element_id": "62a863dd-1b2e-4980-880c-3e88e684460d",
"parent_element_id": "4a27dfb9-4a1d-430d-b8de-8c028bee5130",
"status": "draft",
"updated_at": "2025-02-07T19:27:17.195663Z"
}
buyable: trueindicates the data can be purchased (or activated) by the designated partner.connectionsshows the link is in adraftstatus by default.
Verify the Connection
Retrieve existing connections to confirm your dataset is properly linked. This can be used to review the status (draft, active, etc.) or verify parameters like advertiser_ids and historical_data_enabled.
Endpoint
GET https://app-dev.narrative.io/openapi/connections?dataset_id=12117
Sample Response
{
"records": [
{
"id": "337f2c5e-0bbb-46de-b6d1-4c9c0f0a3aca",
"dataset_id": 12117,
"quick_settings": {
"advertiser_ids": ["test"],
"data_segment_names": ["yahoo_maids"],
"first_party_data_type": "first_party_external",
"historical_data_enabled": true
},
"profile_id": "d39461d7-cc53-4a51-9dbb-552f5a129593",
"status": "active"
},
...
]
}
dataset_idconfirms which dataset is connected.quick_settingsmay contain additional targeting or expiration logic.statuscan bedraft,active, or other lifecycle states.
Conclusion
In a 1st party connection flow, each dataset is individually connected to a TTD partner or advertiser. First, ensure the advertiser is created if needed (POST /advertisers). Then, create the connection (POST /openapi/connections) referencing your dataset and partner/advertiser details. Finally, verify the connection via GET /connections?dataset_id={your_id}. If you require assistance, please contact Narrative Support.