Creative: REST → GraphQL migration guide

Quick reference table

REST endpoint GraphQL operation Notes
GET /v3/creative/{creativeId} Creative N/A
POST /v3/creative/query/advertiser Advertiser.creatives N/A
GET /v3/creative/name/{creativeId} Creative.id, Creative.name Lightweight ID/name—no new fields
POST /v3/creative creativeCreate N/A
PUT /v3/creative creativeUpdate N/A
POST /v3/creative/generateuploadurlforaudiocreative creativeCreatePresignedUrlGenerate Unified presigned upload; set audio MIME type on file.contentType
POST /v3/creative/generateuploadurlforvideocreative creativeCreatePresignedUrlGenerate Same mutation; set video MIME type on file.contentType
POST /v3/creative/scan/tmt/{account}/policyViolation N/A Not currently available in GraphQL
POST /v3/creative/scan/tmt/{account}/incident N/A Not currently available in GraphQL

Shared nested types and enums

CreativeDeepLink

REST CreativeDeepLinkAttributes nests links under UriScheme.Link and UniversalLink.Link. GraphQL exposes a flat deepLinks array on supported concrete types only (HostedDisplayCreative, HostedNativeCreative, HostedNativeVideoCreative, HostedVideoCreative)—not on the Creative interface. Query with an inline fragment.

REST field GraphQL field GraphQL type Nullable Notes
UriScheme.Link link String! Not nullable Where linkType is URI_SCHEME.
UniversalLink.Link link String! Not nullable Where linkType is UNIVERSAL_LINK.
N/A linkType DeepLinkType! Not nullable URI_SCHEME or UNIVERSAL_LINK.

On create, deep links can also be supplied via chinaCreativeInfo.uriSchemeDeepLink / universalLinkDeepLink on format *Options inputs when willThisBeServedInChina: true.

Format-specific REST *attributes wrappers

REST returns one *Attributes wrapper per creative. GraphQL flattens those leaves onto concrete Creative implementors:

REST attributes wrapper GraphQL concrete type Create input Update input
ImageAttributes HostedDisplayCreative hostedDisplayOptions hostedDisplayCreativeOptions
ThirdPartyTagAttributes ThirdPartyDisplayCreative thirdPartyDisplayOptions thirdPartyDisplayCreativeOptions
TradeDeskHostedVideoAttributes HostedVideoCreative hostedVideoOptions hostedVideoCreativeOptions
TradeDeskHostedAudioAttributes HostedAudioCreative hostedAudioOptions hostedAudioCreativeOptions
ThirdPartyHostedVideoAttributes ThirdPartyVideoCreative thirdPartyVideoOptions thirdPartyVideoCreativeOptions
ThirdPartyHostedAudioAttributes ThirdPartyAudioCreative thirdPartyAudioOptions thirdPartyAudioCreativeOptions
Html5Attributes HostedHtml5Creative hostedHtml5Options hostedHtml5CreativeOptions
HostedNativeAttributes HostedNativeCreative hostedNativeOptions hostedNativeCreativeOptions
HostedNativeWithThirdPartyVideoAttributes HostedNativeVideoCreative hostedNativeVideoOptions hostedNativeVideoCreativeOptions
ThirdPartyNativeAttributes ThirdPartyDisplayCreative thirdPartyDisplayOptions thirdPartyDisplayCreativeOptions
FacebookAttributes N/A N/A Deprecated on REST
FacebookPagePostAttributes N/A N/A Deprecated on REST
FlashAttributes N/A N/A Deprecated on REST

Set creativeType on CreativeCreateInput to the enum value matching the chosen *Options input. See POST /v3/creative for per-field nested mappings within each options type.

CreativeTypeInput (create)

Required on CreativeCreateInput.creativeType. Set to match the single *Options input provided.

REST CreativeType (conceptual) GraphQL enum value
Hosted display (image) HOSTED_DISPLAY
Third-party display (tag) THIRD_PARTY_DISPLAY
Hosted video HOSTED_VIDEO
Hosted audio HOSTED_AUDIO
Third-party video THIRD_PARTY_VIDEO
Third-party audio THIRD_PARTY_AUDIO
HTML5 HOSTED_HTML5
Hosted native HOSTED_NATIVE
Hosted native + video HOSTED_NATIVE_VIDEO
Broadcaster hosted video BROADCASTER_HOSTED_VIDEO

See endpoint docs for full per-field mappings within each *OptionsInput / *ICreativeOptionsInput type.