POST /v3/advertiser → advertiserCreate
Overview
| Property | Value |
|---|---|
| REST endpoint | POST /v3/advertiser |
| GraphQL operation | advertiserCreate |
| Input type | AdvertiserCreateInput |
| Output type | AdvertiserCreatePayload (data: Advertiser, errors: [AdvertiserCreateMutationError!]) |
Multi-step operations
POST /v3/advertiser accepts a wide REST body with inline bid lists, frequency configs, political profiles, and brands. advertiserCreate covers core advertiser provisioning only—not a 1:1 mirror of the REST body.
| REST-only or non-inline behavior | GraphQL target |
|---|---|
associatedBidLists / defaultBidLists |
Create-only |
increments |
Writable on AdvertiserCreateInput.increments ([String!]) |
newFrequencyConfigs |
Create-only |
useLegacyAdditionalFees |
Create-only |
candidateProfiles, isBallotMeasure, isCandidateElection, isIndependentExpenditure |
Create-only |
brands |
Create-only |
customLabels[].customLabelId |
customLabels: [String!]—GraphQL accepts label names, not IDs |
advertiserCategory / industryCategoryId |
advertiserCategoryInput.categoryId (required on GraphQL create) |
currencyCode |
Not currently available in GraphQL |
keywords, logoUrl, DSA fields, advertiserAudienceSettings |
Create-only |
partnerId |
Create-only |
Inside REST associatedBidLists input, do not send read-only response fields: bidListSource, bidListAdjustmentType, bidListDimensions.
Input field mapping
Input type: AdvertiserCreateInput
| REST field | GraphQL field | GraphQL type | Required | Notes |
|---|---|---|---|---|
PartnerId |
partnerId |
ID! | Required | Required on create |
AdvertiserId |
N/A | N/A | Optional | Read-only |
AdvertiserName |
name |
String! | Required | REST AdvertiserName → GraphQL name |
Description |
description |
String | Optional | N/A |
CurrencyCode |
N/A | N/A | Optional | Create-only; inherits partner currency |
AttributionClickLookbackWindowInSeconds |
attributionClickLookbackWindowInSeconds |
Int! | Required | Required on GraphQL create |
AttributionImpressionLookbackWindowInSeconds |
attributionImpressionLookbackWindowInSeconds |
Int! | Required | Required on GraphQL create |
ClickDedupWindowInSeconds |
clickDedupeWindowInSeconds |
Int! | Required | REST ClickDedup → GraphQL clickDedupe |
ConversionDedupWindowInSeconds |
conversionDedupeWindowInSeconds |
Int! | Required | REST ConversionDedup → GraphQL conversionDedupe |
DefaultRightMediaOfferTypeId |
defaultRightMediaOfferTypeId |
Long! | Required | Required on GraphQL create |
IndustryCategoryId |
N/A | N/A | Optional | Deprecated on REST; use advertiserCategoryInput |
AdvertiserCategory |
advertiserCategoryInput |
AdvertiserCategoryInput! | Required | Required on GraphQL create; see nested table |
AdvertiserCategory.CategoryId |
advertiserCategoryInput.categoryId |
Long! | Required | Only writable category field |
Keywords |
N/A | N/A | Optional | Create-only |
LogoURL |
N/A | N/A | Optional | Create-only |
DomainAddress |
domainAddress |
String! | Required | Required on GraphQL create |
CustomLabels |
customLabels |
[String!] | Optional | GraphQL accepts label names, not nested ID objects |
CustomLabels[].CustomLabelId |
N/A | N/A | Optional | REST label IDs do not map 1:1; supply names in customLabels |
AssociatedBidLists |
N/A | N/A | Optional | Use advertiserAssociateBidList after create |
DefaultBidLists |
N/A | N/A | Optional | Use advertiserAssociateBidList after create |
IgnoreReferralUrlInConversion |
N/A | N/A | Optional | Create-only |
IsBallotMeasure |
N/A | N/A | Optional | Create-only |
IsCandidateElection |
N/A | N/A | Optional | Create-only |
IsIndependentExpenditure |
N/A | N/A | Optional | Create-only |
CandidateProfiles |
N/A | N/A | Optional | Not inline on create; see nested table |
Increments |
increments |
[String!] | Optional | Frequency counter IDs this advertiser increments |
NewFrequencyConfigs |
N/A | N/A | Optional | Configure frequency configs separately |
IndustryCategoryTaxonomyId |
N/A | N/A | Optional | Read-only |
IndustryCategoryMapping |
N/A | N/A | Optional | Read-only |
AdvertiserNameDsa |
N/A | N/A | Optional | Create-only |
PayerNameDsa |
N/A | N/A | Optional | Create-only |
AdvertiserAudienceSettings |
N/A | N/A | Optional | Create-only |
Country |
country |
String! | Required | ISO 3166-1 alpha-2; required on GraphQL create |
IsHecAutoExempt |
isHecAutoExempt |
Boolean | Optional | N/A |
Availability |
N/A | N/A | Optional | Read-only |
IsDimensionalBiddingModeSupported |
N/A | N/A | Optional | Read-only; not in input types |
VettingStatus |
N/A | N/A | Optional | Read-only |
Output field mapping
Output type: Advertiser (returned as data on AdvertiserCreatePayload)
| REST response field | GraphQL field | GraphQL type | Nullable | Notes |
|---|---|---|---|---|
PartnerId |
partner.id |
String! | Not nullable | N/A |
AdvertiserId |
id |
ID! | Not nullable | REST AdvertiserId → GraphQL id |
AdvertiserName |
name |
String! | Not nullable | N/A |
Description |
description |
String | Nullable | N/A |
CurrencyCode |
currency.id |
ID! | Not nullable | Nested Currency; id is ISO 4217 code |
AttributionClickLookbackWindowInSeconds |
attributionClickLookbackWindowInSeconds |
Int | Nullable | Also available under attribution.clickLookbackWindow |
AttributionImpressionLookbackWindowInSeconds |
attributionImpressionLookbackWindowInSeconds |
Int | Nullable | Also available under attribution.impressionLookbackWindow |
ClickDedupWindowInSeconds |
clickDedupeWindowInSeconds |
Int! | Not nullable | N/A |
ConversionDedupWindowInSeconds |
conversionDeDupeWindowInSeconds |
Int! | Not nullable | GraphQL spelling DeDupe |
DefaultRightMediaOfferTypeId |
defaultRightMediaOfferTypeId |
Long | Nullable | N/A |
IndustryCategoryId |
industryCategory.id |
ID | Nullable | Deprecated on REST |
AdvertiserCategory |
industryCategory |
IndustryCategory! | Not nullable | Industry category object |
Keywords |
keywords |
[String!]! | Not nullable | N/A |
Availability |
N/A | N/A | N/A | Not currently available in GraphQL |
LogoURL |
logo |
String! | Not nullable | REST LogoURL → GraphQL logo |
DomainAddress |
domainAddress |
String | Nullable | N/A |
CustomLabels |
customLabels |
CustomLabelsConnection | Nullable | Paginated connection, not flat ID list |
IsDimensionalBiddingModeSupported |
N/A | N/A | N/A | Not currently available in GraphQL |
AssociatedBidLists |
associatedBidLists |
AssociatedBidListsConnection | Nullable | Paginated; not returned inline from create payload unless selected |
DefaultBidLists |
defaultBidLists |
DefaultBidListsConnection | Nullable | Paginated |
IgnoreReferralUrlInConversion |
ignoreReferralUrlInConversion |
Boolean! | Not nullable | N/A |
IsBallotMeasure |
political.isBallotMeasure |
Boolean! | Not nullable | Nested under political |
IsCandidateElection |
political.isCandidateElection |
Boolean! | Not nullable | N/A |
IsIndependentExpenditure |
political.isIndependentExpenditure |
Boolean! | Not nullable | N/A |
CandidateProfiles |
political.candidateProfiles |
[PoliticalData!]! | Not nullable | See nested table |
VettingStatus |
vettingStatus |
AdvertiserVettingStatus! | Not nullable | Read-only |
Increments |
increments |
[String!]! | Not nullable | N/A |
NewFrequencyConfigs |
frequencyConfigs |
FrequencyConfigsConnection | Nullable | Connection, not inline list |
IndustryCategoryTaxonomyId |
industryCategory.taxonomy.id |
ID! | Not nullable | Read-only |
IndustryCategoryMapping |
industryCategory.mappings |
[CategoryMapping!] | Nullable | Read-only |
AdvertiserNameDsa |
nameDSA |
String | Nullable | N/A |
PayerNameDsa |
payerNameDSA |
String | Nullable | N/A |
AdvertiserAudienceSettings |
audienceSettings |
AdvertiserAudienceSettings! | Not nullable | N/A |
Country |
country |
Country | Nullable | Object, not ISO string |
IsHecAutoExempt |
isHecAutoExempt |
Boolean | Nullable | N/A |
Endpoint-specific nested types and enums
AdvertiserCategoryInput
Required on advertiserCreate.
| REST field | GraphQL field | GraphQL type | Required | Notes |
|---|---|---|---|---|
AdvertiserCategory.CategoryId |
categoryId |
Long! | Required | Only writable field on category input |
CandidateProfile—REST input (no GraphQL inline equivalent)
REST CandidateProfiles[] is writable on POST /v3/advertiser but is not accepted on AdvertiserCreateInput. Configure political candidate data outside this mutation.
| REST field | GraphQL field | GraphQL type | Required | Notes |
|---|---|---|---|---|
PoliticalDataId |
N/A | N/A | Optional | Server-assigned; maps to political.candidateProfiles[].id on read |
CandidateName |
N/A | N/A | N/A | Create-only |
ElectionState |
N/A | N/A | Optional | Create-only |
PayingEntityName |
N/A | N/A | N/A | Create-only |
PayingEntityAddress |
N/A | N/A | N/A | Create-only |
PayingEntityEmailAddress |
N/A | N/A | Optional | Create-only |
PayingEntityExecutiveName |
N/A | N/A | N/A | Create-only |
PayingEntityExecutiveTitle |
N/A | N/A | N/A | Create-only |
GeoDescription |
N/A | N/A | Optional | Maryland state/local only on REST |
AudienceDescription |
N/A | N/A | Optional | Maryland state/local only on REST |
DisclaimerNotice |
N/A | N/A | Optional | Create-only |
IsAdvertiserIEC |
N/A | N/A | Optional | New York political only on REST |
FileLocationInS3 |
N/A | N/A | Optional | Create-only |
FederalVerificationId |
N/A | N/A | Optional | Create-only |
StateVerificationId |
N/A | N/A | Optional | Create-only |
OtherStateElectionId |
N/A | N/A | Optional | Create-only |
CandidateProfile—REST response on `Advertiser`
| REST field | GraphQL field | GraphQL type | Nullable | Notes |
|---|---|---|---|---|
PoliticalDataId |
political.candidateProfiles[].id |
ID! | Not nullable | N/A |
CandidateName |
political.candidateProfiles[].candidateName |
String! | Not nullable | N/A |
ElectionState |
political.candidateProfiles[].electionStateName |
String | Nullable | REST enum → GraphQL state name |
PayingEntityName |
political.candidateProfiles[].payingEntityName |
String! | Not nullable | N/A |
PayingEntityAddress |
political.candidateProfiles[].payingEntityAddress |
String! | Not nullable | N/A |
PayingEntityExecutiveName |
political.candidateProfiles[].payingEntityExecutiveName |
String! | Not nullable | N/A |
PayingEntityExecutiveTitle |
political.candidateProfiles[].payingEntityExecutiveTitle |
String! | Not nullable | N/A |
FederalVerificationId |
political.candidateProfiles[].verificationFormId |
String | Nullable | When verificationFormIdType is federal |
StateVerificationId |
political.candidateProfiles[].verificationFormId |
String | Nullable | When verificationFormIdType is state/EIN |
PayingEntityEmailAddress |
N/A | N/A | N/A | Not exposed on PoliticalData |
GeoDescription |
N/A | N/A | N/A | Not exposed on PoliticalData |
AudienceDescription |
N/A | N/A | N/A | Not exposed on PoliticalData |
DisclaimerNotice |
N/A | N/A | N/A | Not exposed on PoliticalData |
IsAdvertiserIEC |
N/A | N/A | N/A | Use political.isIndependentExpenditure at advertiser level |
FileLocationInS3 |
N/A | N/A | N/A | Not exposed on PoliticalData |
OtherStateElectionId |
N/A | N/A | N/A | Not exposed on PoliticalData |
Brand—REST input (no GraphQL inline equivalent)
REST Brands[] is writable on POST /v3/advertiser but is not accepted on AdvertiserCreateInput.
| REST field | GraphQL field | GraphQL type | Required | Notes |
|---|---|---|---|---|
BrandOwner |
N/A | N/A | N/A | Create-only |
BrandName |
N/A | N/A | N/A | Create-only |
Brand—REST response on `Advertiser`
| REST field | GraphQL field | GraphQL type | Nullable | Notes |
|---|---|---|---|---|
BrandOwner |
assignedBrands[].owner |
String! | Not nullable | Also surfaced as brandOwner on advertiser |
BrandName |
assignedBrands[].name |
String! | Not nullable | N/A |
| N/A | assignedBrands[].id |
ID! | Not nullable | GraphQL-only brand identifier |
Code examples
REST example
POST /v3/advertiser HTTP/1.1
Content-Type: application/json
TTD-Auth: AUTH_TOKEN_PLACEHOLDER
{
"PartnerId": "prt-123",
"AdvertiserName": "Manual Test Advertiser",
"DomainAddress": "https://example.com",
"Country": "US",
"AttributionClickLookbackWindowInSeconds": 864000,
"AttributionImpressionLookbackWindowInSeconds": 86400,
"ClickDedupWindowInSeconds": 0,
"ConversionDedupWindowInSeconds": 0,
"DefaultRightMediaOfferTypeId": 3,
"AdvertiserCategory": { "CategoryId": 123 }
}
GraphQL example
POST /graphql HTTP/1.1
Content-Type: application/json
TTD-Auth: AUTH_TOKEN_PLACEHOLDER
mutation CreateAdvertiser($input: AdvertiserCreateInput!) {
advertiserCreate(input: $input) {
data {
id
name
domainAddress
partner { id }
}
errors {
... on AdvertiserValidationError {
message
field
}
}
}
}
Variables:
{
"input": {
"partnerId": "prt-123",
"name": "Manual Test Advertiser",
"domainAddress": "https://example.com",
"country": "US",
"attributionClickLookbackWindowInSeconds": 864000,
"attributionImpressionLookbackWindowInSeconds": 86400,
"clickDedupeWindowInSeconds": 0,
"conversionDedupeWindowInSeconds": 0,
"defaultRightMediaOfferTypeId": 3,
"advertiserCategoryInput": {
"categoryId": 123
}
}
}
REST-inline fields such as associatedBidLists, candidateProfiles, and brands are not inputs on AdvertiserCreateInput. Use advertiserAssociateBidList and other dedicated mutations after create when REST parity is required.