Create endeavor deals

An endeavor deal is an agreement that grants a buying party access to inventory from one or more publishers. It can optionally include inventory composition, pricing, seeking differentiation in terms of value and availability. These deals don't have hard commitments to reach pacing goals, but you can add a media spend goal. Choosing to have a media spend goal in the endeavor deal changes how the deal is monitored throughout the platform.

IMPORTANT: To create an endeavor deal, you must complete the steps in Initiate and negotiate deals.

Here's what you need to know about endeavor deal creation:

TIP: When creating an endeavor deal, you should emphasize adding inventory composition terms for better inventory access.

The following sections focus on endeavor-specific terms. For a list of all core deal terms, see Draft deal terms.

Endeavor financial terms

Financial terms define the payment expectations for the buying party. The endeavor financial terms describe the type of auction and payment details. These terms don't include thresholds or minimums values, such as minimum avails or bid rate.

Field Required? Data Type Description
currencyCode Required String The denomination of the currency. For example, the US dollar is USD.
floorPrice Optional Decimal The lowest CPM bid allowed for the inventory in this deal.
auctionType Optional String enum The type of auction specified as an enum value. For details, see Auction type enumeration values.
mediaSpendGoal Optional Decimal The amount that you suggest that the buying party spends.
IMPORTANT: Once set, this value cannot be removed.
NOTE: Create a commitment deal if you need monitoring features or pacing.

Endeavor deal with a media spend goal

Endeavor deals with a media spend goal include the mediaSpendGoal field. This enables it to track media spend made through the deal, but it doesn't monitor the pacing of the deal.

The following example dealCreate mutation shows the structure of the financial terms for an endeavor deal created using the dealCreate mutation. For details, see EndeavorFinancialTerms object.

mutation {
  dealCreate(
    input: {
      # DEAL NAME AND PARTICIPANT DETAILS GO HERE!
      terms: {
        endeavorTerms: {
          financialTerms: {
            auctionType: FIXED_PRICE_AUCTION
            currencyCode: "USD"
            floorPrice: 9.00
            mediaSpendGoal: 1000000.00
          }
        }
      }
    }
  )
}

IMPORTANT: To create an endeavor deal with a fixed price auction, you must also include a floor price.

Endeavor deal without a media spend goal

Endeavor deals without a media spend goal must contain, at minimum, the currency code. An endeavor deal without a spend goal grants participants access to bid for the inventory listed. In addition, this deal can contribute spend toward other deals with media spend goals.

The following example dealCreate mutation shows the structure of the financial terms for an endeavor deal created using the dealCreate mutation. For details, see EndeavorFinancialTerms object.

mutation {
  dealCreate(
    input: {
      # DEAL NAME AND PARTICIPANT DETAILS GO HERE!
      terms: {
        endeavorTerms: {
          financialTerms: {
            currencyCode: "USD"
          }
        }
      }
    }
  )
}

To create an endeavor deal, you must complete the steps in Initiate and negotiate deals.

Complete endeavor deal creation mutation example

To create a deal, use the dealCreate mutation to send a request to the buying party. Here's the information you need to create a deal:

For a complete list of additional properties and descriptions, see Deal objects.

The following example dealCreate mutation shows how to create an endeavor deal without a media spend goal in a single request. For a list of all core deal terms, see Deal creation differences.

NOTE: To run the example, update the PLACEHOLDER values with valid IDs.

mutation {
  dealCreate(
    input: {
      accountId: "ACCOUNT_ID_PLACEHOLDER"
      displayName: "DEAL_UI_PLACEHOLDER"
      name: "DEAL_NAME_PLACEHOLDER"
      sellingParty: {
        id: "SELLING_PARTY_KNOWN_AGENT_ID_PLACEHOLDER"
        contact: {
          name: "Alex Smith"
          email: "alexsmith@example.com"
        }
      }
      buyingParty: {
        id: "BUYING_PARTY_KNOWN_AGENT_ID_PLACEHOLDER"
        contact: {
          name: "John Smith"
          email: "johnsmith@example.com"
        }
      }
      createdBy: {
        name: "John Smith"
        email: "johnsmith@example.com"
      }
      terms: {
        endeavorTerms: {
          financialTerms: { currencyCode: "USD" }
          flight: { endAt: "2026-01-30", startAt: "2025-11-30", timeZone: "UTC" }
          inventoryComposition: {
            inventoryChannelComposition: {
              ctvChannel: {
                adEnvironments: {
                  base: {
                    excluded: [MOBILE_OPTIMIZED_WEB]
                    included: [IN_APP, WEB]
                  }
                }
                ctv: {
                  liveStream: {
                    base: true
                  }
                  startDelay: {
                    base: {
                      excluded: [MID_ROLL]
                      included: [POST_ROLL,PRE_ROLL]
                    }
                  }
                  podSeq: {
                    base: {
                      excluded: [ANY]
                      included: [FIRST, LAST]
                    }
                  }
                  slotInPod: {
                    base: {
                      excluded: [ANY]
                      included: [FIRST_OR_LAST]
                    }
                  }
                }
                deviceTypes: {
                  base: {
                    excluded: [OTHER, OUT_OF_HOME]
                    included: [MOBILE, TABLET]
                  }
                }
                channels: {
                  base: {
                    excluded: ["CHANNEL_NAME_PLACEHOLDER_1"]
                    included: ["CHANNEL_NAME_PLACEHOLDER_2", "CHANNEL_NAME_PLACEHOLDER_3"]
                  }
                }
                networks: {
                  base: {
                    excluded: ["NETWORK_NAME_PLACEHOLDER_1"]
                    included: ["NETWORK_NAME_PLACEHOLDER_2"]
                  }
                }
              }
            }
          }
        }
      }
    }
  ) {
    data {
      id
      dealStatus
      isPausedBySellingParty
      externallyManaged
      dealType
    }
    errors {
      ... on MutationError {
        __typename
        field
        message
      }
    }
  }
}

TIP: To return errors in a mutation response, include an errors field at the end of your mutation and pass the MutationError object. For details, see Mutation errors in our GraphQL API Resource Hub.

FAQs

The following are commonly asked questions about endeavor deal creation.

How do I add an endeavor deal as a contributing deal?

Provide the deal ID of an endeavor deal without a media spend goal to a commitment deal. For examples, see Contributing deals.

Do endeavors support forecasting?

No. Endeavor deals aren't strictly enforced, so The Trade Desk doesn't monitor the deal for measurement metrics. To view metrics, create a commitment deal.

Can an endeavor deal be cancelled?

You cannot cancel an endeavor deal, but you can pause it by using the dealPause mutation. For details, see Pause and resume endeavors.

If the buying party rejects the endeavor deal, it's set to the CANCELED status.

Can I add my endeavor deal to an upfront?

Only endeavor deals with media spend goals can be added to an upfront. For details, see Group deals with upfronts.