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"
}
  • name is an internal reference for the advertiser in Narrative.
  • secret can be used for authentication or as a unique key.
  • ttd_id links 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: true indicates the data can be purchased (or activated) by the designated partner.
  • connections shows the link is in a draft status 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_id confirms which dataset is connected.
  • quick_settings may contain additional targeting or expiration logic.
  • status can be draft, 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.

< Back
Rosetta

Hi! I’m Rosetta, your big data assistant. Ask me anything! If you want to talk to one of our wonderful human team members, let me know! I can schedule a call for you.