CINXE.COM

Ads API | Spotify for Developers

<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><link rel="icon" href="/images/favicon.ico"/><link rel="alternate" type="application/rss+xml" title="Spotify for Developers Blog" href="/rss.xml"/><title>Ads API | Spotify for Developers</title><meta name="next-head-count" content="5"/><link rel="preload" href="https://developer-assets.spotifycdn.com/_next/static/css/41709ada17122a12.css" as="style"/><link rel="stylesheet" href="https://developer-assets.spotifycdn.com/_next/static/css/41709ada17122a12.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="https://developer-assets.spotifycdn.com/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="https://developer-assets.spotifycdn.com/_next/static/chunks/webpack-50767d2faf52a563.js" defer=""></script><script src="https://developer-assets.spotifycdn.com/_next/static/chunks/framework-4b7b274cafa97250.js" defer=""></script><script src="https://developer-assets.spotifycdn.com/_next/static/chunks/main-76363c4b27927290.js" defer=""></script><script src="https://developer-assets.spotifycdn.com/_next/static/chunks/pages/_app-90dd5daa788bf6de.js" defer=""></script><script src="https://developer-assets.spotifycdn.com/_next/static/chunks/80efaec8-8d0918fc728c994a.js" defer=""></script><script src="https://developer-assets.spotifycdn.com/_next/static/chunks/155-075e14da7ba19163.js" defer=""></script><script src="https://developer-assets.spotifycdn.com/_next/static/chunks/7178-ca0697e34912bdef.js" defer=""></script><script src="https://developer-assets.spotifycdn.com/_next/static/chunks/8685-3147d7609c0acbea.js" defer=""></script><script src="https://developer-assets.spotifycdn.com/_next/static/chunks/pages/documentation/ads-api-a78a13884f4ac046.js" defer=""></script><script src="https://developer-assets.spotifycdn.com/_next/static/-HJZ5KOqYIqcU_symK61O/_buildManifest.js" defer=""></script><script src="https://developer-assets.spotifycdn.com/_next/static/-HJZ5KOqYIqcU_symK61O/_ssgManifest.js" defer=""></script><style data-styled="" data-styled-version="5.3.9">body{overflow-y:visible;}/*!sc*/ data-styled.g1[id="sc-global-gQDQsF1"]{content:"sc-global-gQDQsF1,"}/*!sc*/ .dYwJAo{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-flow:column;-ms-flex-flow:column;flex-flow:column;min-height:100vh;min-height:100dvh;}/*!sc*/ data-styled.g2[id="sc-70f368a6-0"]{content:"dYwJAo,"}/*!sc*/ .ifAlMH{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-flow:column;-ms-flex-flow:column;flex-flow:column;-webkit-flex:1 1 auto;-ms-flex:1 1 auto;flex:1 1 auto;overflow-x:hidden;}/*!sc*/ data-styled.g3[id="sc-ae97880a-0"]{content:"ifAlMH,"}/*!sc*/ .AXGli{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex:1 1 auto;-ms-flex:1 1 auto;flex:1 1 auto;}/*!sc*/ data-styled.g4[id="sc-7ead898e-0"]{content:"AXGli,"}/*!sc*/ .hWSKsH{box-sizing:border-box;-webkit-tap-highlight-color:transparent;padding-inline:0;margin-block:0;overflow-wrap:break-word;list-style-type:none;}/*!sc*/ .hrsDVQ{box-sizing:border-box;-webkit-tap-highlight-color:transparent;padding-inline:32px 0;margin-block:0;overflow-wrap:break-word;}/*!sc*/ data-styled.g5[id="TypeList__TypeListElement-sc-1jhixr6-0"]{content:"hWSKsH,hrsDVQ,"}/*!sc*/ .ceft{fill:currentcolor;width:var(--encore-graphic-size-decorative-smaller,16px);height:var(--encore-graphic-size-decorative-smaller,16px);}/*!sc*/ .ceft *{vector-effect:non-scaling-stroke;}/*!sc*/ [dir='rtl'] .ceft.ceft{-webkit-transform:scaleX(-1);-ms-transform:scaleX(-1);transform:scaleX(-1);}/*!sc*/ .dcaYNJ{fill:currentcolor;width:var(--encore-graphic-size-decorative-smaller,16px);height:var(--encore-graphic-size-decorative-smaller,16px);}/*!sc*/ .dcaYNJ *{vector-effect:non-scaling-stroke;}/*!sc*/ .eGOOvu{fill:var(--decorative-base,#000000);width:var(--encore-graphic-size-decorative-smaller-2,12px);height:var(--encore-graphic-size-decorative-smaller-2,12px);}/*!sc*/ .eGOOvu *{vector-effect:non-scaling-stroke;}/*!sc*/ data-styled.g10[id="Svg-sc-ytk21e-0"]{content:"ceft,dcaYNJ,eGOOvu,"}/*!sc*/ .eHnYHF{position:absolute;-webkit-inset-block-start:0;-ms-intb-rlock-start:0;inset-block-start:0;inset-inline-start:0;display:inline-block;background-color:var(--background-base,#ffffff);padding-block:var(--encore-spacing-base,16px) 24px;padding-inline:var(--encore-spacing-base,16px);-webkit-text-decoration:none;text-decoration:none;z-index:9999;}/*!sc*/ .eHnYHF:focus{outline:none;}/*!sc*/ .eHnYHF:not(:focus){border:0;-webkit-clip:rect(0,0,0,0);clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;}/*!sc*/ data-styled.g14[id="Link-sc-1rnxmqt-0"]{content:"eHnYHF,"}/*!sc*/ .cXqsMl{box-sizing:border-box;-webkit-tap-highlight-color:transparent;color:var(--text-base,#000000);border-color:var(--essential-base,#000000);-webkit-transition:color 200ms ease-in;transition:color 200ms ease-in;overflow-wrap:break-word;}/*!sc*/ .cXqsMl::after{display:block;position:absolute;pointer-events:none;-webkit-transition:border-color 200ms ease-in;transition:border-color 200ms ease-in;box-sizing:border-box;bottom:-6px;border-bottom:3px solid transparent;width:100%;content:'';position:relative;border-color:inherit;}/*!sc*/ data-styled.g15[id="LinkText-sc-3xixkl-0"]{content:"cXqsMl,"}/*!sc*/ .huwcwr{box-sizing:border-box;-webkit-tap-highlight-color:transparent;margin-block:0;font-size:1.125rem;font-weight:700;font-family:var(--encore-body-font-stack,var(--fallback-fonts,sans-serif));color:inherit;}/*!sc*/ .eyOwjh{box-sizing:border-box;-webkit-tap-highlight-color:transparent;margin-block:0;font-size:1rem;font-weight:400;font-family:var(--encore-body-font-stack,var(--fallback-fonts,sans-serif));color:var(--text-subdued,#656565);}/*!sc*/ .jFxTq{box-sizing:border-box;-webkit-tap-highlight-color:transparent;margin-block:0;font-size:0.875rem;font-weight:700;font-family:var(--encore-body-font-stack,var(--fallback-fonts,sans-serif));color:inherit;}/*!sc*/ .kqItdM{box-sizing:border-box;-webkit-tap-highlight-color:transparent;margin-block:0;font-size:1rem;font-weight:400;font-family:var(--encore-body-font-stack,var(--fallback-fonts,sans-serif));color:inherit;}/*!sc*/ .cMheqG{box-sizing:border-box;-webkit-tap-highlight-color:transparent;margin-block:0;font-size:2rem;font-weight:700;font-family:var(--encore-title-font-stack,var(--fallback-fonts,sans-serif));color:inherit;}/*!sc*/ @media (min-width:768px){.cMheqG{font-size:3rem;}}/*!sc*/ .ckCbjl{box-sizing:border-box;-webkit-tap-highlight-color:transparent;margin-block:0;font-size:1rem;font-weight:400;font-family:var(--encore-body-font-stack,var(--fallback-fonts,sans-serif));padding-block-end:12px;color:inherit;}/*!sc*/ .bXWpix{box-sizing:border-box;-webkit-tap-highlight-color:transparent;margin-block:0;font-size:0.875rem;font-weight:400;font-family:var(--encore-body-font-stack,var(--fallback-fonts,sans-serif));color:inherit;}/*!sc*/ data-styled.g22[id="Type__TypeElement-sc-goli3j-0"]{content:"huwcwr,eyOwjh,jFxTq,kqItdM,cMheqG,ckCbjl,bXWpix,"}/*!sc*/ .kqbyZR{display:list-item;padding-block-end:1em;}/*!sc*/ data-styled.g27[id="TypeListItem__TypeListItemElement-sc-q1l2mf-0"]{content:"kqbyZR,"}/*!sc*/ .buKKye{box-sizing:border-box;-webkit-tap-highlight-color:transparent;color:inherit;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-text-decoration:none;text-decoration:none;color:var(--text-subdued,#656565);display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;}/*!sc*/ .buKKye[href],.buKKye:hover:not([disabled]){-webkit-text-decoration:underline;text-decoration:underline;}/*!sc*/ .buKKye[href]:hover{-webkit-text-decoration:underline;text-decoration:underline;color:var(--text-bright-accent,#107434);}/*!sc*/ .buKKye[href]:focus{outline:none;box-shadow:0 3px 0 0;-webkit-transition:box-shadow 200ms ease-in;transition:box-shadow 200ms ease-in;}/*!sc*/ .buKKye[href]:focus.Link-sc-k8gsk-0[href]:focus{-webkit-text-decoration:none;text-decoration:none;}/*!sc*/ .buKKye[href]:active{color:var(--text-bright-accent,#107434);}/*!sc*/ .buKKye[disabled],.buKKye[href][disabled],.buKKye[aria-disabled='true']{color:var(--text-subdued,#656565);opacity:0.3;cursor:not-allowed;}/*!sc*/ .buKKye,.buKKye[href]{-webkit-text-decoration:none;text-decoration:none;}/*!sc*/ .buKKye[href]:focus{-webkit-text-decoration:none;text-decoration:none;color:var(--text-base,#000000);}/*!sc*/ .buKKye[href]:active{-webkit-text-decoration:underline;text-decoration:underline;color:var(--text-base,#000000);}/*!sc*/ .buKKye[href]:hover,.buKKye[href]:hover:focus{-webkit-text-decoration:underline;text-decoration:underline;color:var(--text-subdued,#656565);}/*!sc*/ .buKKye[disabled],.buKKye[href][disabled],.buKKye[aria-disabled='true']{-webkit-text-decoration:none;text-decoration:none;}/*!sc*/ .flYERd{box-sizing:border-box;-webkit-tap-highlight-color:transparent;color:var(--text-positive,#107434);-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-text-decoration:none;text-decoration:none;}/*!sc*/ .flYERd[href],.flYERd:hover:not([disabled]){-webkit-text-decoration:underline;text-decoration:underline;}/*!sc*/ .flYERd[href]:hover{-webkit-text-decoration:underline;text-decoration:underline;color:var(--text-positive,#107434);}/*!sc*/ .flYERd[href]:focus{outline:none;box-shadow:0 3px 0 0;-webkit-transition:box-shadow 200ms ease-in;transition:box-shadow 200ms ease-in;}/*!sc*/ .flYERd[href]:focus.Link-sc-k8gsk-0[href]:focus{-webkit-text-decoration:none;text-decoration:none;}/*!sc*/ .flYERd[href]:active{color:var(--text-bright-accent,#107434);}/*!sc*/ .flYERd[disabled],.flYERd[href][disabled],.flYERd[aria-disabled='true']{color:var(--text-subdued,#656565);opacity:0.3;cursor:not-allowed;}/*!sc*/ data-styled.g30[id="Link-sc-k8gsk-0"]{content:"buKKye,flYERd,"}/*!sc*/ .kkzaBr{box-sizing:border-box;-webkit-tap-highlight-color:transparent;background-color:transparent;border:0;border-radius:var(--encore-button-corner-radius,9999px);cursor:pointer;display:inline-block;position:relative;text-align:center;-webkit-text-decoration:none;text-decoration:none;text-transform:none;touch-action:manipulation;-webkit-transition-duration:33ms;transition-duration:33ms;-webkit-transition-property:background-color,border-color,color,box-shadow,filter,-webkit-transform;-webkit-transition-property:background-color,border-color,color,box-shadow,filter,transform;transition-property:background-color,border-color,color,box-shadow,filter,transform;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;vertical-align:middle;-webkit-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);transform:translate3d(0,0,0);color:var(--text-base,#000000);min-inline-size:0;min-block-size:var(--encore-control-size-base,48px);padding-block:var(--encore-spacing-tighter,12px);padding-inline:var(--encore-spacing-tighter,12px);display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;position:relative;}/*!sc*/ .kkzaBr:focus{outline:none;}/*!sc*/ @supports (overflow-wrap:anywhere){.kkzaBr{overflow-wrap:anywhere;}}/*!sc*/ @supports not (overflow-wrap:anywhere){.kkzaBr{word-break:break-word;}}/*!sc*/ .kkzaBr:hover{-webkit-transform:scale(1.04);-ms-transform:scale(1.04);transform:scale(1.04);}/*!sc*/ .kkzaBr:active{opacity:0.7;outline:none;-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1);color:var(--text-base,#000000);}/*!sc*/ .kkzaBr:focus{outline:none;}/*!sc*/ .kkzaBr::after{content:'';display:block;position:absolute;pointer-events:none;-webkit-transition:border-color 200ms ease-in;transition:border-color 200ms ease-in;box-sizing:border-box;bottom:5px;border-bottom:3px solid transparent;width:100%;}/*!sc*/ .kkzaBr:focus::after{border-color:inherit;}/*!sc*/ .kkzaBr::after{inline-size:24px;}/*!sc*/ .kkzaBr[disabled],.kkzaBr[aria-disabled='true'],fieldset[disabled] .kkzaBr{cursor:not-allowed;opacity:0.3;-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1);color:var(--text-base,#000000);}/*!sc*/ .kkzaBr[disabled]::before,.kkzaBr[aria-disabled='true']::before,fieldset[disabled] .kkzaBr::before{background-color:transparent;}/*!sc*/ .kkzaBr[disabled]::after,.kkzaBr[aria-disabled='true']::after,fieldset[disabled] .kkzaBr::after{border-color:transparent;}/*!sc*/ data-styled.g33[id="Button-sc-1dqy6lx-0"]{content:"kkzaBr,"}/*!sc*/ .jyHIqB{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}/*!sc*/ data-styled.g34[id="IconWrapper__Wrapper-sc-16usrgb-0"]{content:"jyHIqB,"}/*!sc*/ .hQQTps{max-inline-size:100%;-webkit-block-size:auto;-ms-flex-block-size:auto;block-size:auto;}/*!sc*/ data-styled.g52[id="Image-sc-1u215sg-3"]{content:"hQQTps,"}/*!sc*/ .kdFSxQ{border:0;-webkit-clip:rect(0,0,0,0);clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;}/*!sc*/ data-styled.g69[id="VisuallyHidden__VisuallyHiddenElement-sc-17bibe8-0"]{content:"kdFSxQ,"}/*!sc*/ *{box-sizing:border-box;}/*!sc*/ *::before,*::after{box-sizing:border-box;}/*!sc*/ body{margin:0;}/*!sc*/ body,input,textarea,button{font-family:var(--encore-body-font-stack);}/*!sc*/ html,body{height:100%;}/*!sc*/ data-styled.g144[id="sc-global-cnFbJs1"]{content:"sc-global-cnFbJs1,"}/*!sc*/ .iTMyfH{box-sizing:border-box;-webkit-tap-highlight-color:transparent;list-style-type:none;}/*!sc*/ data-styled.g149[id="ListItem__ListItemElement-sc-14osqn3-0"]{content:"iTMyfH,"}/*!sc*/ .fPsMQq{max-inline-size:100%;inline-size:100%;text-align:start;border-collapse:collapse;overflow-wrap:break-word;}/*!sc*/ data-styled.g226[id="Table__TableElement-sc-evwssh-0"]{content:"fPsMQq,"}/*!sc*/ .gOsDpy{box-sizing:border-box;-webkit-tap-highlight-color:transparent;text-align:start;vertical-align:middle;padding:var(--encore-spacing-tighter,12px);color:inherit;}/*!sc*/ @media (max-width:767px){.gOsDpy:first-child{padding-inline-start:var(--encore-spacing-tighter-4,4px);}}/*!sc*/ @media (max-width:767px){.gOsDpy:last-child{padding-inline-end:var(--encore-spacing-tighter-4,4px);}}/*!sc*/ .gOsDpy:focus{outline:none;color:var(--text-base,#000000);font-weight:700;}/*!sc*/ .gOsDpy > .Svg-sc-ytk21e-0,.gOsDpy > .Button-sc-me270r-0,.gOsDpy > .Trigger-sc-1q.mjssw-0 span:not(.Overlay-sc-u80gmt-0) .Button-sc-me270r-0{position:relative;top:3px;}/*!sc*/ data-styled.g227[id="TableCell__TableCellElement-sc-1nn7cfv-0"]{content:"gOsDpy,"}/*!sc*/ .gfUuhl{box-sizing:border-box;-webkit-tap-highlight-color:transparent;color:var(--text-subdued,#656565);padding:var(--encore-spacing-tighter,12px);text-align:start;vertical-align:bottom;}/*!sc*/ @media (max-width:767px){.gfUuhl:first-child{padding-inline-start:var(--encore-spacing-tighter-4,4px);}}/*!sc*/ @media (max-width:767px){.gfUuhl:last-child{padding-inline-end:var(--encore-spacing-tighter-4,4px);}}/*!sc*/ data-styled.g230[id="TableHeaderCell__TableHeaderCellElement-sc-16kf5kl-0"]{content:"gfUuhl,"}/*!sc*/ .hoXXxN{border-bottom:1px solid var(--decorative-subdued,#dedede);color:var(--text-subdued,#656565);}/*!sc*/ .hoXXxN:focus{outline:none;border:3px solid var(--essential-base,#000000);}/*!sc*/ data-styled.g233[id="TableRow__TableRowElement-sc-1kuhzdh-0"]{content:"hoXXxN,"}/*!sc*/ @media screen and (max-width:991px){.dPqbzU{background-color:var(--background-base,#ffffff);position:fixed;left:0;top:64px;bottom:0;padding:0;width:100vw;overflow-y:auto;z-index:1030;}.dPqbzU.panel-enter{left:100vw;}.dPqbzU.panel-enter-active{left:0;-webkit-transition-property:left;transition-property:left;}.dPqbzU.panel-exit{display:block;opacity:1;}.dPqbzU.panel-exit-active{display:block;opacity:0;-webkit-transition-property:opacity;transition-property:opacity;}}/*!sc*/ @media not (prefers-reduced-motion){.dPqbzU{-webkit-transition-duration:250ms;transition-duration:250ms;-webkit-transition-timing-function:cubic-bezier(0.3,0,0,1);transition-timing-function:cubic-bezier(0.3,0,0,1);}}/*!sc*/ data-styled.g248[id="sc-9fff6009-0"]{content:"dPqbzU,"}/*!sc*/ @media screen and (min-width:992px){.ljywHx{position:absolute;left:50%;top:calc(100% - 3px);-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%);-webkit-transform-origin:top;-ms-transform-origin:top;transform-origin:top;white-space:nowrap;z-index:1030;background-color:var(--background-base,#ffffff);border-radius:8px;box-shadow:0px 6px 18px rgba(0,0,0,0.2);padding:32px 40px 32px 64px;}.ljywHx.panel-enter{opacity:0;-webkit-transform:translateX(-50%) rotateX(-10deg);-ms-transform:translateX(-50%) rotateX(-10deg);transform:translateX(-50%) rotateX(-10deg);}.ljywHx.panel-enter-active{opacity:1;-webkit-transform:translateX(-50%) rotateX(0deg);-ms-transform:translateX(-50%) rotateX(0deg);transform:translateX(-50%) rotateX(0deg);-webkit-transition-property:-webkit-transform,opacity;-webkit-transition-property:transform,opacity;transition-property:transform,opacity;}.ljywHx.panel-exit{display:block;opacity:1;-webkit-transform:translateX(-50%) rotateX(0deg);-ms-transform:translateX(-50%) rotateX(0deg);transform:translateX(-50%) rotateX(0deg);}.ljywHx.panel-exit-active{display:block;opacity:0;-webkit-transform:translateX(-50%) rotateX(-10deg);-ms-transform:translateX(-50%) rotateX(-10deg);transform:translateX(-50%) rotateX(-10deg);-webkit-transition-property:-webkit-transform,opacity;-webkit-transition-property:transform,opacity;transition-property:transform,opacity;}}/*!sc*/ data-styled.g249[id="sc-147783a9-0"]{content:"ljywHx,"}/*!sc*/ .jYFMfm{width:32px;height:32px;}/*!sc*/ .jYFMfm path{-webkit-transition:all 500ms;transition:all 500ms;-webkit-transition-timing-function:cubic-bezier(0.3,0,0,1);transition-timing-function:cubic-bezier(0.3,0,0,1);}/*!sc*/ @media (prefers-reduced-motion){.jYFMfm path{-webkit-transition:none;transition:none;}}/*!sc*/ .jYFMfm path:nth-child(1){-webkit-transform-origin:3.5px 8px;-ms-transform-origin:3.5px 8px;transform-origin:3.5px 8px;-webkit-transform:rotate( 0deg );-ms-transform:rotate( 0deg );transform:rotate( 0deg );}/*!sc*/ .jYFMfm path:nth-child(2){opacity:1;}/*!sc*/ .jYFMfm path:nth-child(3){-webkit-transform-origin:3.5px 16px;-ms-transform-origin:3.5px 16px;transform-origin:3.5px 16px;-webkit-transform:rotate( 0deg );-ms-transform:rotate( 0deg );transform:rotate( 0deg );}/*!sc*/ data-styled.g250[id="sc-bbfbffd5-0"]{content:"jYFMfm,"}/*!sc*/ .kMlpAI{--background-base:#e91429 !important;--background-highlight:#d81326 !important;--background-press:#a60e1d !important;--background-elevated-base:#d81326 !important;--background-elevated-highlight:#d81326 !important;--background-elevated-press:#a60e1d !important;--background-tinted-base:#e91429 !important;--background-tinted-highlight:#e91429 !important;--background-tinted-press:#e91429 !important;--text-base:#ffffff !important;--text-subdued:#ffffff !important;--text-bright-accent:#ffffff !important;--text-negative:#ffffff !important;--text-warning:#ffffff !important;--text-positive:#ffffff !important;--text-announcement:#ffffff !important;--essential-base:#ffffff !important;--essential-subdued:#ffffff !important;--essential-bright-accent:#ffffff !important;--essential-negative:#ffffff !important;--essential-warning:#ffffff !important;--essential-positive:#ffffff !important;--essential-announcement:#ffffff !important;--decorative-base:#ffffff !important;--decorative-subdued:#ee3a4c !important;display:none;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;width:1.5rem;height:1.5rem;font-size:0.75rem;margin-left:12px;color:var(--text-base,#000000);background-color:var(--background-base,#ffffff);border-radius:100%;}/*!sc*/ data-styled.g251[id="sc-854fa934-0"]{content:"kMlpAI,"}/*!sc*/ .kUBZjS{position:absolute;pointer-events:none;top:0.5rem;right:0.5rem;}/*!sc*/ data-styled.g252[id="sc-c6c8ec75-0"]{content:"kUBZjS,"}/*!sc*/ @media screen and (min-width:992px){.cgDIHL.cgDIHL{display:none;}}/*!sc*/ data-styled.g253[id="sc-960b9084-0"]{content:"cgDIHL,"}/*!sc*/ @media screen and (max-width:991px){.hINOnu.hINOnu{display:none;}}/*!sc*/ data-styled.g254[id="sc-61e0ff0f-0"]{content:"hINOnu,"}/*!sc*/ .cKvXqF{border-radius:0;outline:transparent solid 3px;outline-offset:-3px;-webkit-transition:outline-color 200ms ease-in;transition:outline-color 200ms ease-in;background:none;border:none;color:var(--text-base,#000000);cursor:pointer;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;padding:12px 24px;width:100%;}/*!sc*/ .cKvXqF:focus-visible{outline-color:var(--essential-base,#000000);}/*!sc*/ @supports not selector(:focus-visible){.cKvXqF{outline:transparent solid 1.5px;outline-offset:-2px;}.cKvXqF:focus{outline-color:var(--essential-base,#000000);}}/*!sc*/ data-styled.g255[id="sc-226e2e15-0"]{content:"cKvXqF,"}/*!sc*/ .fZekVo{border-radius:12px;outline:transparent solid 3px;outline-offset:6px;-webkit-transition:outline-color 200ms ease-in;transition:outline-color 200ms ease-in;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:12px;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;color:var(--text-base,#000000);cursor:pointer;-webkit-text-decoration:none;text-decoration:none;}/*!sc*/ .fZekVo:focus-visible{outline-color:var(--essential-base,#000000);}/*!sc*/ @supports not selector(:focus-visible){.fZekVo{outline:transparent solid 1.5px;outline-offset:4px;}.fZekVo:focus{outline-color:var(--essential-base,#000000);}}/*!sc*/ .fZekVo > span{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:12px;}/*!sc*/ .fZekVo:hover,.fZekVo:focus{color:var(--text-positive,#107434);}/*!sc*/ @media screen and (max-width:991px){.fZekVo{border-radius:0;outline:transparent solid 3px;outline-offset:-3px;-webkit-transition:outline-color 200ms ease-in;transition:outline-color 200ms ease-in;padding:12px 24px;}.fZekVo:focus-visible{outline-color:var(--essential-base,#000000);}@supports not selector(:focus-visible){.fZekVo{outline:transparent solid 1.5px;outline-offset:-2px;}.fZekVo:focus{outline-color:var(--essential-base,#000000);}}}/*!sc*/ data-styled.g256[id="sc-57f92064-0"]{content:"fZekVo,"}/*!sc*/ @media screen and (min-width:992px){.bfMHgv.bfMHgv{display:none;}}/*!sc*/ data-styled.g257[id="sc-57f92064-1"]{content:"bfMHgv,"}/*!sc*/ @media screen and (min-width:992px){.daFODJ{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;gap:12px;}}/*!sc*/ data-styled.g258[id="sc-e3bdb244-0"]{content:"daFODJ,"}/*!sc*/ .fngAVZ{position:relative;}/*!sc*/ @media screen and (min-width:992px){.fngAVZ{-webkit-perspective:999px;-moz-perspective:999px;-ms-perspective:999px;perspective:999px;}}/*!sc*/ data-styled.g259[id="sc-daaf2fce-0"]{content:"fngAVZ,"}/*!sc*/ .ggRfAl{background:none;border:0;color:var(--text-base,#000000);cursor:pointer;-webkit-text-decoration:none;text-decoration:none;font-size:1.33rem;}/*!sc*/ @media screen and (max-width:991px){.ggRfAl{border-radius:0;outline:transparent solid 3px;outline-offset:-3px;-webkit-transition:outline-color 200ms ease-in;transition:outline-color 200ms ease-in;background-color:var(--background-highlight,#f5f5f5);display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin:2px 0;padding:12px 24px;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;width:100%;}.ggRfAl:focus-visible{outline-color:var(--essential-base,#000000);}@supports not selector(:focus-visible){.ggRfAl{outline:transparent solid 1.5px;outline-offset:-2px;}.ggRfAl:focus{outline-color:var(--essential-base,#000000);}}}/*!sc*/ @media screen and (min-width:992px){.ggRfAl{border-radius:28px;outline:transparent solid 3px;outline-offset:6px;-webkit-transition:outline-color 200ms ease-in;transition:outline-color 200ms ease-in;display:inline-block;padding:8px 16px;-webkit-transition:0.2s color linear,0.2s outline-color ease-in;transition:0.2s color linear,0.2s outline-color ease-in;white-space:nowrap;}.ggRfAl:focus-visible{outline-color:var(--essential-base,#000000);}@supports not selector(:focus-visible){.ggRfAl{outline:transparent solid 1.5px;outline-offset:4px;}.ggRfAl:focus{outline-color:var(--essential-base,#000000);}}.ggRfAl:hover{color:var(--text-bright-accent,#107434);}.ggRfAl[data-active]{color:var(--text-bright-accent,#107434);font-weight:700;}.ggRfAl[data-active]::after{content:'';display:block;border-top:2px solid var(--text-bright-accent,#107434);width:1em;position:absolute;bottom:0px;left:calc(50% - 0.5em);}}/*!sc*/ data-styled.g260[id="sc-a671ab29-0"]{content:"ggRfAl,"}/*!sc*/ @media screen and (min-width:992px){.iIHRIb.iIHRIb{display:none;}}/*!sc*/ data-styled.g261[id="sc-a671ab29-1"]{content:"iIHRIb,"}/*!sc*/ .dKipnq{border-radius:0;outline:transparent solid 3px;outline-offset:-3px;-webkit-transition:outline-color 200ms ease-in;transition:outline-color 200ms ease-in;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;background-color:var(--background-highlight,#f5f5f5);border:none;color:var(--text-base,#000000);cursor:pointer;margin-bottom:12px;padding:12px 24px;width:100%;}/*!sc*/ .dKipnq:focus-visible{outline-color:var(--essential-base,#000000);}/*!sc*/ @supports not selector(:focus-visible){.dKipnq{outline:transparent solid 1.5px;outline-offset:-2px;}.dKipnq:focus{outline-color:var(--essential-base,#000000);}}/*!sc*/ data-styled.g262[id="sc-1a8d3606-0"]{content:"dKipnq,"}/*!sc*/ @media screen and (min-width:992px){.jzFsff.jzFsff{display:none;}}/*!sc*/ data-styled.g263[id="sc-a8ce54c5-0"]{content:"jzFsff,"}/*!sc*/ @media screen and (min-width:992px){.kRyiQK{--background-base:#FFFFFF !important;--background-highlight:#40007312 !important;--background-press:#FFFFFF !important;--background-elevated-base:#400073 !important;--background-elevated-highlight:#FFFFFF !important;--background-elevated-press:#FFFFFF !important;--background-tinted-base:#40007314 !important;--background-tinted-highlight:#DACFE6 !important;--background-tinted-press:#FFFFFF !important;--decorative-base:#400073 !important;--decorative-subdued:#bdb1cb !important;--essential-base:#000000 !important;--essential-subdued:#D7DBFF !important;--essential-bright-accent:#CDF56466 !important;--essential-negative:#000000 !important;--essential-warning:#000000 !important;--essential-positive:#000000 !important;--essential-announcement:#000000 !important;--text-base:#181818 !important;--text-subdued:#282828 !important;--text-bright-accent:#400073 !important;--text-negative:#000000 !important;--text-warning:#000000 !important;--text-positive:#8C20DF !important;--text-announcement:#000000 !important;display:grid;grid-template-columns:repeat(2,minmax(200px,1fr));-webkit-column-gap:32px;column-gap:32px;row-gap:16px;}}/*!sc*/ data-styled.g264[id="sc-ca6f2bb9-0"]{content:"kRyiQK,"}/*!sc*/ .yjgPF{display:block;margin:12px 0;text-transform:uppercase;}/*!sc*/ @media screen and (max-width:991px){.yjgPF{margin:12px 24px;}}/*!sc*/ @media screen and (min-width:992px){.yjgPF{margin-left:4px;}.sc-147783a9-0 .sc-45697e4e-0:first-of-type{margin:0 0 20px;}.sc-147783a9-0 .sc-45697e4e-0:not(:first-of-type){border-top:1px solid var(--decorative-subdued,#dedede);margin:20px 0;padding-top:16px;}}/*!sc*/ data-styled.g265[id="sc-45697e4e-0"]{content:"yjgPF,"}/*!sc*/ .fyfvvy{display:inline-block;border-radius:17px;outline:transparent solid 3px;outline-offset:6px;-webkit-transition:outline-color 200ms ease-in;transition:outline-color 200ms ease-in;}/*!sc*/ .fyfvvy:focus-visible{outline-color:var(--essential-base,#000000);}/*!sc*/ @supports not selector(:focus-visible){.fyfvvy{outline:transparent solid 1.5px;outline-offset:4px;}.fyfvvy:focus{outline-color:var(--essential-base,#000000);}}/*!sc*/ .fyfvvy svg{fill:var(--text-base,#000000);max-width:100%;vertical-align:middle;}/*!sc*/ .iUCAkX{display:inline-block;border-radius:17px;outline:transparent solid 3px;outline-offset:6px;-webkit-transition:outline-color 200ms ease-in;transition:outline-color 200ms ease-in;width:192px;}/*!sc*/ .iUCAkX:focus-visible{outline-color:var(--essential-base,#000000);}/*!sc*/ @supports not selector(:focus-visible){.iUCAkX{outline:transparent solid 1.5px;outline-offset:4px;}.iUCAkX:focus{outline-color:var(--essential-base,#000000);}}/*!sc*/ .iUCAkX svg{fill:var(--text-base,#000000);max-width:100%;vertical-align:middle;}/*!sc*/ data-styled.g266[id="sc-539db49-0"]{content:"fyfvvy,iUCAkX,"}/*!sc*/ .fdpdGa{-webkit-flex:1 1 auto;-ms-flex:1 1 auto;flex:1 1 auto;}/*!sc*/ data-styled.g267[id="sc-7eae9c62-0"]{content:"fdpdGa,"}/*!sc*/ .byLwnG{background-color:var(--background-base,#ffffff);color:var(--text-subdued,#656565);padding:56px 6vw 56px;justify-self:end;}/*!sc*/ @media (max-width:991px){.byLwnG{padding:24px 6vw 48px;}}/*!sc*/ data-styled.g268[id="sc-79176060-0"]{content:"byLwnG,"}/*!sc*/ .dPgCwV{display:grid;grid-template-columns:repeat(6,auto);-webkit-column-gap:12px;column-gap:12px;row-gap:24px;max-width:1200px;}/*!sc*/ @media (max-width:991px){.dPgCwV{grid-template-columns:repeat(2,auto);}}/*!sc*/ data-styled.g269[id="sc-79176060-1"]{content:"dPgCwV,"}/*!sc*/ .gpumOS{grid-column:span 2;}/*!sc*/ data-styled.g270[id="sc-79176060-2"]{content:"gpumOS,"}/*!sc*/ .fBSVgz > h3{margin:8px 0 16px;text-transform:uppercase;}/*!sc*/ @media (max-width:991px){.fBSVgz:first-of-type{grid-row:span 2;}}/*!sc*/ data-styled.g271[id="sc-79176060-3"]{content:"fBSVgz,"}/*!sc*/ .ckOHVi{color:var(--text-base,#000000);}/*!sc*/ data-styled.g272[id="sc-79176060-4"]{content:"ckOHVi,"}/*!sc*/ .dgothR{margin-top:56px;text-align:right;}/*!sc*/ .dgothR > *:not(:first-child){margin-left:20px;}/*!sc*/ data-styled.g273[id="sc-79176060-5"]{content:"dgothR,"}/*!sc*/ html{-webkit-scroll-padding-top:calc(72px + 8px);-moz-scroll-padding-top:calc(72px + 8px);-ms-scroll-padding-top:calc(72px + 8px);scroll-padding-top:calc(72px + 8px);}/*!sc*/ @media screen and (max-width:991px){html{-webkit-scroll-padding-top:calc(64px + 8px);-moz-scroll-padding-top:calc(64px + 8px);-ms-scroll-padding-top:calc(64px + 8px);scroll-padding-top:calc(64px + 8px);}}/*!sc*/ data-styled.g280[id="sc-global-eXqpKN1"]{content:"sc-global-eXqpKN1,"}/*!sc*/ .eaUSlL{--background-base:#1E073C !important;--background-highlight:#290A50 !important;--background-press:#07020E !important;--background-elevated-base:#400073 !important;--background-elevated-highlight:#8C20DF !important;--background-elevated-press:#3C0068 !important;--background-tinted-base:#0F041D !important;--background-tinted-highlight:#551E99 !important;--background-tinted-press:#A269CF !important;--text-base:#FFFFFF !important;--text-subdued:#D8A3FF !important;--text-bright-accent:#CBF55C !important;--text-negative:#FFFFFF !important;--text-warning:#FFFFFF !important;--text-positive:#FFFFFF !important;--text-announcement:#FFFFFF !important;--decorative-base:#FFFFFF !important;--decorative-subdued:#5C13B5 !important;--essential-base:#CBF55C !important;--essential-subdued:#738A36 !important;--essential-bright-accent:#FFFFFF !important;--essential-negative:#FFFFFF !important;--essential-warning:#FFFFFF !important;--essential-positive:#FFFFFF !important;--essential-announcement:#FFFFFF !important;color:var(--text-base,#000000);position:-webkit-sticky;position:sticky;top:0;z-index:1030;background-color:var(--background-elevated-base,#ffffff);border-bottom:1px solid rgba(255,255,255,0.1);-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;padding-left:24px;padding-right:24px;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex:none;-ms-flex:none;flex:none;height:72px;}/*!sc*/ @media screen and (max-width:991px){.eaUSlL{height:64px;padding-left:16px;padding-right:4px;}}/*!sc*/ data-styled.g281[id="sc-5dd3d1dd-0"]{content:"eaUSlL,"}/*!sc*/ .jFBprj{-webkit-box-flex:3;-webkit-flex-grow:3;-ms-flex-positive:3;flex-grow:3;}/*!sc*/ data-styled.g282[id="sc-5dd3d1dd-1"]{content:"jFBprj,"}/*!sc*/ .gEpGzO{-webkit-box-flex:3;-webkit-flex-grow:3;-ms-flex-positive:3;flex-grow:3;-webkit-flex-basis:240px;-ms-flex-preferred-size:240px;flex-basis:240px;text-align:right;}/*!sc*/ data-styled.g284[id="sc-5dd3d1dd-3"]{content:"gEpGzO,"}/*!sc*/ #onetrust-banner-sdk{overscroll-behavior:none;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;}/*!sc*/ data-styled.g285[id="sc-global-euAyPy1"]{content:"sc-global-euAyPy1,"}/*!sc*/ .kVWHyn{padding:0;}/*!sc*/ data-styled.g291[id="sc-33f1116f-0"]{content:"kVWHyn,"}/*!sc*/ .fIEjgQ{display:inline-block;background-color:var(--decorative-base,#000000);width:8px;height:8px;border-radius:50%;margin:auto 2px;}/*!sc*/ data-styled.g292[id="sc-4b98e795-0"]{content:"fIEjgQ,"}/*!sc*/ .inXpDH{border-radius:0;outline:transparent solid 3px;outline-offset:-3px;-webkit-transition:outline-color 200ms ease-in;transition:outline-color 200ms ease-in;color:var(--text-base,#000000);display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-text-decoration:none;text-decoration:none;margin:0.25em 0;padding:0.25em 4px 0.25em;}/*!sc*/ .inXpDH:focus-visible{outline-color:var(--essential-base,#000000);}/*!sc*/ @supports not selector(:focus-visible){.inXpDH{outline:transparent solid 1.5px;outline-offset:-2px;}.inXpDH:focus{outline-color:var(--essential-base,#000000);}}/*!sc*/ .inXpDH:hover{color:var(--text-bright-accent,#107434);}/*!sc*/ @media screen and (max-width:991px){.inXpDH{padding:8px 24px;}}/*!sc*/ @media screen and (min-width:992px){.inXpDH[aria-current]{background-color:var(--background-tinted-base,rgba(0,0,0,0.08));color:var(--text-bright-accent,#107434);font-weight:700;}}/*!sc*/ data-styled.g293[id="sc-ca19fa36-0"]{content:"inXpDH,"}/*!sc*/ .eQIFgG{-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;margin:0 8px 0 4px;}/*!sc*/ @media screen and (max-width:991px){.eQIFgG.eQIFgG{display:none;}}/*!sc*/ data-styled.g294[id="sc-ca19fa36-1"]{content:"eQIFgG,"}/*!sc*/ @media screen and (min-width:992px){.gDQowf{margin:0 0 0 20px;padding:0 0 0 12px;border-left:1px solid var(--decorative-subdued,#dedede);}.gDQowf a{color:var(--text-subdued,#656565);font-size:0.875rem;line-height:20px;}.gDQowf a > span{display:none;}.gDQowf a[aria-current]{border-left:3px solid var(--decorative-base,#000000);margin-left:-14px;padding-left:16px;}}/*!sc*/ data-styled.g295[id="sc-3b882ab6-0"]{content:"gDQowf,"}/*!sc*/ .jaqnEm{border-radius:16px;outline:transparent solid 3px;outline-offset:6px;-webkit-transition:outline-color 200ms ease-in;transition:outline-color 200ms ease-in;background:none;cursor:pointer;border:0;margin:4px 0;padding:4px 0;color:inherit;text-align:left;}/*!sc*/ .jaqnEm:focus-visible{outline-color:var(--essential-base,#000000);}/*!sc*/ @supports not selector(:focus-visible){.jaqnEm{outline:transparent solid 1.5px;outline-offset:4px;}.jaqnEm:focus{outline-color:var(--essential-base,#000000);}}/*!sc*/ .jaqnEm > *{vertical-align:middle;}/*!sc*/ .jaqnEm > span,.jaqnEm > a{margin-left:8px;}/*!sc*/ .jaqnEm > svg{-webkit-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0);}/*!sc*/ .jaqnEm[aria-expanded='true'] > svg{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg);}/*!sc*/ data-styled.g296[id="sc-71f1783f-0"]{content:"jaqnEm,"}/*!sc*/ @media screen and (min-width:992px){.ifTmbP.ifTmbP{display:none;}}/*!sc*/ data-styled.g297[id="sc-5567915-0"]{content:"ifTmbP,"}/*!sc*/ .jPjXCP{padding-inline:4px;}/*!sc*/ @media screen and (max-width:991px){.jPjXCP.jPjXCP{display:none;}}/*!sc*/ data-styled.g298[id="sc-5567915-1"]{content:"jPjXCP,"}/*!sc*/ @media screen and (min-width:992px){.bCWGgN.bCWGgN{display:none;}}/*!sc*/ data-styled.g299[id="sc-5567915-2"]{content:"bCWGgN,"}/*!sc*/ .jjRUzu{margin-left:4px;vertical-align:middle;}/*!sc*/ @media screen and (max-width:991px){.jjRUzu.jjRUzu{display:none;}}/*!sc*/ data-styled.g300[id="sc-5567915-3"]{content:"jjRUzu,"}/*!sc*/ .hQAoDN{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;gap:8px;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}/*!sc*/ data-styled.g301[id="sc-8e747c9e-0"]{content:"hQAoDN,"}/*!sc*/ .esveKX{--top-offset:72px;--background-base:#FFFFFF !important;--background-highlight:#40007312 !important;--background-press:#FFFFFF !important;--background-elevated-base:#400073 !important;--background-elevated-highlight:#FFFFFF !important;--background-elevated-press:#FFFFFF !important;--background-tinted-base:#40007314 !important;--background-tinted-highlight:#DACFE6 !important;--background-tinted-press:#FFFFFF !important;--decorative-base:#400073 !important;--decorative-subdued:#bdb1cb !important;--essential-base:#000000 !important;--essential-subdued:#D7DBFF !important;--essential-bright-accent:#CDF56466 !important;--essential-negative:#000000 !important;--essential-warning:#000000 !important;--essential-positive:#000000 !important;--essential-announcement:#000000 !important;--text-base:#181818 !important;--text-subdued:#282828 !important;--text-bright-accent:#400073 !important;--text-negative:#000000 !important;--text-warning:#000000 !important;--text-positive:#8C20DF !important;--text-announcement:#000000 !important;background-color:var(--background-highlight,#f5f5f5);padding:20px 0 20px 20px;width:300px;height:calc(100vh - var(--top-offset));-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;position:-webkit-sticky;position:sticky;top:var(--top-offset);overflow-y:auto;}/*!sc*/ @supports (height:100dvh){.esveKX{height:calc(100dvh - var(--top-offset));}}/*!sc*/ @media screen and (max-width:991px){.esveKX.esveKX{display:none;}}/*!sc*/ data-styled.g302[id="sc-8e747c9e-1"]{content:"esveKX,"}/*!sc*/ .cyDyUk{margin-left:4px;padding-bottom:12px;}/*!sc*/ data-styled.g303[id="sc-8e747c9e-2"]{content:"cyDyUk,"}/*!sc*/ .kRudhQ{padding-bottom:32px;}/*!sc*/ data-styled.g323[id="sc-9e80177b-0"]{content:"kRudhQ,"}/*!sc*/ .ifxrgl{padding:16px 0;}/*!sc*/ data-styled.g324[id="sc-9e80177b-1"]{content:"ifxrgl,"}/*!sc*/ .kEYUZZ{max-width:100%;max-height:100vh;}/*!sc*/ @media screen and (min-height:300px){.kEYUZZ{max-height:calc(100vh / 2);}}/*!sc*/ @media screen and (min-height:1000px){.kEYUZZ{max-height:calc(100vh / 3);}}/*!sc*/ data-styled.g326[id="sc-9e80177b-3"]{content:"kEYUZZ,"}/*!sc*/ .kRdrPO{list-style:none;}/*!sc*/ @media screen and (max-width:991px){.kRdrPO.kRdrPO{display:none;}}/*!sc*/ data-styled.g388[id="sc-bad2eae7-0"]{content:"kRdrPO,"}/*!sc*/ .cnPCiV{padding:0 16px 16px;}/*!sc*/ @media screen and (min-width:992px){.cnPCiV{max-width:1800px;padding:0 32px 32px;}}/*!sc*/ data-styled.g389[id="sc-2b38a360-0"]{content:"cnPCiV,"}/*!sc*/ .lavrjL{padding-top:32px;padding-bottom:32px;}/*!sc*/ data-styled.g392[id="sc-758a8666-2"]{content:"lavrjL,"}/*!sc*/ .gsLPka{--background-base:#FFFFFF !important;--background-highlight:#40007312 !important;--background-press:#FFFFFF !important;--background-elevated-base:#400073 !important;--background-elevated-highlight:#FFFFFF !important;--background-elevated-press:#FFFFFF !important;--background-tinted-base:#40007314 !important;--background-tinted-highlight:#DACFE6 !important;--background-tinted-press:#FFFFFF !important;--decorative-base:#400073 !important;--decorative-subdued:#bdb1cb !important;--essential-base:#000000 !important;--essential-subdued:#D7DBFF !important;--essential-bright-accent:#CDF56466 !important;--essential-negative:#000000 !important;--essential-warning:#000000 !important;--essential-positive:#000000 !important;--essential-announcement:#000000 !important;--text-base:#181818 !important;--text-subdued:#282828 !important;--text-bright-accent:#400073 !important;--text-negative:#000000 !important;--text-warning:#000000 !important;--text-positive:#8C20DF !important;--text-announcement:#000000 !important;}/*!sc*/ data-styled.g393[id="sc-758a8666-3"]{content:"gsLPka,"}/*!sc*/ </style></head><body><div id="__next"><div class="sc-70f368a6-0 dYwJAo encore-creator-light-theme encore-layout-themes"><a class="Link-sc-1rnxmqt-0 eHnYHF encore-inverted-dark-set" href="#main" data-encore-id="skipLink"><div class="LinkText-sc-3xixkl-0 cXqsMl">Skip to content</div></a><header class="sc-5dd3d1dd-0 eaUSlL"><div class="sc-5dd3d1dd-1 jFBprj"><a class="sc-539db49-0 fyfvvy" href="/"><svg aria-label="Spotify for Developers" xmlns="http://www.w3.org/2000/svg" width="240" height="34"><use href="/images/spotify-for-developers-logo.svg#s4d-logo"></use></svg></a></div><nav aria-label="primary" class="sc-61e0ff0f-0 sc-5dd3d1dd-2 hINOnu hZFTKR"><ul role="list" class="TypeList__TypeListElement-sc-1jhixr6-0 hWSKsH sc-e3bdb244-0 daFODJ" data-encore-id="typeList"><li class="sc-daaf2fce-0 fngAVZ"><button aria-expanded="false" data-active="true" class="sc-a671ab29-0 ggRfAl">Documentation<svg data-encore-id="icon" role="img" aria-hidden="true" class="Svg-sc-ytk21e-0 ceft sc-a671ab29-1 iIHRIb" viewBox="0 0 16 16"><path d='M4.97.47a.75.75 0 0 0 0 1.06L11.44 8l-6.47 6.47a.75.75 0 1 0 1.06 1.06L13.56 8 6.03.47a.75.75 0 0 0-1.06 0z'/></svg></button><div hidden="" class="sc-9fff6009-0 dPqbzU sc-147783a9-0 ljywHx"><button aria-label="Go back to main navigation" class="sc-1a8d3606-0 dKipnq sc-a8ce54c5-0 jzFsff"><svg data-encore-id="icon" role="img" aria-hidden="true" viewBox="0 0 16 16" class="Svg-sc-ytk21e-0 ceft"><path d='M11.03.47a.75.75 0 0 1 0 1.06L4.56 8l6.47 6.47a.75.75 0 1 1-1.06 1.06L2.44 8 9.97.47a.75.75 0 0 1 1.06 0z'/></svg><span data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 huwcwr">Documentation</span></button><span class="Type__TypeElement-sc-goli3j-0 eyOwjh sc-45697e4e-0 yjgPF" data-encore-id="type">Products</span><ul role="list" class="TypeList__TypeListElement-sc-1jhixr6-0 hWSKsH sc-ca6f2bb9-0 kRyiQK" data-encore-id="typeList"><li><a class="sc-57f92064-0 fZekVo" href="/documentation/web-api"><span><svg data-encore-id="icon" role="img" aria-hidden="true" class="Svg-sc-ytk21e-0 dcaYNJ"><defs><clipPath id=":R18l9dm6:"><path d="M 0 0 L 16 0 L 16 16 L 8 16 L 0 8 Z"></path></clipPath><clipPath id=":R18l9dm6H1:"><rect width="16" height="16" rx="3.2"></rect></clipPath></defs><g clip-path="url(#:R18l9dm6:)"><rect width="16" height="16" rx="3.2" fill="#6900BA"></rect></g><g clip-path="url(#:R18l9dm6H1:)"><circle cx="0" cy="16" r="9.6" fill="#CDF564"></circle></g></svg>Web API</span><svg data-encore-id="icon" role="img" aria-hidden="true" class="Svg-sc-ytk21e-0 ceft sc-57f92064-1 bfMHgv" viewBox="0 0 16 16"><path d='M4.97.47a.75.75 0 0 0 0 1.06L11.44 8l-6.47 6.47a.75.75 0 1 0 1.06 1.06L13.56 8 6.03.47a.75.75 0 0 0-1.06 0z'/></svg></a></li><li><a class="sc-57f92064-0 fZekVo" href="/documentation/web-playback-sdk"><span><svg data-encore-id="icon" role="img" aria-hidden="true" class="Svg-sc-ytk21e-0 dcaYNJ"><defs><clipPath id=":R1959dm6:"><path d="M 0 0 L 16 0 L 16 16 L 8 16 L 0 8 Z"></path></clipPath><clipPath id=":R1959dm6H1:"><rect width="16" height="16" rx="3.2"></rect></clipPath></defs><g clip-path="url(#:R1959dm6:)"><rect width="16" height="16" rx="3.2" fill="#4100F5"></rect></g><g clip-path="url(#:R1959dm6H1:)"><circle cx="0" cy="16" r="9.6" fill="#F573A0"></circle></g></svg>Web Playback SDK</span><svg data-encore-id="icon" role="img" aria-hidden="true" class="Svg-sc-ytk21e-0 ceft sc-57f92064-1 bfMHgv" viewBox="0 0 16 16"><path d='M4.97.47a.75.75 0 0 0 0 1.06L11.44 8l-6.47 6.47a.75.75 0 1 0 1.06 1.06L13.56 8 6.03.47a.75.75 0 0 0-1.06 0z'/></svg></a></li><li><a class="sc-57f92064-0 fZekVo" href="/documentation/ads-api"><span><svg data-encore-id="icon" role="img" aria-hidden="true" class="Svg-sc-ytk21e-0 dcaYNJ"><defs><clipPath id=":R19l9dm6:"><path d="M 0 0 L 16 0 L 16 16 L 8 16 L 0 8 Z"></path></clipPath><clipPath id=":R19l9dm6H1:"><rect width="16" height="16" rx="3.2"></rect></clipPath></defs><g clip-path="url(#:R19l9dm6:)"><rect width="16" height="16" rx="3.2" fill="#9691FF"></rect></g><g clip-path="url(#:R19l9dm6H1:)"><circle cx="0" cy="16" r="9.6" fill="#9BF0E1"></circle></g></svg>Ads API</span><svg data-encore-id="icon" role="img" aria-hidden="true" class="Svg-sc-ytk21e-0 ceft sc-57f92064-1 bfMHgv" viewBox="0 0 16 16"><path d='M4.97.47a.75.75 0 0 0 0 1.06L11.44 8l-6.47 6.47a.75.75 0 1 0 1.06 1.06L13.56 8 6.03.47a.75.75 0 0 0-1.06 0z'/></svg></a></li><li><a class="sc-57f92064-0 fZekVo" href="/documentation/ios"><span><svg data-encore-id="icon" role="img" aria-hidden="true" class="Svg-sc-ytk21e-0 dcaYNJ"><defs><clipPath id=":R1a59dm6:"><path d="M 0 0 L 16 0 L 16 16 L 8 16 L 0 8 Z"></path></clipPath><clipPath id=":R1a59dm6H1:"><rect width="16" height="16" rx="3.2"></rect></clipPath></defs><g clip-path="url(#:R1a59dm6:)"><rect width="16" height="16" rx="3.2" fill="#509BF5"></rect></g><g clip-path="url(#:R1a59dm6H1:)"><circle cx="0" cy="16" r="9.6" fill="#FAE62D"></circle></g></svg>iOS</span><svg data-encore-id="icon" role="img" aria-hidden="true" class="Svg-sc-ytk21e-0 ceft sc-57f92064-1 bfMHgv" viewBox="0 0 16 16"><path d='M4.97.47a.75.75 0 0 0 0 1.06L11.44 8l-6.47 6.47a.75.75 0 1 0 1.06 1.06L13.56 8 6.03.47a.75.75 0 0 0-1.06 0z'/></svg></a></li><li><a class="sc-57f92064-0 fZekVo" href="/documentation/android"><span><svg data-encore-id="icon" role="img" aria-hidden="true" class="Svg-sc-ytk21e-0 dcaYNJ"><defs><clipPath id=":R1al9dm6:"><path d="M 0 0 L 16 0 L 16 16 L 8 16 L 0 8 Z"></path></clipPath><clipPath id=":R1al9dm6H1:"><rect width="16" height="16" rx="3.2"></rect></clipPath></defs><g clip-path="url(#:R1al9dm6:)"><rect width="16" height="16" rx="3.2" fill="#FFCDD2"></rect></g><g clip-path="url(#:R1al9dm6H1:)"><circle cx="0" cy="16" r="9.6" fill="#0A59B8"></circle></g></svg>Android</span><svg data-encore-id="icon" role="img" aria-hidden="true" class="Svg-sc-ytk21e-0 ceft sc-57f92064-1 bfMHgv" viewBox="0 0 16 16"><path d='M4.97.47a.75.75 0 0 0 0 1.06L11.44 8l-6.47 6.47a.75.75 0 1 0 1.06 1.06L13.56 8 6.03.47a.75.75 0 0 0-1.06 0z'/></svg></a></li><li><a class="sc-57f92064-0 fZekVo" href="/documentation/embeds"><span><svg data-encore-id="icon" role="img" aria-hidden="true" class="Svg-sc-ytk21e-0 dcaYNJ"><defs><clipPath id=":R1b59dm6:"><path d="M 0 0 L 16 0 L 16 16 L 8 16 L 0 8 Z"></path></clipPath><clipPath id=":R1b59dm6H1:"><rect width="16" height="16" rx="3.2"></rect></clipPath></defs><g clip-path="url(#:R1b59dm6:)"><rect width="16" height="16" rx="3.2" fill="#705378"></rect></g><g clip-path="url(#:R1b59dm6H1:)"><circle cx="0" cy="16" r="9.6" fill="#FF6437"></circle></g></svg>Embeds</span><svg data-encore-id="icon" role="img" aria-hidden="true" class="Svg-sc-ytk21e-0 ceft sc-57f92064-1 bfMHgv" viewBox="0 0 16 16"><path d='M4.97.47a.75.75 0 0 0 0 1.06L11.44 8l-6.47 6.47a.75.75 0 1 0 1.06 1.06L13.56 8 6.03.47a.75.75 0 0 0-1.06 0z'/></svg></a></li><li><a class="sc-57f92064-0 fZekVo" href="/documentation/commercial-hardware"><span><svg data-encore-id="icon" role="img" aria-hidden="true" class="Svg-sc-ytk21e-0 dcaYNJ"><defs><clipPath id=":R1bl9dm6:"><path d="M 0 0 L 16 0 L 16 16 L 8 16 L 0 8 Z"></path></clipPath><clipPath id=":R1bl9dm6H1:"><rect width="16" height="16" rx="3.2"></rect></clipPath></defs><g clip-path="url(#:R1bl9dm6:)"><rect width="16" height="16" rx="3.2" fill="#27856A"></rect></g><g clip-path="url(#:R1bl9dm6H1:)"><circle cx="0" cy="16" r="9.6" fill="#C8E0FC"></circle></g></svg>Commercial Hardware</span><svg data-encore-id="icon" role="img" aria-hidden="true" class="Svg-sc-ytk21e-0 ceft sc-57f92064-1 bfMHgv" viewBox="0 0 16 16"><path d='M4.97.47a.75.75 0 0 0 0 1.06L11.44 8l-6.47 6.47a.75.75 0 1 0 1.06 1.06L13.56 8 6.03.47a.75.75 0 0 0-1.06 0z'/></svg></a></li><li><a class="sc-57f92064-0 fZekVo" href="/documentation/open-access"><span><svg data-encore-id="icon" role="img" aria-hidden="true" class="Svg-sc-ytk21e-0 dcaYNJ"><defs><clipPath id=":R1c59dm6:"><path d="M 0 0 L 16 0 L 16 16 L 8 16 L 0 8 Z"></path></clipPath><clipPath id=":R1c59dm6H1:"><rect width="16" height="16" rx="3.2"></rect></clipPath></defs><g clip-path="url(#:R1c59dm6:)"><rect width="16" height="16" rx="3.2" fill="#213261"></rect></g><g clip-path="url(#:R1c59dm6H1:)"><circle cx="0" cy="16" r="9.6" fill="#D8A3FF"></circle></g></svg>Open Access</span><svg data-encore-id="icon" role="img" aria-hidden="true" class="Svg-sc-ytk21e-0 ceft sc-57f92064-1 bfMHgv" viewBox="0 0 16 16"><path d='M4.97.47a.75.75 0 0 0 0 1.06L11.44 8l-6.47 6.47a.75.75 0 1 0 1.06 1.06L13.56 8 6.03.47a.75.75 0 0 0-1.06 0z'/></svg></a></li></ul><span class="Type__TypeElement-sc-goli3j-0 eyOwjh sc-45697e4e-0 yjgPF" data-encore-id="type">Guidelines</span><ul role="list" class="TypeList__TypeListElement-sc-1jhixr6-0 hWSKsH sc-ca6f2bb9-0 kRyiQK" data-encore-id="typeList"><li><a class="sc-57f92064-0 fZekVo" href="/documentation/design"><span><svg data-encore-id="icon" role="img" aria-hidden="true" class="Svg-sc-ytk21e-0 dcaYNJ"><defs><clipPath id=":Rap9dm6:"><path d="M 0 0 L 16 0 L 16 16 L 8 16 L 0 8 Z"></path></clipPath><clipPath id=":Rap9dm6H1:"><circle cx="8" cy="8" r="8"></circle></clipPath></defs><g clip-path="url(#:Rap9dm6:)"><circle cx="8" cy="8" r="8" fill="#503750"></circle></g><g clip-path="url(#:Rap9dm6H1:)"><circle cx="0" cy="16" r="9.6" fill="#F573A0"></circle></g></svg>Design</span></a></li><li><a class="sc-57f92064-0 fZekVo" href="/documentation/accessibility"><span><svg data-encore-id="icon" role="img" aria-hidden="true" class="Svg-sc-ytk21e-0 dcaYNJ"><defs><clipPath id=":Rb99dm6:"><path d="M 0 0 L 16 0 L 16 16 L 8 16 L 0 8 Z"></path></clipPath><clipPath id=":Rb99dm6H1:"><circle cx="8" cy="8" r="8"></circle></clipPath></defs><g clip-path="url(#:Rb99dm6:)"><circle cx="8" cy="8" r="8" fill="#1D006C"></circle></g><g clip-path="url(#:Rb99dm6H1:)"><circle cx="0" cy="16" r="9.6" fill="#FFAF45"></circle></g></svg>Accessibility</span></a></li><li><a class="sc-57f92064-0 fZekVo" href="/terms"><span><svg data-encore-id="icon" role="img" aria-hidden="true" class="Svg-sc-ytk21e-0 dcaYNJ"><defs><clipPath id=":Rbp9dm6:"><path d="M 0 0 L 16 0 L 16 16 L 8 16 L 0 8 Z"></path></clipPath><clipPath id=":Rbp9dm6H1:"><circle cx="8" cy="8" r="8"></circle></clipPath></defs><g clip-path="url(#:Rbp9dm6:)"><circle cx="8" cy="8" r="8" fill="#9C78FF"></circle></g><g clip-path="url(#:Rbp9dm6H1:)"><circle cx="0" cy="16" r="9.6" fill="#FFC864"></circle></g></svg>Legal</span><svg data-encore-id="icon" role="img" aria-hidden="true" class="Svg-sc-ytk21e-0 ceft sc-57f92064-1 bfMHgv" viewBox="0 0 16 16"><path d='M4.97.47a.75.75 0 0 0 0 1.06L11.44 8l-6.47 6.47a.75.75 0 1 0 1.06 1.06L13.56 8 6.03.47a.75.75 0 0 0-1.06 0z'/></svg></a></li></ul></div></li><li class="sc-daaf2fce-0 fngAVZ"><a class="sc-a671ab29-0 ggRfAl" href="/community">Community<svg data-encore-id="icon" role="img" aria-hidden="true" class="Svg-sc-ytk21e-0 ceft sc-a671ab29-1 iIHRIb" viewBox="0 0 16 16"><path d='M4.97.47a.75.75 0 0 0 0 1.06L11.44 8l-6.47 6.47a.75.75 0 1 0 1.06 1.06L13.56 8 6.03.47a.75.75 0 0 0-1.06 0z'/></svg></a></li></ul></nav><div class="sc-61e0ff0f-0 sc-5dd3d1dd-3 hINOnu gEpGzO"></div><div class="sc-960b9084-0 cgDIHL"><nav aria-label="primary"><button type="button" aria-expanded="false" class="Button-sc-1dqy6lx-0 kkzaBr" aria-label="Open menu" data-encore-id="buttonTertiary"><span aria-hidden="true" class="IconWrapper__Wrapper-sc-16usrgb-0 jyHIqB"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="currentcolor" viewBox="0 0 24 24" class="sc-bbfbffd5-0 jYFMfm"><path d="M20.25 6H3.75c-1.5 0-1.5-2 0-2h16.5c1.5 0 1.5 2 0 2Z"></path><path d="M20.25 13H3.75c-1.5 0-1.5-2 0-2h16.5c1.5 0 1.5 2 0 2Z"></path><path d="M20.25 20H3.75c-1.5 0-1.5-2 0-2h16.5c1.5 0 1.5 2 0 2Z"></path></svg></span></button><div role="region" aria-label="0 alert(s) to review" class="sc-854fa934-0 sc-c6c8ec75-0 kMlpAI kUBZjS">0</div><div hidden="" class="sc-9fff6009-0 dPqbzU sc-147783a9-0 ljywHx"><ul role="list" class="TypeList__TypeListElement-sc-1jhixr6-0 hWSKsH sc-e3bdb244-0 daFODJ" data-encore-id="typeList"><li class="sc-daaf2fce-0 fngAVZ"><button aria-expanded="false" data-active="true" class="sc-a671ab29-0 ggRfAl">Documentation<svg data-encore-id="icon" role="img" aria-hidden="true" class="Svg-sc-ytk21e-0 ceft sc-a671ab29-1 iIHRIb" viewBox="0 0 16 16"><path d='M4.97.47a.75.75 0 0 0 0 1.06L11.44 8l-6.47 6.47a.75.75 0 1 0 1.06 1.06L13.56 8 6.03.47a.75.75 0 0 0-1.06 0z'/></svg></button><div hidden="" class="sc-9fff6009-0 dPqbzU sc-147783a9-0 ljywHx"><button aria-label="Go back to main navigation" class="sc-1a8d3606-0 dKipnq sc-a8ce54c5-0 jzFsff"><svg data-encore-id="icon" role="img" aria-hidden="true" viewBox="0 0 16 16" class="Svg-sc-ytk21e-0 ceft"><path d='M11.03.47a.75.75 0 0 1 0 1.06L4.56 8l6.47 6.47a.75.75 0 1 1-1.06 1.06L2.44 8 9.97.47a.75.75 0 0 1 1.06 0z'/></svg><span data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 huwcwr">Documentation</span></button><span class="Type__TypeElement-sc-goli3j-0 eyOwjh sc-45697e4e-0 yjgPF" data-encore-id="type">Products</span><ul role="list" class="TypeList__TypeListElement-sc-1jhixr6-0 hWSKsH sc-ca6f2bb9-0 kRyiQK" data-encore-id="typeList"><li><a class="sc-57f92064-0 fZekVo" href="/documentation/web-api"><span><svg data-encore-id="icon" role="img" aria-hidden="true" class="Svg-sc-ytk21e-0 dcaYNJ"><defs><clipPath id=":Ra5aclm6:"><path d="M 0 0 L 16 0 L 16 16 L 8 16 L 0 8 Z"></path></clipPath><clipPath id=":Ra5aclm6H1:"><rect width="16" height="16" rx="3.2"></rect></clipPath></defs><g clip-path="url(#:Ra5aclm6:)"><rect width="16" height="16" rx="3.2" fill="#6900BA"></rect></g><g clip-path="url(#:Ra5aclm6H1:)"><circle cx="0" cy="16" r="9.6" fill="#CDF564"></circle></g></svg>Web API</span><svg data-encore-id="icon" role="img" aria-hidden="true" class="Svg-sc-ytk21e-0 ceft sc-57f92064-1 bfMHgv" viewBox="0 0 16 16"><path d='M4.97.47a.75.75 0 0 0 0 1.06L11.44 8l-6.47 6.47a.75.75 0 1 0 1.06 1.06L13.56 8 6.03.47a.75.75 0 0 0-1.06 0z'/></svg></a></li><li><a class="sc-57f92064-0 fZekVo" href="/documentation/web-playback-sdk"><span><svg data-encore-id="icon" role="img" aria-hidden="true" class="Svg-sc-ytk21e-0 dcaYNJ"><defs><clipPath id=":Ra9aclm6:"><path d="M 0 0 L 16 0 L 16 16 L 8 16 L 0 8 Z"></path></clipPath><clipPath id=":Ra9aclm6H1:"><rect width="16" height="16" rx="3.2"></rect></clipPath></defs><g clip-path="url(#:Ra9aclm6:)"><rect width="16" height="16" rx="3.2" fill="#4100F5"></rect></g><g clip-path="url(#:Ra9aclm6H1:)"><circle cx="0" cy="16" r="9.6" fill="#F573A0"></circle></g></svg>Web Playback SDK</span><svg data-encore-id="icon" role="img" aria-hidden="true" class="Svg-sc-ytk21e-0 ceft sc-57f92064-1 bfMHgv" viewBox="0 0 16 16"><path d='M4.97.47a.75.75 0 0 0 0 1.06L11.44 8l-6.47 6.47a.75.75 0 1 0 1.06 1.06L13.56 8 6.03.47a.75.75 0 0 0-1.06 0z'/></svg></a></li><li><a class="sc-57f92064-0 fZekVo" href="/documentation/ads-api"><span><svg data-encore-id="icon" role="img" aria-hidden="true" class="Svg-sc-ytk21e-0 dcaYNJ"><defs><clipPath id=":Radaclm6:"><path d="M 0 0 L 16 0 L 16 16 L 8 16 L 0 8 Z"></path></clipPath><clipPath id=":Radaclm6H1:"><rect width="16" height="16" rx="3.2"></rect></clipPath></defs><g clip-path="url(#:Radaclm6:)"><rect width="16" height="16" rx="3.2" fill="#9691FF"></rect></g><g clip-path="url(#:Radaclm6H1:)"><circle cx="0" cy="16" r="9.6" fill="#9BF0E1"></circle></g></svg>Ads API</span><svg data-encore-id="icon" role="img" aria-hidden="true" class="Svg-sc-ytk21e-0 ceft sc-57f92064-1 bfMHgv" viewBox="0 0 16 16"><path d='M4.97.47a.75.75 0 0 0 0 1.06L11.44 8l-6.47 6.47a.75.75 0 1 0 1.06 1.06L13.56 8 6.03.47a.75.75 0 0 0-1.06 0z'/></svg></a></li><li><a class="sc-57f92064-0 fZekVo" href="/documentation/ios"><span><svg data-encore-id="icon" role="img" aria-hidden="true" class="Svg-sc-ytk21e-0 dcaYNJ"><defs><clipPath id=":Rahaclm6:"><path d="M 0 0 L 16 0 L 16 16 L 8 16 L 0 8 Z"></path></clipPath><clipPath id=":Rahaclm6H1:"><rect width="16" height="16" rx="3.2"></rect></clipPath></defs><g clip-path="url(#:Rahaclm6:)"><rect width="16" height="16" rx="3.2" fill="#509BF5"></rect></g><g clip-path="url(#:Rahaclm6H1:)"><circle cx="0" cy="16" r="9.6" fill="#FAE62D"></circle></g></svg>iOS</span><svg data-encore-id="icon" role="img" aria-hidden="true" class="Svg-sc-ytk21e-0 ceft sc-57f92064-1 bfMHgv" viewBox="0 0 16 16"><path d='M4.97.47a.75.75 0 0 0 0 1.06L11.44 8l-6.47 6.47a.75.75 0 1 0 1.06 1.06L13.56 8 6.03.47a.75.75 0 0 0-1.06 0z'/></svg></a></li><li><a class="sc-57f92064-0 fZekVo" href="/documentation/android"><span><svg data-encore-id="icon" role="img" aria-hidden="true" class="Svg-sc-ytk21e-0 dcaYNJ"><defs><clipPath id=":Ralaclm6:"><path d="M 0 0 L 16 0 L 16 16 L 8 16 L 0 8 Z"></path></clipPath><clipPath id=":Ralaclm6H1:"><rect width="16" height="16" rx="3.2"></rect></clipPath></defs><g clip-path="url(#:Ralaclm6:)"><rect width="16" height="16" rx="3.2" fill="#FFCDD2"></rect></g><g clip-path="url(#:Ralaclm6H1:)"><circle cx="0" cy="16" r="9.6" fill="#0A59B8"></circle></g></svg>Android</span><svg data-encore-id="icon" role="img" aria-hidden="true" class="Svg-sc-ytk21e-0 ceft sc-57f92064-1 bfMHgv" viewBox="0 0 16 16"><path d='M4.97.47a.75.75 0 0 0 0 1.06L11.44 8l-6.47 6.47a.75.75 0 1 0 1.06 1.06L13.56 8 6.03.47a.75.75 0 0 0-1.06 0z'/></svg></a></li><li><a class="sc-57f92064-0 fZekVo" href="/documentation/embeds"><span><svg data-encore-id="icon" role="img" aria-hidden="true" class="Svg-sc-ytk21e-0 dcaYNJ"><defs><clipPath id=":Rapaclm6:"><path d="M 0 0 L 16 0 L 16 16 L 8 16 L 0 8 Z"></path></clipPath><clipPath id=":Rapaclm6H1:"><rect width="16" height="16" rx="3.2"></rect></clipPath></defs><g clip-path="url(#:Rapaclm6:)"><rect width="16" height="16" rx="3.2" fill="#705378"></rect></g><g clip-path="url(#:Rapaclm6H1:)"><circle cx="0" cy="16" r="9.6" fill="#FF6437"></circle></g></svg>Embeds</span><svg data-encore-id="icon" role="img" aria-hidden="true" class="Svg-sc-ytk21e-0 ceft sc-57f92064-1 bfMHgv" viewBox="0 0 16 16"><path d='M4.97.47a.75.75 0 0 0 0 1.06L11.44 8l-6.47 6.47a.75.75 0 1 0 1.06 1.06L13.56 8 6.03.47a.75.75 0 0 0-1.06 0z'/></svg></a></li><li><a class="sc-57f92064-0 fZekVo" href="/documentation/commercial-hardware"><span><svg data-encore-id="icon" role="img" aria-hidden="true" class="Svg-sc-ytk21e-0 dcaYNJ"><defs><clipPath id=":Rataclm6:"><path d="M 0 0 L 16 0 L 16 16 L 8 16 L 0 8 Z"></path></clipPath><clipPath id=":Rataclm6H1:"><rect width="16" height="16" rx="3.2"></rect></clipPath></defs><g clip-path="url(#:Rataclm6:)"><rect width="16" height="16" rx="3.2" fill="#27856A"></rect></g><g clip-path="url(#:Rataclm6H1:)"><circle cx="0" cy="16" r="9.6" fill="#C8E0FC"></circle></g></svg>Commercial Hardware</span><svg data-encore-id="icon" role="img" aria-hidden="true" class="Svg-sc-ytk21e-0 ceft sc-57f92064-1 bfMHgv" viewBox="0 0 16 16"><path d='M4.97.47a.75.75 0 0 0 0 1.06L11.44 8l-6.47 6.47a.75.75 0 1 0 1.06 1.06L13.56 8 6.03.47a.75.75 0 0 0-1.06 0z'/></svg></a></li><li><a class="sc-57f92064-0 fZekVo" href="/documentation/open-access"><span><svg data-encore-id="icon" role="img" aria-hidden="true" class="Svg-sc-ytk21e-0 dcaYNJ"><defs><clipPath id=":Rb1aclm6:"><path d="M 0 0 L 16 0 L 16 16 L 8 16 L 0 8 Z"></path></clipPath><clipPath id=":Rb1aclm6H1:"><rect width="16" height="16" rx="3.2"></rect></clipPath></defs><g clip-path="url(#:Rb1aclm6:)"><rect width="16" height="16" rx="3.2" fill="#213261"></rect></g><g clip-path="url(#:Rb1aclm6H1:)"><circle cx="0" cy="16" r="9.6" fill="#D8A3FF"></circle></g></svg>Open Access</span><svg data-encore-id="icon" role="img" aria-hidden="true" class="Svg-sc-ytk21e-0 ceft sc-57f92064-1 bfMHgv" viewBox="0 0 16 16"><path d='M4.97.47a.75.75 0 0 0 0 1.06L11.44 8l-6.47 6.47a.75.75 0 1 0 1.06 1.06L13.56 8 6.03.47a.75.75 0 0 0-1.06 0z'/></svg></a></li></ul><span class="Type__TypeElement-sc-goli3j-0 eyOwjh sc-45697e4e-0 yjgPF" data-encore-id="type">Guidelines</span><ul role="list" class="TypeList__TypeListElement-sc-1jhixr6-0 hWSKsH sc-ca6f2bb9-0 kRyiQK" data-encore-id="typeList"><li><a class="sc-57f92064-0 fZekVo" href="/documentation/design"><span><svg data-encore-id="icon" role="img" aria-hidden="true" class="Svg-sc-ytk21e-0 dcaYNJ"><defs><clipPath id=":R2maclm6:"><path d="M 0 0 L 16 0 L 16 16 L 8 16 L 0 8 Z"></path></clipPath><clipPath id=":R2maclm6H1:"><circle cx="8" cy="8" r="8"></circle></clipPath></defs><g clip-path="url(#:R2maclm6:)"><circle cx="8" cy="8" r="8" fill="#503750"></circle></g><g clip-path="url(#:R2maclm6H1:)"><circle cx="0" cy="16" r="9.6" fill="#F573A0"></circle></g></svg>Design</span></a></li><li><a class="sc-57f92064-0 fZekVo" href="/documentation/accessibility"><span><svg data-encore-id="icon" role="img" aria-hidden="true" class="Svg-sc-ytk21e-0 dcaYNJ"><defs><clipPath id=":R2qaclm6:"><path d="M 0 0 L 16 0 L 16 16 L 8 16 L 0 8 Z"></path></clipPath><clipPath id=":R2qaclm6H1:"><circle cx="8" cy="8" r="8"></circle></clipPath></defs><g clip-path="url(#:R2qaclm6:)"><circle cx="8" cy="8" r="8" fill="#1D006C"></circle></g><g clip-path="url(#:R2qaclm6H1:)"><circle cx="0" cy="16" r="9.6" fill="#FFAF45"></circle></g></svg>Accessibility</span></a></li><li><a class="sc-57f92064-0 fZekVo" href="/terms"><span><svg data-encore-id="icon" role="img" aria-hidden="true" class="Svg-sc-ytk21e-0 dcaYNJ"><defs><clipPath id=":R2uaclm6:"><path d="M 0 0 L 16 0 L 16 16 L 8 16 L 0 8 Z"></path></clipPath><clipPath id=":R2uaclm6H1:"><circle cx="8" cy="8" r="8"></circle></clipPath></defs><g clip-path="url(#:R2uaclm6:)"><circle cx="8" cy="8" r="8" fill="#9C78FF"></circle></g><g clip-path="url(#:R2uaclm6H1:)"><circle cx="0" cy="16" r="9.6" fill="#FFC864"></circle></g></svg>Legal</span><svg data-encore-id="icon" role="img" aria-hidden="true" class="Svg-sc-ytk21e-0 ceft sc-57f92064-1 bfMHgv" viewBox="0 0 16 16"><path d='M4.97.47a.75.75 0 0 0 0 1.06L11.44 8l-6.47 6.47a.75.75 0 1 0 1.06 1.06L13.56 8 6.03.47a.75.75 0 0 0-1.06 0z'/></svg></a></li></ul></div></li><li class="sc-daaf2fce-0 fngAVZ"><a class="sc-a671ab29-0 ggRfAl" href="/community">Community<svg data-encore-id="icon" role="img" aria-hidden="true" class="Svg-sc-ytk21e-0 ceft sc-a671ab29-1 iIHRIb" viewBox="0 0 16 16"><path d='M4.97.47a.75.75 0 0 0 0 1.06L11.44 8l-6.47 6.47a.75.75 0 1 0 1.06 1.06L13.56 8 6.03.47a.75.75 0 0 0-1.06 0z'/></svg></a></li></ul></div></nav></div></header><div class="sc-7ead898e-0 AXGli"><nav aria-labelledby="side-nav-header" class="sc-8e747c9e-1 esveKX"><div class="sc-8e747c9e-2 cyDyUk"><p id="side-nav-header" data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 jFxTq"><span class="sc-8e747c9e-0 hQAoDN"><svg data-encore-id="icon" role="img" aria-hidden="true" class="Svg-sc-ytk21e-0 dcaYNJ"><defs><clipPath id=":Rlaq66:"><path d="M 0 0 L 16 0 L 16 16 L 8 16 L 0 8 Z"></path></clipPath><clipPath id=":Rlaq66H1:"><rect width="16" height="16" rx="3.2"></rect></clipPath></defs><g clip-path="url(#:Rlaq66:)"><rect width="16" height="16" rx="3.2" fill="#9691FF"></rect></g><g clip-path="url(#:Rlaq66H1:)"><circle cx="0" cy="16" r="9.6" fill="#9BF0E1"></circle></g></svg>Ads API</span></p></div><div><ul role="list" class="TypeList__TypeListElement-sc-1jhixr6-0 hWSKsH sc-33f1116f-0 kVWHyn" data-encore-id="typeList"><li><button class="sc-226e2e15-0 cKvXqF sc-5567915-0 ifTmbP"><span data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 kqItdM">Introduction</span><svg data-encore-id="icon" role="img" aria-hidden="true" viewBox="0 0 16 16" class="Svg-sc-ytk21e-0 ceft"><path d='M4.97.47a.75.75 0 0 0 0 1.06L11.44 8l-6.47 6.47a.75.75 0 1 0 1.06 1.06L13.56 8 6.03.47a.75.75 0 0 0-1.06 0z'/></svg></button><button aria-expanded="true" class="sc-71f1783f-0 jaqnEm sc-5567915-1 jPjXCP" aria-label="Introduction menu"><svg data-encore-id="icon" role="img" aria-hidden="true" viewBox="0 0 16 16" class="Svg-sc-ytk21e-0 eGOOvu"><path d='M3 1.713a.7.7 0 0 1 1.05-.607l10.89 6.288a.7.7 0 0 1 0 1.212L4.05 14.894A.7.7 0 0 1 3 14.288V1.713z'/></svg></button><a class="Link-sc-k8gsk-0 buKKye sc-5567915-3 jjRUzu" data-encore-id="textLink" href="/documentation/ads-api"><span data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 kqItdM">Introduction</span></a><ul class="sc-9fff6009-0 dPqbzU sc-3b882ab6-0 gDQowf"><button aria-label="Go back to " class="sc-1a8d3606-0 dKipnq sc-5567915-2 bCWGgN"><svg data-encore-id="icon" role="img" aria-hidden="true" viewBox="0 0 16 16" class="Svg-sc-ytk21e-0 ceft"><path d='M11.03.47a.75.75 0 0 1 0 1.06L4.56 8l6.47 6.47a.75.75 0 1 1-1.06 1.06L2.44 8 9.97.47a.75.75 0 0 1 1.06 0z'/></svg><span data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 huwcwr">Introduction</span></button><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api#about"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>About</a></li><li class="sc-bad2eae7-0 kRdrPO"><ul class="sc-9fff6009-0 dPqbzU sc-3b882ab6-0 gDQowf"><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api#next-steps"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Next Steps</a></li><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api#support"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Support</a></li><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api#subscribe-to-newsletter"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Subscribe to Newsletter</a></li></ul></li><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api#api-design"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>API Design</a></li><li class="sc-bad2eae7-0 kRdrPO"><ul class="sc-9fff6009-0 dPqbzU sc-3b882ab6-0 gDQowf"><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api#rate-limiting"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Rate Limiting</a></li><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api#breaking-v-non-breaking-changes-policy"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Breaking v. Non-Breaking Changes Policy</a></li><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api#versioning"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Versioning</a></li><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api#time-format"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Time format</a></li><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api#pagination"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Pagination</a></li></ul></li><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api#release-notes"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Release Notes</a></li></ul></li><li><button class="sc-226e2e15-0 cKvXqF sc-5567915-0 ifTmbP"><span data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 kqItdM">Quickstart</span><svg data-encore-id="icon" role="img" aria-hidden="true" viewBox="0 0 16 16" class="Svg-sc-ytk21e-0 ceft"><path d='M4.97.47a.75.75 0 0 0 0 1.06L11.44 8l-6.47 6.47a.75.75 0 1 0 1.06 1.06L13.56 8 6.03.47a.75.75 0 0 0-1.06 0z'/></svg></button><button aria-expanded="false" class="sc-71f1783f-0 jaqnEm sc-5567915-1 jPjXCP" aria-label="Quickstart menu"><svg data-encore-id="icon" role="img" aria-hidden="true" viewBox="0 0 16 16" class="Svg-sc-ytk21e-0 eGOOvu"><path d='M3 1.713a.7.7 0 0 1 1.05-.607l10.89 6.288a.7.7 0 0 1 0 1.212L4.05 14.894A.7.7 0 0 1 3 14.288V1.713z'/></svg></button><a class="Link-sc-k8gsk-0 buKKye sc-5567915-3 jjRUzu" data-encore-id="textLink" href="/documentation/ads-api/quick-start"><span data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 kqItdM">Quickstart</span></a><ul hidden="" class="sc-9fff6009-0 dPqbzU sc-3b882ab6-0 gDQowf"><button aria-label="Go back to " class="sc-1a8d3606-0 dKipnq sc-5567915-2 bCWGgN"><svg data-encore-id="icon" role="img" aria-hidden="true" viewBox="0 0 16 16" class="Svg-sc-ytk21e-0 ceft"><path d='M11.03.47a.75.75 0 0 1 0 1.06L4.56 8l6.47 6.47a.75.75 0 1 1-1.06 1.06L2.44 8 9.97.47a.75.75 0 0 1 1.06 0z'/></svg><span data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 huwcwr">Quickstart</span></button><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/quick-start#account-prerequisites"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Account Prerequisites</a></li><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/quick-start#initialize-your-new-ads-api-application"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Initialize your new Ads API application</a></li><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/quick-start#authenticate-your-ad-studio-account"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Authenticate your Ad Studio account</a></li><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/quick-start#using-the-refresh-token"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Using the refresh token</a></li></ul></li><li><button class="sc-226e2e15-0 cKvXqF sc-5567915-0 ifTmbP"><span data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 kqItdM">Guides</span><svg data-encore-id="icon" role="img" aria-hidden="true" viewBox="0 0 16 16" class="Svg-sc-ytk21e-0 ceft"><path d='M4.97.47a.75.75 0 0 0 0 1.06L11.44 8l-6.47 6.47a.75.75 0 1 0 1.06 1.06L13.56 8 6.03.47a.75.75 0 0 0-1.06 0z'/></svg></button><button aria-expanded="false" class="sc-71f1783f-0 jaqnEm sc-5567915-1 jPjXCP" aria-label="Guides menu"><svg data-encore-id="icon" role="img" aria-hidden="true" viewBox="0 0 16 16" class="Svg-sc-ytk21e-0 eGOOvu"><path d='M3 1.713a.7.7 0 0 1 1.05-.607l10.89 6.288a.7.7 0 0 1 0 1.212L4.05 14.894A.7.7 0 0 1 3 14.288V1.713z'/></svg></button><a class="Link-sc-k8gsk-0 buKKye sc-5567915-3 jjRUzu" data-encore-id="textLink" href="/documentation/ads-api/guides"><span data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 kqItdM">Guides</span></a><ul hidden="" class="sc-9fff6009-0 dPqbzU sc-3b882ab6-0 gDQowf"><button aria-label="Go back to " class="sc-1a8d3606-0 dKipnq sc-5567915-2 bCWGgN"><svg data-encore-id="icon" role="img" aria-hidden="true" viewBox="0 0 16 16" class="Svg-sc-ytk21e-0 ceft"><path d='M11.03.47a.75.75 0 0 1 0 1.06L4.56 8l6.47 6.47a.75.75 0 1 1-1.06 1.06L2.44 8 9.97.47a.75.75 0 0 1 1.06 0z'/></svg><span data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 huwcwr">Guides</span></button><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/guides#object-hierarchy"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Object hierarchy</a></li><li class="sc-bad2eae7-0 kRdrPO"><ul class="sc-9fff6009-0 dPqbzU sc-3b882ab6-0 gDQowf"><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/guides#ad-accounts"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Ad Accounts</a></li><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/guides#advertisers"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Advertisers</a></li><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/guides#campaigns"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Campaigns</a></li><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/guides#ad-sets"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Ad Sets</a></li><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/guides#ads"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Ads</a></li><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/guides#assets"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Assets</a></li></ul></li><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/guides#campaign-management"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Campaign Management</a></li><li class="sc-bad2eae7-0 kRdrPO"><ul class="sc-9fff6009-0 dPqbzU sc-3b882ab6-0 gDQowf"><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/guides#overview"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Overview</a></li><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/guides#eligibility-criteria"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Eligibility Criteria</a></li><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/guides#differences-from-the-ui"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Differences from the UI</a></li><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/guides#build-a-campaign"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Build a Campaign</a></li></ul></li><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/guides#reporting"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Reporting</a></li><li class="sc-bad2eae7-0 kRdrPO"><ul class="sc-9fff6009-0 dPqbzU sc-3b882ab6-0 gDQowf"><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/guides#overview-1"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Overview</a></li><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/guides#eligibility-criteria-1"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Eligibility Criteria</a></li><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/guides#differences-from-the-ui-reporting"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Differences from the UI (Reporting)</a></li></ul></li><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/guides#metrics-glossary"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Metrics Glossary</a></li><li class="sc-bad2eae7-0 kRdrPO"><ul class="sc-9fff6009-0 dPqbzU sc-3b882ab6-0 gDQowf"><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/guides#campaign-performance-metrics"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Campaign Performance Metrics</a></li><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/guides#streaming-conversion-metrics"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Streaming Conversion Metrics</a></li><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/guides#pixel-metrics"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Pixel Metrics</a></li><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/guides#app-conversion-metrics"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>App Conversion Metrics</a></li></ul></li></ul></li></ul><span class="Type__TypeElement-sc-goli3j-0 eyOwjh sc-45697e4e-0 yjgPF" data-encore-id="type">Reference</span><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/reference/v2.0/info"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>General info</a></li><ul role="list" class="TypeList__TypeListElement-sc-1jhixr6-0 hWSKsH sc-33f1116f-0 kVWHyn" data-encore-id="typeList"><li><button class="sc-226e2e15-0 cKvXqF sc-5567915-0 ifTmbP"><span data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 kqItdM">ad-accounts</span><svg data-encore-id="icon" role="img" aria-hidden="true" viewBox="0 0 16 16" class="Svg-sc-ytk21e-0 ceft"><path d='M4.97.47a.75.75 0 0 0 0 1.06L11.44 8l-6.47 6.47a.75.75 0 1 0 1.06 1.06L13.56 8 6.03.47a.75.75 0 0 0-1.06 0z'/></svg></button><button aria-expanded="false" class="sc-71f1783f-0 jaqnEm sc-5567915-1 jPjXCP" aria-label="ad-accounts menu"><svg data-encore-id="icon" role="img" aria-hidden="true" viewBox="0 0 16 16" class="Svg-sc-ytk21e-0 eGOOvu"><path d='M3 1.713a.7.7 0 0 1 1.05-.607l10.89 6.288a.7.7 0 0 1 0 1.212L4.05 14.894A.7.7 0 0 1 3 14.288V1.713z'/></svg><span data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 kqItdM">ad-accounts</span></button><ul hidden="" class="sc-9fff6009-0 dPqbzU sc-3b882ab6-0 gDQowf"><button aria-label="Go back to " class="sc-1a8d3606-0 dKipnq sc-5567915-2 bCWGgN"><svg data-encore-id="icon" role="img" aria-hidden="true" viewBox="0 0 16 16" class="Svg-sc-ytk21e-0 ceft"><path d='M11.03.47a.75.75 0 0 1 0 1.06L4.56 8l6.47 6.47a.75.75 0 1 1-1.06 1.06L2.44 8 9.97.47a.75.75 0 0 1 1.06 0z'/></svg><span data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 huwcwr">ad-accounts</span></button><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/reference/v2.0/getAdAccounts"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Get Ad Accounts for Current User</a></li><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/reference/v2.0/getAdAccount"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Get an Ad Account by ID</a></li></ul></li><li><button class="sc-226e2e15-0 cKvXqF sc-5567915-0 ifTmbP"><span data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 kqItdM">ad-categories</span><svg data-encore-id="icon" role="img" aria-hidden="true" viewBox="0 0 16 16" class="Svg-sc-ytk21e-0 ceft"><path d='M4.97.47a.75.75 0 0 0 0 1.06L11.44 8l-6.47 6.47a.75.75 0 1 0 1.06 1.06L13.56 8 6.03.47a.75.75 0 0 0-1.06 0z'/></svg></button><button aria-expanded="false" class="sc-71f1783f-0 jaqnEm sc-5567915-1 jPjXCP" aria-label="ad-categories menu"><svg data-encore-id="icon" role="img" aria-hidden="true" viewBox="0 0 16 16" class="Svg-sc-ytk21e-0 eGOOvu"><path d='M3 1.713a.7.7 0 0 1 1.05-.607l10.89 6.288a.7.7 0 0 1 0 1.212L4.05 14.894A.7.7 0 0 1 3 14.288V1.713z'/></svg><span data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 kqItdM">ad-categories</span></button><ul hidden="" class="sc-9fff6009-0 dPqbzU sc-3b882ab6-0 gDQowf"><button aria-label="Go back to " class="sc-1a8d3606-0 dKipnq sc-5567915-2 bCWGgN"><svg data-encore-id="icon" role="img" aria-hidden="true" viewBox="0 0 16 16" class="Svg-sc-ytk21e-0 ceft"><path d='M11.03.47a.75.75 0 0 1 0 1.06L4.56 8l6.47 6.47a.75.75 0 1 1-1.06 1.06L2.44 8 9.97.47a.75.75 0 0 1 1.06 0z'/></svg><span data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 huwcwr">ad-categories</span></button><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/reference/v2.0/getAdCategories"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Get Ad Categories</a></li></ul></li><li><button class="sc-226e2e15-0 cKvXqF sc-5567915-0 ifTmbP"><span data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 kqItdM">ad-sets</span><svg data-encore-id="icon" role="img" aria-hidden="true" viewBox="0 0 16 16" class="Svg-sc-ytk21e-0 ceft"><path d='M4.97.47a.75.75 0 0 0 0 1.06L11.44 8l-6.47 6.47a.75.75 0 1 0 1.06 1.06L13.56 8 6.03.47a.75.75 0 0 0-1.06 0z'/></svg></button><button aria-expanded="false" class="sc-71f1783f-0 jaqnEm sc-5567915-1 jPjXCP" aria-label="ad-sets menu"><svg data-encore-id="icon" role="img" aria-hidden="true" viewBox="0 0 16 16" class="Svg-sc-ytk21e-0 eGOOvu"><path d='M3 1.713a.7.7 0 0 1 1.05-.607l10.89 6.288a.7.7 0 0 1 0 1.212L4.05 14.894A.7.7 0 0 1 3 14.288V1.713z'/></svg><span data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 kqItdM">ad-sets</span></button><ul hidden="" class="sc-9fff6009-0 dPqbzU sc-3b882ab6-0 gDQowf"><button aria-label="Go back to " class="sc-1a8d3606-0 dKipnq sc-5567915-2 bCWGgN"><svg data-encore-id="icon" role="img" aria-hidden="true" viewBox="0 0 16 16" class="Svg-sc-ytk21e-0 ceft"><path d='M11.03.47a.75.75 0 0 1 0 1.06L4.56 8l6.47 6.47a.75.75 0 1 1-1.06 1.06L2.44 8 9.97.47a.75.75 0 0 1 1.06 0z'/></svg><span data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 huwcwr">ad-sets</span></button><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/reference/v2.0/getAdSetById"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Get Ad Set by ID</a></li><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/reference/v2.0/updateAdSet"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Update Ad Set</a></li><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/reference/v2.0/getAdSetsByAdAccountId"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Get Ad Sets by Ad Account ID</a></li><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/reference/v2.0/createAdSet"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Create an Ad Set</a></li></ul></li><li><button class="sc-226e2e15-0 cKvXqF sc-5567915-0 ifTmbP"><span data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 kqItdM">ads</span><svg data-encore-id="icon" role="img" aria-hidden="true" viewBox="0 0 16 16" class="Svg-sc-ytk21e-0 ceft"><path d='M4.97.47a.75.75 0 0 0 0 1.06L11.44 8l-6.47 6.47a.75.75 0 1 0 1.06 1.06L13.56 8 6.03.47a.75.75 0 0 0-1.06 0z'/></svg></button><button aria-expanded="false" class="sc-71f1783f-0 jaqnEm sc-5567915-1 jPjXCP" aria-label="ads menu"><svg data-encore-id="icon" role="img" aria-hidden="true" viewBox="0 0 16 16" class="Svg-sc-ytk21e-0 eGOOvu"><path d='M3 1.713a.7.7 0 0 1 1.05-.607l10.89 6.288a.7.7 0 0 1 0 1.212L4.05 14.894A.7.7 0 0 1 3 14.288V1.713z'/></svg><span data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 kqItdM">ads</span></button><ul hidden="" class="sc-9fff6009-0 dPqbzU sc-3b882ab6-0 gDQowf"><button aria-label="Go back to " class="sc-1a8d3606-0 dKipnq sc-5567915-2 bCWGgN"><svg data-encore-id="icon" role="img" aria-hidden="true" viewBox="0 0 16 16" class="Svg-sc-ytk21e-0 ceft"><path d='M11.03.47a.75.75 0 0 1 0 1.06L4.56 8l6.47 6.47a.75.75 0 1 1-1.06 1.06L2.44 8 9.97.47a.75.75 0 0 1 1.06 0z'/></svg><span data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 huwcwr">ads</span></button><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/reference/v2.0/getAds"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Get Ads by Ad Account ID</a></li><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/reference/v2.0/createAd"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Create an Ad</a></li><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/reference/v2.0/getAd"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Get Ad by ID</a></li><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/reference/v2.0/updateAd"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Update an Ad</a></li></ul></li><li><button class="sc-226e2e15-0 cKvXqF sc-5567915-0 ifTmbP"><span data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 kqItdM">assets</span><svg data-encore-id="icon" role="img" aria-hidden="true" viewBox="0 0 16 16" class="Svg-sc-ytk21e-0 ceft"><path d='M4.97.47a.75.75 0 0 0 0 1.06L11.44 8l-6.47 6.47a.75.75 0 1 0 1.06 1.06L13.56 8 6.03.47a.75.75 0 0 0-1.06 0z'/></svg></button><button aria-expanded="false" class="sc-71f1783f-0 jaqnEm sc-5567915-1 jPjXCP" aria-label="assets menu"><svg data-encore-id="icon" role="img" aria-hidden="true" viewBox="0 0 16 16" class="Svg-sc-ytk21e-0 eGOOvu"><path d='M3 1.713a.7.7 0 0 1 1.05-.607l10.89 6.288a.7.7 0 0 1 0 1.212L4.05 14.894A.7.7 0 0 1 3 14.288V1.713z'/></svg><span data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 kqItdM">assets</span></button><ul hidden="" class="sc-9fff6009-0 dPqbzU sc-3b882ab6-0 gDQowf"><button aria-label="Go back to " class="sc-1a8d3606-0 dKipnq sc-5567915-2 bCWGgN"><svg data-encore-id="icon" role="img" aria-hidden="true" viewBox="0 0 16 16" class="Svg-sc-ytk21e-0 ceft"><path d='M11.03.47a.75.75 0 0 1 0 1.06L4.56 8l6.47 6.47a.75.75 0 1 1-1.06 1.06L2.44 8 9.97.47a.75.75 0 0 1 1.06 0z'/></svg><span data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 huwcwr">assets</span></button><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/reference/v2.0/getAssetsByTypeAndAdAccount"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Get Assets by Ad Account</a></li><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/reference/v2.0/createAsset"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Create Asset</a></li><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/reference/v2.0/getAsset"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Get Asset by ID</a></li><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/reference/v2.0/updateAsset"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Update Asset</a></li><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/reference/v2.0/uploadAsset"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Upload Asset</a></li><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/reference/v2.0/startUploadChunkedAsset"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Start Upload Chunked Asset</a></li><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/reference/v2.0/transferChunkedAsset"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Transfer Chunked Asset</a></li><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/reference/v2.0/completeUploadChunkedAsset"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Complete Upload Chunked Asset</a></li></ul></li><li><button class="sc-226e2e15-0 cKvXqF sc-5567915-0 ifTmbP"><span data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 kqItdM">campaigns</span><svg data-encore-id="icon" role="img" aria-hidden="true" viewBox="0 0 16 16" class="Svg-sc-ytk21e-0 ceft"><path d='M4.97.47a.75.75 0 0 0 0 1.06L11.44 8l-6.47 6.47a.75.75 0 1 0 1.06 1.06L13.56 8 6.03.47a.75.75 0 0 0-1.06 0z'/></svg></button><button aria-expanded="false" class="sc-71f1783f-0 jaqnEm sc-5567915-1 jPjXCP" aria-label="campaigns menu"><svg data-encore-id="icon" role="img" aria-hidden="true" viewBox="0 0 16 16" class="Svg-sc-ytk21e-0 eGOOvu"><path d='M3 1.713a.7.7 0 0 1 1.05-.607l10.89 6.288a.7.7 0 0 1 0 1.212L4.05 14.894A.7.7 0 0 1 3 14.288V1.713z'/></svg><span data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 kqItdM">campaigns</span></button><ul hidden="" class="sc-9fff6009-0 dPqbzU sc-3b882ab6-0 gDQowf"><button aria-label="Go back to " class="sc-1a8d3606-0 dKipnq sc-5567915-2 bCWGgN"><svg data-encore-id="icon" role="img" aria-hidden="true" viewBox="0 0 16 16" class="Svg-sc-ytk21e-0 ceft"><path d='M11.03.47a.75.75 0 0 1 0 1.06L4.56 8l6.47 6.47a.75.75 0 1 1-1.06 1.06L2.44 8 9.97.47a.75.75 0 0 1 1.06 0z'/></svg><span data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 huwcwr">campaigns</span></button><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/reference/v2.0/getCampaigns"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Get Campaigns by Ad Account ID</a></li><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/reference/v2.0/createCampaign"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Create a Campaign</a></li><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/reference/v2.0/getCampaign"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Get Campaign by ID</a></li><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/reference/v2.0/updateCampaign"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Update a Campaign</a></li></ul></li><li><button class="sc-226e2e15-0 cKvXqF sc-5567915-0 ifTmbP"><span data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 kqItdM">estimates</span><svg data-encore-id="icon" role="img" aria-hidden="true" viewBox="0 0 16 16" class="Svg-sc-ytk21e-0 ceft"><path d='M4.97.47a.75.75 0 0 0 0 1.06L11.44 8l-6.47 6.47a.75.75 0 1 0 1.06 1.06L13.56 8 6.03.47a.75.75 0 0 0-1.06 0z'/></svg></button><button aria-expanded="false" class="sc-71f1783f-0 jaqnEm sc-5567915-1 jPjXCP" aria-label="estimates menu"><svg data-encore-id="icon" role="img" aria-hidden="true" viewBox="0 0 16 16" class="Svg-sc-ytk21e-0 eGOOvu"><path d='M3 1.713a.7.7 0 0 1 1.05-.607l10.89 6.288a.7.7 0 0 1 0 1.212L4.05 14.894A.7.7 0 0 1 3 14.288V1.713z'/></svg><span data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 kqItdM">estimates</span></button><ul hidden="" class="sc-9fff6009-0 dPqbzU sc-3b882ab6-0 gDQowf"><button aria-label="Go back to " class="sc-1a8d3606-0 dKipnq sc-5567915-2 bCWGgN"><svg data-encore-id="icon" role="img" aria-hidden="true" viewBox="0 0 16 16" class="Svg-sc-ytk21e-0 ceft"><path d='M11.03.47a.75.75 0 0 1 0 1.06L4.56 8l6.47 6.47a.75.75 0 1 1-1.06 1.06L2.44 8 9.97.47a.75.75 0 0 1 1.06 0z'/></svg><span data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 huwcwr">estimates</span></button><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/reference/v2.0/estimateAudience"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Estimate audience</a></li><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/reference/v2.0/estimateBid"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Estimate bid</a></li></ul></li><li><button class="sc-226e2e15-0 cKvXqF sc-5567915-0 ifTmbP"><span data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 kqItdM">podcast-shows</span><svg data-encore-id="icon" role="img" aria-hidden="true" viewBox="0 0 16 16" class="Svg-sc-ytk21e-0 ceft"><path d='M4.97.47a.75.75 0 0 0 0 1.06L11.44 8l-6.47 6.47a.75.75 0 1 0 1.06 1.06L13.56 8 6.03.47a.75.75 0 0 0-1.06 0z'/></svg></button><button aria-expanded="false" class="sc-71f1783f-0 jaqnEm sc-5567915-1 jPjXCP" aria-label="podcast-shows menu"><svg data-encore-id="icon" role="img" aria-hidden="true" viewBox="0 0 16 16" class="Svg-sc-ytk21e-0 eGOOvu"><path d='M3 1.713a.7.7 0 0 1 1.05-.607l10.89 6.288a.7.7 0 0 1 0 1.212L4.05 14.894A.7.7 0 0 1 3 14.288V1.713z'/></svg><span data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 kqItdM">podcast-shows</span></button><ul hidden="" class="sc-9fff6009-0 dPqbzU sc-3b882ab6-0 gDQowf"><button aria-label="Go back to " class="sc-1a8d3606-0 dKipnq sc-5567915-2 bCWGgN"><svg data-encore-id="icon" role="img" aria-hidden="true" viewBox="0 0 16 16" class="Svg-sc-ytk21e-0 ceft"><path d='M11.03.47a.75.75 0 0 1 0 1.06L4.56 8l6.47 6.47a.75.75 0 1 1-1.06 1.06L2.44 8 9.97.47a.75.75 0 0 1 1.06 0z'/></svg><span data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 huwcwr">podcast-shows</span></button><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/reference/v2.0/getPodcastShows"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Get Podcast Shows</a></li></ul></li><li><button class="sc-226e2e15-0 cKvXqF sc-5567915-0 ifTmbP"><span data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 kqItdM">reports</span><svg data-encore-id="icon" role="img" aria-hidden="true" viewBox="0 0 16 16" class="Svg-sc-ytk21e-0 ceft"><path d='M4.97.47a.75.75 0 0 0 0 1.06L11.44 8l-6.47 6.47a.75.75 0 1 0 1.06 1.06L13.56 8 6.03.47a.75.75 0 0 0-1.06 0z'/></svg></button><button aria-expanded="false" class="sc-71f1783f-0 jaqnEm sc-5567915-1 jPjXCP" aria-label="reports menu"><svg data-encore-id="icon" role="img" aria-hidden="true" viewBox="0 0 16 16" class="Svg-sc-ytk21e-0 eGOOvu"><path d='M3 1.713a.7.7 0 0 1 1.05-.607l10.89 6.288a.7.7 0 0 1 0 1.212L4.05 14.894A.7.7 0 0 1 3 14.288V1.713z'/></svg><span data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 kqItdM">reports</span></button><ul hidden="" class="sc-9fff6009-0 dPqbzU sc-3b882ab6-0 gDQowf"><button aria-label="Go back to " class="sc-1a8d3606-0 dKipnq sc-5567915-2 bCWGgN"><svg data-encore-id="icon" role="img" aria-hidden="true" viewBox="0 0 16 16" class="Svg-sc-ytk21e-0 ceft"><path d='M11.03.47a.75.75 0 0 1 0 1.06L4.56 8l6.47 6.47a.75.75 0 1 1-1.06 1.06L2.44 8 9.97.47a.75.75 0 0 1 1.06 0z'/></svg><span data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 huwcwr">reports</span></button><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/reference/v2.0/getAggregateReport"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Get Aggregate Report by Ad Account ID</a></li><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/reference/v2.0/getAudienceInsightReport"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Get Insight Report by Ad Account ID</a></li><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/reference/v2.0/createAsyncReport"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Create a CSV Report Asynchronously</a></li><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/reference/v2.0/getAsyncReport"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Get CSV Report Status by ID</a></li></ul></li><li><button class="sc-226e2e15-0 cKvXqF sc-5567915-0 ifTmbP"><span data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 kqItdM">targets</span><svg data-encore-id="icon" role="img" aria-hidden="true" viewBox="0 0 16 16" class="Svg-sc-ytk21e-0 ceft"><path d='M4.97.47a.75.75 0 0 0 0 1.06L11.44 8l-6.47 6.47a.75.75 0 1 0 1.06 1.06L13.56 8 6.03.47a.75.75 0 0 0-1.06 0z'/></svg></button><button aria-expanded="false" class="sc-71f1783f-0 jaqnEm sc-5567915-1 jPjXCP" aria-label="targets menu"><svg data-encore-id="icon" role="img" aria-hidden="true" viewBox="0 0 16 16" class="Svg-sc-ytk21e-0 eGOOvu"><path d='M3 1.713a.7.7 0 0 1 1.05-.607l10.89 6.288a.7.7 0 0 1 0 1.212L4.05 14.894A.7.7 0 0 1 3 14.288V1.713z'/></svg><span data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 kqItdM">targets</span></button><ul hidden="" class="sc-9fff6009-0 dPqbzU sc-3b882ab6-0 gDQowf"><button aria-label="Go back to " class="sc-1a8d3606-0 dKipnq sc-5567915-2 bCWGgN"><svg data-encore-id="icon" role="img" aria-hidden="true" viewBox="0 0 16 16" class="Svg-sc-ytk21e-0 ceft"><path d='M11.03.47a.75.75 0 0 1 0 1.06L4.56 8l6.47 6.47a.75.75 0 1 1-1.06 1.06L2.44 8 9.97.47a.75.75 0 0 1 1.06 0z'/></svg><span data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 huwcwr">targets</span></button><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/reference/v2.0/getArtistTargets"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Get Artist Targets</a></li><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/reference/v2.0/getGenreTargets"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Get Genre Targets</a></li><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/reference/v2.0/getGeoTargets"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Get Geo Targets</a></li><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/reference/v2.0/getInterestTargets"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Get Interest Targets</a></li><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/reference/v2.0/getLanguageTargets"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Get Language Targets</a></li><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/reference/v2.0/getPlaylistTargets"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Get Playlist Targets</a></li><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/reference/v2.0/getEpisodeTopicTargets"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Get Podcast Episode Topic Targets</a></li><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/reference/v2.0/getSensitiveTopicTargets"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Get Sensitive Topic Targets</a></li></ul></li></ul></div></nav><div class="sc-960b9084-0 cgDIHL"><div hidden="" class="sc-9fff6009-0 dPqbzU"><button aria-label="Go back to Documentation" class="sc-1a8d3606-0 dKipnq"><svg data-encore-id="icon" role="img" aria-hidden="true" viewBox="0 0 16 16" class="Svg-sc-ytk21e-0 ceft"><path d='M11.03.47a.75.75 0 0 1 0 1.06L4.56 8l6.47 6.47a.75.75 0 1 1-1.06 1.06L2.44 8 9.97.47a.75.75 0 0 1 1.06 0z'/></svg><svg data-encore-id="icon" role="img" aria-hidden="true" class="Svg-sc-ytk21e-0 dcaYNJ"><defs><clipPath id=":R9iq66:"><path d="M 0 0 L 16 0 L 16 16 L 8 16 L 0 8 Z"></path></clipPath><clipPath id=":R9iq66H1:"><rect width="16" height="16" rx="3.2"></rect></clipPath></defs><g clip-path="url(#:R9iq66:)"><rect width="16" height="16" rx="3.2" fill="#9691FF"></rect></g><g clip-path="url(#:R9iq66H1:)"><circle cx="0" cy="16" r="9.6" fill="#9BF0E1"></circle></g></svg><span data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 huwcwr">Ads API</span></button><div><ul role="list" class="TypeList__TypeListElement-sc-1jhixr6-0 hWSKsH sc-33f1116f-0 kVWHyn" data-encore-id="typeList"><li><button class="sc-226e2e15-0 cKvXqF sc-5567915-0 ifTmbP"><span data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 kqItdM">Introduction</span><svg data-encore-id="icon" role="img" aria-hidden="true" viewBox="0 0 16 16" class="Svg-sc-ytk21e-0 ceft"><path d='M4.97.47a.75.75 0 0 0 0 1.06L11.44 8l-6.47 6.47a.75.75 0 1 0 1.06 1.06L13.56 8 6.03.47a.75.75 0 0 0-1.06 0z'/></svg></button><button aria-expanded="true" class="sc-71f1783f-0 jaqnEm sc-5567915-1 jPjXCP" aria-label="Introduction menu"><svg data-encore-id="icon" role="img" aria-hidden="true" viewBox="0 0 16 16" class="Svg-sc-ytk21e-0 eGOOvu"><path d='M3 1.713a.7.7 0 0 1 1.05-.607l10.89 6.288a.7.7 0 0 1 0 1.212L4.05 14.894A.7.7 0 0 1 3 14.288V1.713z'/></svg></button><a class="Link-sc-k8gsk-0 buKKye sc-5567915-3 jjRUzu" data-encore-id="textLink" href="/documentation/ads-api"><span data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 kqItdM">Introduction</span></a><ul class="sc-9fff6009-0 dPqbzU sc-3b882ab6-0 gDQowf"><button aria-label="Go back to " class="sc-1a8d3606-0 dKipnq sc-5567915-2 bCWGgN"><svg data-encore-id="icon" role="img" aria-hidden="true" viewBox="0 0 16 16" class="Svg-sc-ytk21e-0 ceft"><path d='M11.03.47a.75.75 0 0 1 0 1.06L4.56 8l6.47 6.47a.75.75 0 1 1-1.06 1.06L2.44 8 9.97.47a.75.75 0 0 1 1.06 0z'/></svg><span data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 huwcwr">Introduction</span></button><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api#about"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>About</a></li><li class="sc-bad2eae7-0 kRdrPO"><ul class="sc-9fff6009-0 dPqbzU sc-3b882ab6-0 gDQowf"><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api#next-steps"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Next Steps</a></li><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api#support"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Support</a></li><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api#subscribe-to-newsletter"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Subscribe to Newsletter</a></li></ul></li><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api#api-design"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>API Design</a></li><li class="sc-bad2eae7-0 kRdrPO"><ul class="sc-9fff6009-0 dPqbzU sc-3b882ab6-0 gDQowf"><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api#rate-limiting"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Rate Limiting</a></li><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api#breaking-v-non-breaking-changes-policy"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Breaking v. Non-Breaking Changes Policy</a></li><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api#versioning"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Versioning</a></li><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api#time-format"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Time format</a></li><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api#pagination"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Pagination</a></li></ul></li><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api#release-notes"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Release Notes</a></li></ul></li><li><button class="sc-226e2e15-0 cKvXqF sc-5567915-0 ifTmbP"><span data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 kqItdM">Quickstart</span><svg data-encore-id="icon" role="img" aria-hidden="true" viewBox="0 0 16 16" class="Svg-sc-ytk21e-0 ceft"><path d='M4.97.47a.75.75 0 0 0 0 1.06L11.44 8l-6.47 6.47a.75.75 0 1 0 1.06 1.06L13.56 8 6.03.47a.75.75 0 0 0-1.06 0z'/></svg></button><button aria-expanded="false" class="sc-71f1783f-0 jaqnEm sc-5567915-1 jPjXCP" aria-label="Quickstart menu"><svg data-encore-id="icon" role="img" aria-hidden="true" viewBox="0 0 16 16" class="Svg-sc-ytk21e-0 eGOOvu"><path d='M3 1.713a.7.7 0 0 1 1.05-.607l10.89 6.288a.7.7 0 0 1 0 1.212L4.05 14.894A.7.7 0 0 1 3 14.288V1.713z'/></svg></button><a class="Link-sc-k8gsk-0 buKKye sc-5567915-3 jjRUzu" data-encore-id="textLink" href="/documentation/ads-api/quick-start"><span data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 kqItdM">Quickstart</span></a><ul hidden="" class="sc-9fff6009-0 dPqbzU sc-3b882ab6-0 gDQowf"><button aria-label="Go back to " class="sc-1a8d3606-0 dKipnq sc-5567915-2 bCWGgN"><svg data-encore-id="icon" role="img" aria-hidden="true" viewBox="0 0 16 16" class="Svg-sc-ytk21e-0 ceft"><path d='M11.03.47a.75.75 0 0 1 0 1.06L4.56 8l6.47 6.47a.75.75 0 1 1-1.06 1.06L2.44 8 9.97.47a.75.75 0 0 1 1.06 0z'/></svg><span data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 huwcwr">Quickstart</span></button><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/quick-start#account-prerequisites"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Account Prerequisites</a></li><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/quick-start#initialize-your-new-ads-api-application"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Initialize your new Ads API application</a></li><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/quick-start#authenticate-your-ad-studio-account"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Authenticate your Ad Studio account</a></li><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/quick-start#using-the-refresh-token"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Using the refresh token</a></li></ul></li><li><button class="sc-226e2e15-0 cKvXqF sc-5567915-0 ifTmbP"><span data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 kqItdM">Guides</span><svg data-encore-id="icon" role="img" aria-hidden="true" viewBox="0 0 16 16" class="Svg-sc-ytk21e-0 ceft"><path d='M4.97.47a.75.75 0 0 0 0 1.06L11.44 8l-6.47 6.47a.75.75 0 1 0 1.06 1.06L13.56 8 6.03.47a.75.75 0 0 0-1.06 0z'/></svg></button><button aria-expanded="false" class="sc-71f1783f-0 jaqnEm sc-5567915-1 jPjXCP" aria-label="Guides menu"><svg data-encore-id="icon" role="img" aria-hidden="true" viewBox="0 0 16 16" class="Svg-sc-ytk21e-0 eGOOvu"><path d='M3 1.713a.7.7 0 0 1 1.05-.607l10.89 6.288a.7.7 0 0 1 0 1.212L4.05 14.894A.7.7 0 0 1 3 14.288V1.713z'/></svg></button><a class="Link-sc-k8gsk-0 buKKye sc-5567915-3 jjRUzu" data-encore-id="textLink" href="/documentation/ads-api/guides"><span data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 kqItdM">Guides</span></a><ul hidden="" class="sc-9fff6009-0 dPqbzU sc-3b882ab6-0 gDQowf"><button aria-label="Go back to " class="sc-1a8d3606-0 dKipnq sc-5567915-2 bCWGgN"><svg data-encore-id="icon" role="img" aria-hidden="true" viewBox="0 0 16 16" class="Svg-sc-ytk21e-0 ceft"><path d='M11.03.47a.75.75 0 0 1 0 1.06L4.56 8l6.47 6.47a.75.75 0 1 1-1.06 1.06L2.44 8 9.97.47a.75.75 0 0 1 1.06 0z'/></svg><span data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 huwcwr">Guides</span></button><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/guides#object-hierarchy"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Object hierarchy</a></li><li class="sc-bad2eae7-0 kRdrPO"><ul class="sc-9fff6009-0 dPqbzU sc-3b882ab6-0 gDQowf"><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/guides#ad-accounts"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Ad Accounts</a></li><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/guides#advertisers"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Advertisers</a></li><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/guides#campaigns"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Campaigns</a></li><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/guides#ad-sets"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Ad Sets</a></li><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/guides#ads"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Ads</a></li><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/guides#assets"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Assets</a></li></ul></li><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/guides#campaign-management"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Campaign Management</a></li><li class="sc-bad2eae7-0 kRdrPO"><ul class="sc-9fff6009-0 dPqbzU sc-3b882ab6-0 gDQowf"><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/guides#overview"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Overview</a></li><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/guides#eligibility-criteria"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Eligibility Criteria</a></li><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/guides#differences-from-the-ui"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Differences from the UI</a></li><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/guides#build-a-campaign"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Build a Campaign</a></li></ul></li><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/guides#reporting"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Reporting</a></li><li class="sc-bad2eae7-0 kRdrPO"><ul class="sc-9fff6009-0 dPqbzU sc-3b882ab6-0 gDQowf"><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/guides#overview-1"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Overview</a></li><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/guides#eligibility-criteria-1"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Eligibility Criteria</a></li><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/guides#differences-from-the-ui-reporting"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Differences from the UI (Reporting)</a></li></ul></li><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/guides#metrics-glossary"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Metrics Glossary</a></li><li class="sc-bad2eae7-0 kRdrPO"><ul class="sc-9fff6009-0 dPqbzU sc-3b882ab6-0 gDQowf"><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/guides#campaign-performance-metrics"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Campaign Performance Metrics</a></li><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/guides#streaming-conversion-metrics"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Streaming Conversion Metrics</a></li><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/guides#pixel-metrics"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Pixel Metrics</a></li><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/guides#app-conversion-metrics"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>App Conversion Metrics</a></li></ul></li></ul></li></ul><span class="Type__TypeElement-sc-goli3j-0 eyOwjh sc-45697e4e-0 yjgPF" data-encore-id="type">Reference</span><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/reference/v2.0/info"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>General info</a></li><ul role="list" class="TypeList__TypeListElement-sc-1jhixr6-0 hWSKsH sc-33f1116f-0 kVWHyn" data-encore-id="typeList"><li><button class="sc-226e2e15-0 cKvXqF sc-5567915-0 ifTmbP"><span data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 kqItdM">ad-accounts</span><svg data-encore-id="icon" role="img" aria-hidden="true" viewBox="0 0 16 16" class="Svg-sc-ytk21e-0 ceft"><path d='M4.97.47a.75.75 0 0 0 0 1.06L11.44 8l-6.47 6.47a.75.75 0 1 0 1.06 1.06L13.56 8 6.03.47a.75.75 0 0 0-1.06 0z'/></svg></button><button aria-expanded="false" class="sc-71f1783f-0 jaqnEm sc-5567915-1 jPjXCP" aria-label="ad-accounts menu"><svg data-encore-id="icon" role="img" aria-hidden="true" viewBox="0 0 16 16" class="Svg-sc-ytk21e-0 eGOOvu"><path d='M3 1.713a.7.7 0 0 1 1.05-.607l10.89 6.288a.7.7 0 0 1 0 1.212L4.05 14.894A.7.7 0 0 1 3 14.288V1.713z'/></svg><span data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 kqItdM">ad-accounts</span></button><ul hidden="" class="sc-9fff6009-0 dPqbzU sc-3b882ab6-0 gDQowf"><button aria-label="Go back to " class="sc-1a8d3606-0 dKipnq sc-5567915-2 bCWGgN"><svg data-encore-id="icon" role="img" aria-hidden="true" viewBox="0 0 16 16" class="Svg-sc-ytk21e-0 ceft"><path d='M11.03.47a.75.75 0 0 1 0 1.06L4.56 8l6.47 6.47a.75.75 0 1 1-1.06 1.06L2.44 8 9.97.47a.75.75 0 0 1 1.06 0z'/></svg><span data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 huwcwr">ad-accounts</span></button><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/reference/v2.0/getAdAccounts"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Get Ad Accounts for Current User</a></li><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/reference/v2.0/getAdAccount"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Get an Ad Account by ID</a></li></ul></li><li><button class="sc-226e2e15-0 cKvXqF sc-5567915-0 ifTmbP"><span data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 kqItdM">ad-categories</span><svg data-encore-id="icon" role="img" aria-hidden="true" viewBox="0 0 16 16" class="Svg-sc-ytk21e-0 ceft"><path d='M4.97.47a.75.75 0 0 0 0 1.06L11.44 8l-6.47 6.47a.75.75 0 1 0 1.06 1.06L13.56 8 6.03.47a.75.75 0 0 0-1.06 0z'/></svg></button><button aria-expanded="false" class="sc-71f1783f-0 jaqnEm sc-5567915-1 jPjXCP" aria-label="ad-categories menu"><svg data-encore-id="icon" role="img" aria-hidden="true" viewBox="0 0 16 16" class="Svg-sc-ytk21e-0 eGOOvu"><path d='M3 1.713a.7.7 0 0 1 1.05-.607l10.89 6.288a.7.7 0 0 1 0 1.212L4.05 14.894A.7.7 0 0 1 3 14.288V1.713z'/></svg><span data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 kqItdM">ad-categories</span></button><ul hidden="" class="sc-9fff6009-0 dPqbzU sc-3b882ab6-0 gDQowf"><button aria-label="Go back to " class="sc-1a8d3606-0 dKipnq sc-5567915-2 bCWGgN"><svg data-encore-id="icon" role="img" aria-hidden="true" viewBox="0 0 16 16" class="Svg-sc-ytk21e-0 ceft"><path d='M11.03.47a.75.75 0 0 1 0 1.06L4.56 8l6.47 6.47a.75.75 0 1 1-1.06 1.06L2.44 8 9.97.47a.75.75 0 0 1 1.06 0z'/></svg><span data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 huwcwr">ad-categories</span></button><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/reference/v2.0/getAdCategories"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Get Ad Categories</a></li></ul></li><li><button class="sc-226e2e15-0 cKvXqF sc-5567915-0 ifTmbP"><span data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 kqItdM">ad-sets</span><svg data-encore-id="icon" role="img" aria-hidden="true" viewBox="0 0 16 16" class="Svg-sc-ytk21e-0 ceft"><path d='M4.97.47a.75.75 0 0 0 0 1.06L11.44 8l-6.47 6.47a.75.75 0 1 0 1.06 1.06L13.56 8 6.03.47a.75.75 0 0 0-1.06 0z'/></svg></button><button aria-expanded="false" class="sc-71f1783f-0 jaqnEm sc-5567915-1 jPjXCP" aria-label="ad-sets menu"><svg data-encore-id="icon" role="img" aria-hidden="true" viewBox="0 0 16 16" class="Svg-sc-ytk21e-0 eGOOvu"><path d='M3 1.713a.7.7 0 0 1 1.05-.607l10.89 6.288a.7.7 0 0 1 0 1.212L4.05 14.894A.7.7 0 0 1 3 14.288V1.713z'/></svg><span data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 kqItdM">ad-sets</span></button><ul hidden="" class="sc-9fff6009-0 dPqbzU sc-3b882ab6-0 gDQowf"><button aria-label="Go back to " class="sc-1a8d3606-0 dKipnq sc-5567915-2 bCWGgN"><svg data-encore-id="icon" role="img" aria-hidden="true" viewBox="0 0 16 16" class="Svg-sc-ytk21e-0 ceft"><path d='M11.03.47a.75.75 0 0 1 0 1.06L4.56 8l6.47 6.47a.75.75 0 1 1-1.06 1.06L2.44 8 9.97.47a.75.75 0 0 1 1.06 0z'/></svg><span data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 huwcwr">ad-sets</span></button><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/reference/v2.0/getAdSetById"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Get Ad Set by ID</a></li><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/reference/v2.0/updateAdSet"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Update Ad Set</a></li><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/reference/v2.0/getAdSetsByAdAccountId"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Get Ad Sets by Ad Account ID</a></li><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/reference/v2.0/createAdSet"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Create an Ad Set</a></li></ul></li><li><button class="sc-226e2e15-0 cKvXqF sc-5567915-0 ifTmbP"><span data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 kqItdM">ads</span><svg data-encore-id="icon" role="img" aria-hidden="true" viewBox="0 0 16 16" class="Svg-sc-ytk21e-0 ceft"><path d='M4.97.47a.75.75 0 0 0 0 1.06L11.44 8l-6.47 6.47a.75.75 0 1 0 1.06 1.06L13.56 8 6.03.47a.75.75 0 0 0-1.06 0z'/></svg></button><button aria-expanded="false" class="sc-71f1783f-0 jaqnEm sc-5567915-1 jPjXCP" aria-label="ads menu"><svg data-encore-id="icon" role="img" aria-hidden="true" viewBox="0 0 16 16" class="Svg-sc-ytk21e-0 eGOOvu"><path d='M3 1.713a.7.7 0 0 1 1.05-.607l10.89 6.288a.7.7 0 0 1 0 1.212L4.05 14.894A.7.7 0 0 1 3 14.288V1.713z'/></svg><span data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 kqItdM">ads</span></button><ul hidden="" class="sc-9fff6009-0 dPqbzU sc-3b882ab6-0 gDQowf"><button aria-label="Go back to " class="sc-1a8d3606-0 dKipnq sc-5567915-2 bCWGgN"><svg data-encore-id="icon" role="img" aria-hidden="true" viewBox="0 0 16 16" class="Svg-sc-ytk21e-0 ceft"><path d='M11.03.47a.75.75 0 0 1 0 1.06L4.56 8l6.47 6.47a.75.75 0 1 1-1.06 1.06L2.44 8 9.97.47a.75.75 0 0 1 1.06 0z'/></svg><span data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 huwcwr">ads</span></button><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/reference/v2.0/getAds"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Get Ads by Ad Account ID</a></li><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/reference/v2.0/createAd"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Create an Ad</a></li><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/reference/v2.0/getAd"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Get Ad by ID</a></li><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/reference/v2.0/updateAd"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Update an Ad</a></li></ul></li><li><button class="sc-226e2e15-0 cKvXqF sc-5567915-0 ifTmbP"><span data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 kqItdM">assets</span><svg data-encore-id="icon" role="img" aria-hidden="true" viewBox="0 0 16 16" class="Svg-sc-ytk21e-0 ceft"><path d='M4.97.47a.75.75 0 0 0 0 1.06L11.44 8l-6.47 6.47a.75.75 0 1 0 1.06 1.06L13.56 8 6.03.47a.75.75 0 0 0-1.06 0z'/></svg></button><button aria-expanded="false" class="sc-71f1783f-0 jaqnEm sc-5567915-1 jPjXCP" aria-label="assets menu"><svg data-encore-id="icon" role="img" aria-hidden="true" viewBox="0 0 16 16" class="Svg-sc-ytk21e-0 eGOOvu"><path d='M3 1.713a.7.7 0 0 1 1.05-.607l10.89 6.288a.7.7 0 0 1 0 1.212L4.05 14.894A.7.7 0 0 1 3 14.288V1.713z'/></svg><span data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 kqItdM">assets</span></button><ul hidden="" class="sc-9fff6009-0 dPqbzU sc-3b882ab6-0 gDQowf"><button aria-label="Go back to " class="sc-1a8d3606-0 dKipnq sc-5567915-2 bCWGgN"><svg data-encore-id="icon" role="img" aria-hidden="true" viewBox="0 0 16 16" class="Svg-sc-ytk21e-0 ceft"><path d='M11.03.47a.75.75 0 0 1 0 1.06L4.56 8l6.47 6.47a.75.75 0 1 1-1.06 1.06L2.44 8 9.97.47a.75.75 0 0 1 1.06 0z'/></svg><span data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 huwcwr">assets</span></button><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/reference/v2.0/getAssetsByTypeAndAdAccount"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Get Assets by Ad Account</a></li><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/reference/v2.0/createAsset"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Create Asset</a></li><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/reference/v2.0/getAsset"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Get Asset by ID</a></li><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/reference/v2.0/updateAsset"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Update Asset</a></li><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/reference/v2.0/uploadAsset"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Upload Asset</a></li><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/reference/v2.0/startUploadChunkedAsset"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Start Upload Chunked Asset</a></li><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/reference/v2.0/transferChunkedAsset"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Transfer Chunked Asset</a></li><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/reference/v2.0/completeUploadChunkedAsset"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Complete Upload Chunked Asset</a></li></ul></li><li><button class="sc-226e2e15-0 cKvXqF sc-5567915-0 ifTmbP"><span data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 kqItdM">campaigns</span><svg data-encore-id="icon" role="img" aria-hidden="true" viewBox="0 0 16 16" class="Svg-sc-ytk21e-0 ceft"><path d='M4.97.47a.75.75 0 0 0 0 1.06L11.44 8l-6.47 6.47a.75.75 0 1 0 1.06 1.06L13.56 8 6.03.47a.75.75 0 0 0-1.06 0z'/></svg></button><button aria-expanded="false" class="sc-71f1783f-0 jaqnEm sc-5567915-1 jPjXCP" aria-label="campaigns menu"><svg data-encore-id="icon" role="img" aria-hidden="true" viewBox="0 0 16 16" class="Svg-sc-ytk21e-0 eGOOvu"><path d='M3 1.713a.7.7 0 0 1 1.05-.607l10.89 6.288a.7.7 0 0 1 0 1.212L4.05 14.894A.7.7 0 0 1 3 14.288V1.713z'/></svg><span data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 kqItdM">campaigns</span></button><ul hidden="" class="sc-9fff6009-0 dPqbzU sc-3b882ab6-0 gDQowf"><button aria-label="Go back to " class="sc-1a8d3606-0 dKipnq sc-5567915-2 bCWGgN"><svg data-encore-id="icon" role="img" aria-hidden="true" viewBox="0 0 16 16" class="Svg-sc-ytk21e-0 ceft"><path d='M11.03.47a.75.75 0 0 1 0 1.06L4.56 8l6.47 6.47a.75.75 0 1 1-1.06 1.06L2.44 8 9.97.47a.75.75 0 0 1 1.06 0z'/></svg><span data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 huwcwr">campaigns</span></button><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/reference/v2.0/getCampaigns"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Get Campaigns by Ad Account ID</a></li><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/reference/v2.0/createCampaign"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Create a Campaign</a></li><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/reference/v2.0/getCampaign"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Get Campaign by ID</a></li><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/reference/v2.0/updateCampaign"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Update a Campaign</a></li></ul></li><li><button class="sc-226e2e15-0 cKvXqF sc-5567915-0 ifTmbP"><span data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 kqItdM">estimates</span><svg data-encore-id="icon" role="img" aria-hidden="true" viewBox="0 0 16 16" class="Svg-sc-ytk21e-0 ceft"><path d='M4.97.47a.75.75 0 0 0 0 1.06L11.44 8l-6.47 6.47a.75.75 0 1 0 1.06 1.06L13.56 8 6.03.47a.75.75 0 0 0-1.06 0z'/></svg></button><button aria-expanded="false" class="sc-71f1783f-0 jaqnEm sc-5567915-1 jPjXCP" aria-label="estimates menu"><svg data-encore-id="icon" role="img" aria-hidden="true" viewBox="0 0 16 16" class="Svg-sc-ytk21e-0 eGOOvu"><path d='M3 1.713a.7.7 0 0 1 1.05-.607l10.89 6.288a.7.7 0 0 1 0 1.212L4.05 14.894A.7.7 0 0 1 3 14.288V1.713z'/></svg><span data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 kqItdM">estimates</span></button><ul hidden="" class="sc-9fff6009-0 dPqbzU sc-3b882ab6-0 gDQowf"><button aria-label="Go back to " class="sc-1a8d3606-0 dKipnq sc-5567915-2 bCWGgN"><svg data-encore-id="icon" role="img" aria-hidden="true" viewBox="0 0 16 16" class="Svg-sc-ytk21e-0 ceft"><path d='M11.03.47a.75.75 0 0 1 0 1.06L4.56 8l6.47 6.47a.75.75 0 1 1-1.06 1.06L2.44 8 9.97.47a.75.75 0 0 1 1.06 0z'/></svg><span data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 huwcwr">estimates</span></button><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/reference/v2.0/estimateAudience"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Estimate audience</a></li><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/reference/v2.0/estimateBid"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Estimate bid</a></li></ul></li><li><button class="sc-226e2e15-0 cKvXqF sc-5567915-0 ifTmbP"><span data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 kqItdM">podcast-shows</span><svg data-encore-id="icon" role="img" aria-hidden="true" viewBox="0 0 16 16" class="Svg-sc-ytk21e-0 ceft"><path d='M4.97.47a.75.75 0 0 0 0 1.06L11.44 8l-6.47 6.47a.75.75 0 1 0 1.06 1.06L13.56 8 6.03.47a.75.75 0 0 0-1.06 0z'/></svg></button><button aria-expanded="false" class="sc-71f1783f-0 jaqnEm sc-5567915-1 jPjXCP" aria-label="podcast-shows menu"><svg data-encore-id="icon" role="img" aria-hidden="true" viewBox="0 0 16 16" class="Svg-sc-ytk21e-0 eGOOvu"><path d='M3 1.713a.7.7 0 0 1 1.05-.607l10.89 6.288a.7.7 0 0 1 0 1.212L4.05 14.894A.7.7 0 0 1 3 14.288V1.713z'/></svg><span data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 kqItdM">podcast-shows</span></button><ul hidden="" class="sc-9fff6009-0 dPqbzU sc-3b882ab6-0 gDQowf"><button aria-label="Go back to " class="sc-1a8d3606-0 dKipnq sc-5567915-2 bCWGgN"><svg data-encore-id="icon" role="img" aria-hidden="true" viewBox="0 0 16 16" class="Svg-sc-ytk21e-0 ceft"><path d='M11.03.47a.75.75 0 0 1 0 1.06L4.56 8l6.47 6.47a.75.75 0 1 1-1.06 1.06L2.44 8 9.97.47a.75.75 0 0 1 1.06 0z'/></svg><span data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 huwcwr">podcast-shows</span></button><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/reference/v2.0/getPodcastShows"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Get Podcast Shows</a></li></ul></li><li><button class="sc-226e2e15-0 cKvXqF sc-5567915-0 ifTmbP"><span data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 kqItdM">reports</span><svg data-encore-id="icon" role="img" aria-hidden="true" viewBox="0 0 16 16" class="Svg-sc-ytk21e-0 ceft"><path d='M4.97.47a.75.75 0 0 0 0 1.06L11.44 8l-6.47 6.47a.75.75 0 1 0 1.06 1.06L13.56 8 6.03.47a.75.75 0 0 0-1.06 0z'/></svg></button><button aria-expanded="false" class="sc-71f1783f-0 jaqnEm sc-5567915-1 jPjXCP" aria-label="reports menu"><svg data-encore-id="icon" role="img" aria-hidden="true" viewBox="0 0 16 16" class="Svg-sc-ytk21e-0 eGOOvu"><path d='M3 1.713a.7.7 0 0 1 1.05-.607l10.89 6.288a.7.7 0 0 1 0 1.212L4.05 14.894A.7.7 0 0 1 3 14.288V1.713z'/></svg><span data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 kqItdM">reports</span></button><ul hidden="" class="sc-9fff6009-0 dPqbzU sc-3b882ab6-0 gDQowf"><button aria-label="Go back to " class="sc-1a8d3606-0 dKipnq sc-5567915-2 bCWGgN"><svg data-encore-id="icon" role="img" aria-hidden="true" viewBox="0 0 16 16" class="Svg-sc-ytk21e-0 ceft"><path d='M11.03.47a.75.75 0 0 1 0 1.06L4.56 8l6.47 6.47a.75.75 0 1 1-1.06 1.06L2.44 8 9.97.47a.75.75 0 0 1 1.06 0z'/></svg><span data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 huwcwr">reports</span></button><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/reference/v2.0/getAggregateReport"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Get Aggregate Report by Ad Account ID</a></li><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/reference/v2.0/getAudienceInsightReport"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Get Insight Report by Ad Account ID</a></li><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/reference/v2.0/createAsyncReport"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Create a CSV Report Asynchronously</a></li><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/reference/v2.0/getAsyncReport"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Get CSV Report Status by ID</a></li></ul></li><li><button class="sc-226e2e15-0 cKvXqF sc-5567915-0 ifTmbP"><span data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 kqItdM">targets</span><svg data-encore-id="icon" role="img" aria-hidden="true" viewBox="0 0 16 16" class="Svg-sc-ytk21e-0 ceft"><path d='M4.97.47a.75.75 0 0 0 0 1.06L11.44 8l-6.47 6.47a.75.75 0 1 0 1.06 1.06L13.56 8 6.03.47a.75.75 0 0 0-1.06 0z'/></svg></button><button aria-expanded="false" class="sc-71f1783f-0 jaqnEm sc-5567915-1 jPjXCP" aria-label="targets menu"><svg data-encore-id="icon" role="img" aria-hidden="true" viewBox="0 0 16 16" class="Svg-sc-ytk21e-0 eGOOvu"><path d='M3 1.713a.7.7 0 0 1 1.05-.607l10.89 6.288a.7.7 0 0 1 0 1.212L4.05 14.894A.7.7 0 0 1 3 14.288V1.713z'/></svg><span data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 kqItdM">targets</span></button><ul hidden="" class="sc-9fff6009-0 dPqbzU sc-3b882ab6-0 gDQowf"><button aria-label="Go back to " class="sc-1a8d3606-0 dKipnq sc-5567915-2 bCWGgN"><svg data-encore-id="icon" role="img" aria-hidden="true" viewBox="0 0 16 16" class="Svg-sc-ytk21e-0 ceft"><path d='M11.03.47a.75.75 0 0 1 0 1.06L4.56 8l6.47 6.47a.75.75 0 1 1-1.06 1.06L2.44 8 9.97.47a.75.75 0 0 1 1.06 0z'/></svg><span data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 huwcwr">targets</span></button><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/reference/v2.0/getArtistTargets"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Get Artist Targets</a></li><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/reference/v2.0/getGenreTargets"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Get Genre Targets</a></li><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/reference/v2.0/getGeoTargets"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Get Geo Targets</a></li><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/reference/v2.0/getInterestTargets"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Get Interest Targets</a></li><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/reference/v2.0/getLanguageTargets"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Get Language Targets</a></li><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/reference/v2.0/getPlaylistTargets"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Get Playlist Targets</a></li><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/reference/v2.0/getEpisodeTopicTargets"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Get Podcast Episode Topic Targets</a></li><li data-encore-id="listItem" class="ListItem__ListItemElement-sc-14osqn3-0 iTMyfH"><a class="sc-ca19fa36-0 inXpDH" href="/documentation/ads-api/reference/v2.0/getSensitiveTopicTargets"><span class="sc-4b98e795-0 sc-ca19fa36-1 fIEjgQ eQIFgG"></span>Get Sensitive Topic Targets</a></li></ul></li></ul></div></div></div><main id="main" class="sc-ae97880a-0 ifAlMH"><div class="sc-7eae9c62-0 fdpdGa"><div class="sc-2b38a360-0 sc-758a8666-3 cnPCiV gsLPka"><h1 class="Type__TypeElement-sc-goli3j-0 cMheqG sc-758a8666-2 lavrjL" data-encore-id="type">Ads API<!-- --> <!-- --> </h1><style>[data-ch-theme="s4d"] { --ch-t-colorScheme: dark;--ch-t-foreground: #ffffff;--ch-t-background: #1E073C;--ch-t-lighter-inlineBackground: #1e073ce6;--ch-t-editor-background: #1E073C;--ch-t-editor-foreground: #F8F8F2;--ch-t-editor-lineHighlightBackground: #3E3D32;--ch-t-editor-rangeHighlightBackground: #ffffff0b;--ch-t-editor-infoForeground: #3794FF;--ch-t-editor-selectionBackground: #49483E;--ch-t-focusBorder: #007FD4;--ch-t-tab-activeBackground: #1E073C;--ch-t-tab-activeForeground: #ffffff;--ch-t-tab-inactiveBackground: #2D2D2D;--ch-t-tab-inactiveForeground: #ffffff80;--ch-t-tab-border: #252526;--ch-t-tab-activeBorder: #1E073C;--ch-t-editorGroup-border: #444444;--ch-t-editorGroupHeader-tabsBackground: #252526;--ch-t-editorLineNumber-foreground: #858585;--ch-t-input-background: #3C3C3C;--ch-t-input-foreground: #F8F8F2;--ch-t-icon-foreground: #C5C5C5;--ch-t-sideBar-background: #252526;--ch-t-sideBar-foreground: #F8F8F2;--ch-t-sideBar-border: #252526;--ch-t-list-activeSelectionBackground: #094771;--ch-t-list-activeSelectionForeground: #fffffe;--ch-t-list-hoverBackground: #2A2D2E; }</style> <div class="sc-9e80177b-1 ifxrgl"><h2 class="encore-text encore-text-title-medium" data-encore-id="text" id="about">About</h2></div> <p data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 ckCbjl">The Spotify Ads API lets you build, manage, and report on <a data-encore-id="textLink" class="Link-sc-k8gsk-0 flYERd" href="https://adsmanager.spotify.com">Ads Manager</a> campaigns. This guide can help you get started. Topics include:</p> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Getting started requirements and instructions</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">An Ads Manager overview</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Descriptions of available endpoints</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Help and support information</li> </ul> <div class="sc-9e80177b-1 ifxrgl"><h3 class="encore-text encore-text-title-small" data-encore-id="text" id="next-steps">Next steps</h3></div> <p data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 ckCbjl">If you&#x27;re not sure what to do now, try these recommendations:</p> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"> <p data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 ckCbjl">New to the Ads API? See the <a data-encore-id="textLink" class="Link-sc-k8gsk-0 flYERd" href="/documentation/ads-api/quick-start">Quickstart</a> section. It provides instructions about how to set up an account to work with our API.</p> </li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"> <p data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 ckCbjl">Already using the Ads API? Great! Check the <a data-encore-id="textLink" class="Link-sc-k8gsk-0 flYERd" href="/documentation/ads-api#release-notes">Release Notes section</a> for information on the latest changes, or browse the available methods below.</p> </li> </ul> <div class="sc-9e80177b-1 ifxrgl"><h3 class="encore-text encore-text-title-small" data-encore-id="text" id="support">Support</h3></div> <p data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 ckCbjl">To report a bug or ask questions about this service, contact the Ads API team at <a data-encore-id="textLink" class="Link-sc-k8gsk-0 flYERd" href="mailto:ads-api-support@spotify.com">ads-api-support@spotify.com</a>. NOTE: Please be sure to include info such as your client ID and a copy of the request and response (including the sp_trace_id) if relevant.</p> <div class="sc-9e80177b-1 ifxrgl"><h3 class="encore-text encore-text-title-small" data-encore-id="text" id="subscribe-to-newsletter">Subscribe to Newsletter</h3></div> <p data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 ckCbjl">Sign up for our monthly Ads API newsletter <a data-encore-id="textLink" class="Link-sc-k8gsk-0 flYERd" href="http://eepurl.com/h-NAHz">here</a> if you want to receive updates about new releases, testing opportunities, and more!</p> <div class="sc-9e80177b-1 ifxrgl"><h2 class="encore-text encore-text-title-medium" data-encore-id="text" id="api-design">API Design</h2></div> <p data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 ckCbjl">This section covers important design elements that affect how the Ads API works. Take a moment to review this information.</p> <div class="sc-9e80177b-1 ifxrgl"><h3 class="encore-text encore-text-title-small" data-encore-id="text" id="rate-limiting">Rate Limiting</h3></div> <p data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 ckCbjl">Rate limiting caps the number of API calls a user or app can make within a set period of time. The Ads API applies RPS rate limits on a per-user basis for each calling app, regardless of the number of simultaneous app users. These limits help Spotify provide API access equitably to all our engineering partners.</p> <p data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 ckCbjl">In addition, there is also a cap on the reporting endpoints that takes precedence over the general cap on the client ID + user ID key since these specific endpoints are most at risk for high-request volumes, oftentimes due to bad or malformed requests.</p> <p data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 ckCbjl">Note: If our API returns status code 429, it means that you have sent too many requests. When this happens, check the headers for the following info:</p> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>X-RateLimit-Remaining</code>: The count of requests remaining in the rate limit window</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>X-RateLimit-Limit</code>: The maximum number of requests allowed within the rate limit window</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>X-RateLimit-Reset</code>: The number of seconds left until the rate limit resets and you can retry your request again</li> </ul> <div class="sc-9e80177b-0 kRudhQ"><table data-encore-id="table" class="Table__TableElement-sc-evwssh-0 fPsMQq"><thead><tr data-encore-id="tableRow" class="TableRow__TableRowElement-sc-1kuhzdh-0 hoXXxN"><th scope="col" class="TableHeaderCell__TableHeaderCellElement-sc-16kf5kl-0 gfUuhl encore-text-body-small-bold" data-encore-id="tableHeaderCell">Rate Limit On</th><th scope="col" class="TableHeaderCell__TableHeaderCellElement-sc-16kf5kl-0 gfUuhl encore-text-body-small-bold" data-encore-id="tableHeaderCell">Rate Limit Request</th><th scope="col" class="TableHeaderCell__TableHeaderCellElement-sc-16kf5kl-0 gfUuhl encore-text-body-small-bold" data-encore-id="tableHeaderCell">Window (seconds)</th><th scope="col" class="TableHeaderCell__TableHeaderCellElement-sc-16kf5kl-0 gfUuhl encore-text-body-small-bold" data-encore-id="tableHeaderCell">Sustained Requests per second (RPS) limit</th></tr></thead><tbody><tr data-encore-id="tableRow" class="TableRow__TableRowElement-sc-1kuhzdh-0 hoXXxN"><td class="TableCell__TableCellElement-sc-1nn7cfv-0 gOsDpy encore-text-body-small" data-encore-id="tableCell"><span data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 kqItdM">Client ID + User ID (as a single key)</span></td><td class="TableCell__TableCellElement-sc-1nn7cfv-0 gOsDpy encore-text-body-small" data-encore-id="tableCell"><span data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 kqItdM">1500</span></td><td class="TableCell__TableCellElement-sc-1nn7cfv-0 gOsDpy encore-text-body-small" data-encore-id="tableCell"><span data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 kqItdM">30s</span></td><td class="TableCell__TableCellElement-sc-1nn7cfv-0 gOsDpy encore-text-body-small" data-encore-id="tableCell"><span data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 kqItdM">50 RPS</span></td></tr><tr data-encore-id="tableRow" class="TableRow__TableRowElement-sc-1kuhzdh-0 hoXXxN"><td class="TableCell__TableCellElement-sc-1nn7cfv-0 gOsDpy encore-text-body-small" data-encore-id="tableCell"><span data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 kqItdM">Client ID + User ID (as a single key) on Reporting Endpoints</span></td><td class="TableCell__TableCellElement-sc-1nn7cfv-0 gOsDpy encore-text-body-small" data-encore-id="tableCell"><span data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 kqItdM">150</span></td><td class="TableCell__TableCellElement-sc-1nn7cfv-0 gOsDpy encore-text-body-small" data-encore-id="tableCell"><span data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 kqItdM">30s</span></td><td class="TableCell__TableCellElement-sc-1nn7cfv-0 gOsDpy encore-text-body-small" data-encore-id="tableCell"><span data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 kqItdM">50 RPS</span></td></tr></tbody></table></div> <div class="sc-9e80177b-1 ifxrgl"><h3 class="encore-text encore-text-title-small" data-encore-id="text" id="breaking-v-non-breaking-changes-policy">Breaking v. Non-Breaking Changes Policy</h3></div> <p data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 ckCbjl">This section provides a more detailed list of what Ads API considers to be a &quot;Breaking&quot; change, and what is considered a &quot;Non-Breaking&quot; change (i.e. backwards compatible change). The API defines these terms in the following way:</p> <ol role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><strong>Breaking Changes</strong>: Any alteration in the API that causes existing integrations to fail or function incorrectly from the perspective of the Ads API customers / users. Integrations built on the previous version of the API would not continue to function as expected after these changes are implemented, and would thus require immediate attention and modification.</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><strong>Non-Breaking/Backwards Compatible Changes</strong>: Updates or enhancements to the API that do not disrupt existing integrations. Integrations built on the previous version of the API continue to function as expected, even after these changes are implemented.</li> </ol> <div class="sc-9e80177b-1 ifxrgl"><h4 class="encore-text encore-text-body-medium-bold" data-encore-id="text" id="breaking-changes">Breaking Changes</h4></div> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Removing an existing operation/endpoint</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><strong>Request</strong> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Headers<!-- --> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Removing or renaming an existing header</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Adding a new required header</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Making a previously optional header required</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Changing the type of a header</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Changing the default value of a header</li> </ul> </li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Body<!-- --> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Removing or renaming an existing field</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Adding or increasing restrictions to the accepted values for an existing non-enum field</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Removing enum options from an existing enum-type field</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Adding a new required request field</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Making a previously optional request field required</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Changing the type of an existing request field</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Changing the default value of an existing field</li> </ul> </li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Query/Path Parameters<!-- --> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Removing or renaming an existing parameter</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Adding or increasing restrictions to the accepted values for an existing non-enum parameter</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Removing enum options from an existing enum-type parameter</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Adding a new required parameter</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Making a previously optional parameter required</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Changing the type of an existing parameter</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Changing the default value of a parameter</li> </ul> </li> </ul> </li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><strong>Response</strong> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Body<!-- --> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Removing or renaming an existing field</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Removing enum values/options from an existing enum-type field</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Changing the type of an existing field</li> </ul> </li> </ul> </li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Adding a new validation rule to an existing parameter or making an existing validation rule more restrictive</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Changing the value of what is being returned behind the scenes</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Changing authentication or authorization requirements</li> </ul> <div class="sc-9e80177b-1 ifxrgl"><h4 class="encore-text encore-text-body-medium-bold" data-encore-id="text" id="non-breakingbackwards-compatible-changes">Non-Breaking/Backwards Compatible Changes</h4></div> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Updating documentation, both internally and externally facing</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Adding a new operation/endpoint</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><strong>Request</strong> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Headers<!-- --> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Adding a new optional header</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Making a previously required header optional</li> </ul> </li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Request Body<!-- --> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Adding a new optional field</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Making a previously required field optional</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Adding enum values to an existing enum type field</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Marking an existing field as deprecated to warn of future remove, but not removing it</li> </ul> </li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Query/Path Parameters<!-- --> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Adding a new optional parameter</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Making a previously required parameter optional</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Adding enum values to an existing enum type parameter</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Marking an existing parameter as deprecated to warn of future remove, but not removing it</li> </ul> </li> </ul> </li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><strong>Response</strong> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Headers<!-- --> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Adding a new header</li> </ul> </li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Body<!-- --> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Adding a new field</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Changing the order of properties in existing API responses</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Adding enum values to an existing enum type field</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Marking an existing field as deprecated to warn of future remove, but not removing it</li> </ul> </li> </ul> </li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Any bug fixes that don’t fall into the breaking changes category</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Codebase improvements that don&#x27;t fall into the breaking changes category (e.g. Testing Improvements, Performance Improvements, etc.)</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Marking an existing endpoint as deprecated to warn of future remove, but not removing it</li> </ul> <div class="sc-9e80177b-1 ifxrgl"><h3 class="encore-text encore-text-title-small" data-encore-id="text" id="versioning">Versioning</h3></div> <p data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 ckCbjl">The most recent version of the Ads API is v2.</p> <p data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 ckCbjl">All endpoints are versioned with a version number in the URI. Version numbers are integers starting with a 1 or 2, and the version number is a prefix of the URI.</p> <p data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 ckCbjl">In accordance with semantic versioning, versions are bumped when there is a backwards-incompatible change that necessitates it, such as significant schema changes.</p> <p data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 ckCbjl">Updates that do not break existing consumers will be deployed to the current version as patch releases.</p> <p data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 ckCbjl"><em>Patch</em> releases:</p> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Non-Breaking Changes</li> </ul> <p data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 ckCbjl"><em>Major</em> releases, e.g. <code>/v2/</code> to <code>/v3/</code>:</p> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Major Breaking/Backwards Compatible Changes</li> </ul> <p data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 ckCbjl">For each of these releases, the API team will communicate with clients and detail the changes in the API Release Notes.</p> <div class="sc-9e80177b-1 ifxrgl"><h3 class="encore-text encore-text-title-small" data-encore-id="text" id="release-calendar">Release Calendar</h3></div> <p data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 ckCbjl">In order to maintain a healthy evolution of fixes and improvements to the API, in January 2024 the Ads API began to follow a lifecycle of sunsetting its currently latest version approximately every year. From v2 onwards, the API team will maintain 3 versions (e.g., v2, v3, and v4 will be maintained at the same time). Within about 12 months, the current version is considered deprecated. Deprecation means that a newer version is now available and the flagged version will soon be sunset. After another 6 months, the version is sunset and will no longer be accessible.</p> <p data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 ckCbjl">For example, the current latest version (v2) of the API will be deprecated ~12 months from January 2024 in winter 2025 and then sunset ~Q3 2025:</p> <p data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 ckCbjl"><img src="/images/blog/ads-api-release-calendar.png" alt="&quot;Ads API Version Lifecycle&quot;" class="Image-sc-1u215sg-3 hQQTps sc-9e80177b-3 kEYUZZ" data-encore-id="image"/></p> <p data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 ckCbjl">To summarize the release policy:</p> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><strong>Deprecations</strong>: the Ads API team will give a <strong>6 month notice</strong> before a version becomes deprecated. Once deprecated, new features will not be added to the version, and non-critical bugs will not be resolved. In rare exceptions, critical bug fixes will still be made to the version until it&#x27;s sunset.</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><strong>Sunset</strong>: the Ads API team will give a <strong>6 month notice</strong> before a version becomes sunset, meaning HTTP requests can no longer be made.</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><strong>Release Notes</strong>: the Ads API team will continue to post monthly updates (see more in the Release Notes section).</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><strong>Monthly Newsletter</strong>: the newsletter includes a summarized version of the release notes (see more in the Monthly Newsletter section).</li> </ul> <div class="sc-9e80177b-1 ifxrgl"><h3 class="encore-text encore-text-title-small" data-encore-id="text" id="past-versions">Past Versions</h3></div> <p data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 ckCbjl">For historical reasons, here&#x27;s a table of previous API versions:</p> <div class="sc-9e80177b-0 kRudhQ"><table data-encore-id="table" class="Table__TableElement-sc-evwssh-0 fPsMQq"><thead><tr data-encore-id="tableRow" class="TableRow__TableRowElement-sc-1kuhzdh-0 hoXXxN"><th scope="col" class="TableHeaderCell__TableHeaderCellElement-sc-16kf5kl-0 gfUuhl encore-text-body-small-bold" data-encore-id="tableHeaderCell">API Version</th><th scope="col" class="TableHeaderCell__TableHeaderCellElement-sc-16kf5kl-0 gfUuhl encore-text-body-small-bold" data-encore-id="tableHeaderCell">Release Date</th><th scope="col" class="TableHeaderCell__TableHeaderCellElement-sc-16kf5kl-0 gfUuhl encore-text-body-small-bold" data-encore-id="tableHeaderCell">Deprecation Date</th><th scope="col" class="TableHeaderCell__TableHeaderCellElement-sc-16kf5kl-0 gfUuhl encore-text-body-small-bold" data-encore-id="tableHeaderCell">Sunset Date</th></tr></thead><tbody><tr data-encore-id="tableRow" class="TableRow__TableRowElement-sc-1kuhzdh-0 hoXXxN"><td class="TableCell__TableCellElement-sc-1nn7cfv-0 gOsDpy encore-text-body-small" data-encore-id="tableCell"><span data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 kqItdM">v2</span></td><td class="TableCell__TableCellElement-sc-1nn7cfv-0 gOsDpy encore-text-body-small" data-encore-id="tableCell"><span data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 kqItdM">August 2023</span></td><td class="TableCell__TableCellElement-sc-1nn7cfv-0 gOsDpy encore-text-body-small" data-encore-id="tableCell"><span data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 kqItdM">TBA</span></td><td class="TableCell__TableCellElement-sc-1nn7cfv-0 gOsDpy encore-text-body-small" data-encore-id="tableCell"><span data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 kqItdM">TBA</span></td></tr><tr data-encore-id="tableRow" class="TableRow__TableRowElement-sc-1kuhzdh-0 hoXXxN"><td class="TableCell__TableCellElement-sc-1nn7cfv-0 gOsDpy encore-text-body-small" data-encore-id="tableCell"><span data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 kqItdM">v1.4</span></td><td class="TableCell__TableCellElement-sc-1nn7cfv-0 gOsDpy encore-text-body-small" data-encore-id="tableCell"><span data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 kqItdM">November 2022</span></td><td class="TableCell__TableCellElement-sc-1nn7cfv-0 gOsDpy encore-text-body-small" data-encore-id="tableCell"><span data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 kqItdM">November 13, 2023</span></td><td class="TableCell__TableCellElement-sc-1nn7cfv-0 gOsDpy encore-text-body-small" data-encore-id="tableCell"><span data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 kqItdM">November 27, 2023</span></td></tr><tr data-encore-id="tableRow" class="TableRow__TableRowElement-sc-1kuhzdh-0 hoXXxN"><td class="TableCell__TableCellElement-sc-1nn7cfv-0 gOsDpy encore-text-body-small" data-encore-id="tableCell"><span data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 kqItdM">v1.3</span></td><td class="TableCell__TableCellElement-sc-1nn7cfv-0 gOsDpy encore-text-body-small" data-encore-id="tableCell"><span data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 kqItdM">July 2022</span></td><td class="TableCell__TableCellElement-sc-1nn7cfv-0 gOsDpy encore-text-body-small" data-encore-id="tableCell"><span data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 kqItdM">November 13, 2023</span></td><td class="TableCell__TableCellElement-sc-1nn7cfv-0 gOsDpy encore-text-body-small" data-encore-id="tableCell"><span data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 kqItdM">November 27, 2023</span></td></tr><tr data-encore-id="tableRow" class="TableRow__TableRowElement-sc-1kuhzdh-0 hoXXxN"><td class="TableCell__TableCellElement-sc-1nn7cfv-0 gOsDpy encore-text-body-small" data-encore-id="tableCell"><span data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 kqItdM">v1.2</span></td><td class="TableCell__TableCellElement-sc-1nn7cfv-0 gOsDpy encore-text-body-small" data-encore-id="tableCell"><span data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 kqItdM">December 2021</span></td><td class="TableCell__TableCellElement-sc-1nn7cfv-0 gOsDpy encore-text-body-small" data-encore-id="tableCell"><span data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 kqItdM">August 25, 2022</span></td><td class="TableCell__TableCellElement-sc-1nn7cfv-0 gOsDpy encore-text-body-small" data-encore-id="tableCell"><span data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 kqItdM">November 27, 2023</span></td></tr><tr data-encore-id="tableRow" class="TableRow__TableRowElement-sc-1kuhzdh-0 hoXXxN"><td class="TableCell__TableCellElement-sc-1nn7cfv-0 gOsDpy encore-text-body-small" data-encore-id="tableCell"><span data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 kqItdM">v1.1</span></td><td class="TableCell__TableCellElement-sc-1nn7cfv-0 gOsDpy encore-text-body-small" data-encore-id="tableCell"><span data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 kqItdM">June 2019</span></td><td class="TableCell__TableCellElement-sc-1nn7cfv-0 gOsDpy encore-text-body-small" data-encore-id="tableCell"><span data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 kqItdM">August 25, 2022</span></td><td class="TableCell__TableCellElement-sc-1nn7cfv-0 gOsDpy encore-text-body-small" data-encore-id="tableCell"><span data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 kqItdM">November 27, 2023</span></td></tr><tr data-encore-id="tableRow" class="TableRow__TableRowElement-sc-1kuhzdh-0 hoXXxN"><td class="TableCell__TableCellElement-sc-1nn7cfv-0 gOsDpy encore-text-body-small" data-encore-id="tableCell"><span data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 kqItdM">v1.0</span></td><td class="TableCell__TableCellElement-sc-1nn7cfv-0 gOsDpy encore-text-body-small" data-encore-id="tableCell"><span data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 kqItdM">March 2019</span></td><td class="TableCell__TableCellElement-sc-1nn7cfv-0 gOsDpy encore-text-body-small" data-encore-id="tableCell"><span data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 kqItdM">July 1, 2022</span></td><td class="TableCell__TableCellElement-sc-1nn7cfv-0 gOsDpy encore-text-body-small" data-encore-id="tableCell"><span data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 kqItdM">November 27, 2023</span></td></tr></tbody></table></div> <div class="sc-9e80177b-1 ifxrgl"><h3 class="encore-text encore-text-title-small" data-encore-id="text" id="time-format">Time Format</h3></div> <p data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 ckCbjl">Times are always recorded in <a data-encore-id="textLink" class="Link-sc-k8gsk-0 flYERd" href="https://en.wikipedia.org/wiki/ISO_8601">ISO 8601</a> format as <a data-encore-id="textLink" class="Link-sc-k8gsk-0 flYERd" href="https://en.wikipedia.org/wiki/UTC_offset">Coordinated Universal Time (UTC)</a> with a <a data-encore-id="textLink" class="Link-sc-k8gsk-0 flYERd" href="https://en.wikipedia.org/wiki/UTC_offset">zero offset</a>: <code>YYYY-MM-DDTHH:MM:SSZ</code>.</p> <div class="sc-9e80177b-1 ifxrgl"><h3 class="encore-text encore-text-title-small" data-encore-id="text" id="pagination">Pagination</h3></div> <p data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 ckCbjl">Most list endpoints support paging the dataset by taking an offset and limit as query parameters.</p> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>limit</code> specifies the number of results to be returned from the call. If not specified, the default value is 50. The max allowed value is also 50.</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>offset</code> specifies the starting position of the first result.</li> </ul> <p data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 ckCbjl">If you specify a <code>limit</code> of 5, the API will return 5 results. On the next page you’d put an offset of 6 to retrieve results 6 through 10. We return the total number of results along with the page size in the <code>paging</code> object.</p> <p data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 ckCbjl">The <a data-encore-id="textLink" class="Link-sc-k8gsk-0 flYERd" href="/documentation/ads-api/reference/v2.0/getAggregateReport">reporting endpoints</a> are an exception and use continuation tokens for paging instead of <code>offset</code>. The reporting response will include a continuation token that can then be sent in a subsequent reporting request to access the next page of results. When sending a request with a continuation token included, no other fields should be specified. If the continuation token returned in the response is null, that means there are no more pages available.</p> <p data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 ckCbjl">Continuation tokens are base64 encoded and encrypted strings that look like the following: <code>AMC-fuxpGRIqFcOUEzDEdWQsM5Iy7mkRThKFo94mEys6RF1lzeKyq1sOlWU4RsdjSsgDWR2D7An1nFgLXNBU9hocKnWQ9jRsps6kCLqKd7Q77zNEhHm_Xlb6J_Fci6kK7tXVM3U6H8OajjcTA18eFcr-kv0etZJZBWlMhtP84xj4WiVDZnPWaMo7AL3jRrHH32grJ3eRA2PAoZmhg80%3D</code></p> <div class="sc-9e80177b-1 ifxrgl"><h2 class="encore-text encore-text-title-medium" data-encore-id="text" id="release-notes">Release Notes</h2></div> <p data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 ckCbjl">This section documents changes to the Ads API, including all patch updates, bug fixes, new version releases, version deprecations, version sunsets, etc.</p> <div class="sc-9e80177b-1 ifxrgl"><h3 class="encore-text encore-text-title-small" data-encore-id="text" id="march-2024">March 2024</h3></div> <p data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 ckCbjl">The following updates have been made to the latest version (v2) of the Ads API.</p> <div class="sc-9e80177b-1 ifxrgl"><h4 class="encore-text encore-text-body-medium-bold" data-encore-id="text" id="whats-new">What&#x27;s New</h4></div> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">New campaign objective <code>&quot;PODCAST_STREAMS&quot;</code> is now available when <a data-encore-id="textLink" class="Link-sc-k8gsk-0 flYERd" href="/documentation/ads-api/reference/v2.0/createCampaign">creating</a> or <a data-encore-id="textLink" class="Link-sc-k8gsk-0 flYERd" href="/documentation/ads-api/reference/v2.0/updateCampaign">updating</a> a campaign: The new Podcast Streams objective enables podcasters of all sizes easily promote their shows to listeners who are more likely to stream podcasts on Spotify -- learn more <a data-encore-id="textLink" class="Link-sc-k8gsk-0 flYERd" href="https://ads.spotify.com/en-US/news-and-insights/podcast-streams-objective/">here</a></li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">New read-only field <code>display_name</code> under the ad account entity: This is an optional nickname that a user can give to an ad account; it is referred to as the ad account nickname in the UI and is specific to a user</li> </ul> <div class="sc-9e80177b-1 ifxrgl"><h4 class="encore-text encore-text-body-medium-bold" data-encore-id="text" id="documentation-updates">Documentation Updates</h4></div> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Update to <a data-encore-id="textLink" class="Link-sc-k8gsk-0 flYERd" href="/documentation/ads-api#rate-limiting">Rate Limiting</a>:<!-- --> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Replaced IP-level rate limit with a user-level rate limit</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Added info on new rate limiting headers:<!-- --> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>X-RateLimit-Remaining</code>: The count of requests remaining in the rate limit window</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>X-RateLimit-Limit</code>: The maximum number of requests allowed within the rate limit window</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>X-RateLimit-Reset</code>: The number of seconds left until the rate limit resets and you can retry your request again</li> </ul> </li> </ul> </li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Update to <a data-encore-id="textLink" class="Link-sc-k8gsk-0 flYERd" href="/documentation/ads-api#pagination">Pagination</a>: Added documentation to reflect that reporting endpoints use <code>continuation_token</code> for paging instead of <code>offset</code></li> </ul> <div class="sc-9e80177b-1 ifxrgl"><h3 class="encore-text encore-text-title-small" data-encore-id="text" id="february-2024">February 2024</h3></div> <p data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 ckCbjl">The following updates have been made to the latest version (v2) of the Ads API.</p> <div class="sc-9e80177b-1 ifxrgl"><h4 class="encore-text encore-text-body-medium-bold" data-encore-id="text" id="whats-new-1">What&#x27;s New</h4></div> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Reporting updates:<!-- --> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Support for ad account-level breakdowns: a new enum value <code>&quot;AD_ACCOUNT&quot;</code> is now available under the <code>entity_type</code> parameter for the <a data-encore-id="textLink" class="Link-sc-k8gsk-0 flYERd" href="/documentation/ads-api/reference/v2.0/getAggregateReport">Get Aggregate Report</a> endpoint<!-- --> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Ad account-level breakdowns are not supported for the <a data-encore-id="textLink" class="Link-sc-k8gsk-0 flYERd" href="/documentation/ads-api/reference/v2.0/getAudienceInsightReport">Get Insight Report</a> endpoint</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">The following fields/filters <strong>cannot</strong> be used when requesting an ad account-level breakdown:<!-- --> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>entity_id</code> - the ID of the ad account specified in the endpoint path will be used to filter the request</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>entity_id_type</code></li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>include_parent_entity</code>- cannot be set to <code>true</code></li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>statuses</code></li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>entity_status_type</code></li> </ul> </li> </ul> </li> </ul> </li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Campaign Management updates:<!-- --> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">New <a data-encore-id="textLink" class="Link-sc-k8gsk-0 flYERd" href="https://ads.spotify.com/en-US/news-and-insights/introducing-canvas-for-ads/">Canvas</a> feature available! When creating or updating an audio ad, users now have the option to include a visual companion asset (an image or a video) that will play on a loop in full-screen when listeners are in-focus<!-- --> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">To use Canvas via the Ads API: When sending a request to the <a data-encore-id="textLink" class="Link-sc-k8gsk-0 flYERd" href="/documentation/ads-api/reference/v2.0/createAd">Create</a> or <a data-encore-id="textLink" class="Link-sc-k8gsk-0 flYERd" href="/documentation/ads-api/reference/v2.0/updateAd">Update</a> Ad endpoints, specify an image or video asset ID under the optional field <code>canvas_asset_id</code> (nested under the <code>assets</code> object)</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">This feature is only available for ads created under ad sets where the <code>format</code> is <code>&quot;AUDIO&quot;</code> (not available for <code>&quot;VIDEO&quot;</code>)</li> </ul> </li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Relaxation of ad set start/end date validation logic: The validation logic under the <a data-encore-id="textLink" class="Link-sc-k8gsk-0 flYERd" href="/documentation/ads-api/reference/v2.0/updateAdSet">Update Ad Set</a> endpoint has been relaxed so that users may now shorten the schedule of an ad set (previously it could only be extended)</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Relaxation of requirements when creating or updating an image asset: If a user calls the <a data-encore-id="textLink" class="Link-sc-k8gsk-0 flYERd" href="/documentation/ads-api/reference/v2.0/createAsset">Create</a> or <a data-encore-id="textLink" class="Link-sc-k8gsk-0 flYERd" href="/documentation/ads-api/reference/v2.0/updateAsset">Update</a> Asset endpoints and specifies the <code>asset_type</code> as <code>&quot;IMAGE&quot;</code>, they are no longer required to specify <code>asset_subtype</code> as well<!-- --> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Previously, users were required to specify <code>asset_subtype</code> as either <code>&quot;LOGO&quot;</code> or <code>&quot;COMPANION&quot;</code> when creating an image asset, but now <code>asset_subtype</code> will automatically default to <code>&quot;USER_UPLOADED_IMAGE&quot;</code> for all image assets and is not required in the request to create an image asset</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Requests that continue to specify <code>&quot;LOGO&quot;</code> or <code>&quot;COMPANION&quot;</code> under the <code>asset_subtype</code> field will continue to work, but these values will be automatically overriden with <code>&quot;USER_UPLOADED_IMAGE&quot;</code></li> </ul> </li> </ul> </li> </ul> <div class="sc-9e80177b-1 ifxrgl"><h3 class="encore-text encore-text-title-small" data-encore-id="text" id="january-2024">January 2024</h3></div> <p data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 ckCbjl">The following updates have been made to the latest version (v2) of the Ads API.</p> <div class="sc-9e80177b-1 ifxrgl"><h4 class="encore-text encore-text-body-medium-bold" data-encore-id="text" id="whats-new-2">What&#x27;s New</h4></div> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Reporting updates:<!-- --> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">New metrics <code>VIDEO_EXPANDS</code> and <code>VIDEO_EXPAND_RATE</code> available under the <a data-encore-id="textLink" class="Link-sc-k8gsk-0 flYERd" href="/documentation/ads-api/reference/v2.0/getAggregateReport">Get Aggregate Report</a> endpoint for campaigns using the Video Views objective</li> </ul> </li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Campaign Management updates:<!-- --> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">New call-to-action text enum value<code>&quot;WATCH NOW&quot;</code> is now available under the <a data-encore-id="textLink" class="Link-sc-k8gsk-0 flYERd" href="/documentation/ads-api/reference/v2.0/createAd">Ad</a> entity</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Support for bulk postal code upload: Users can now search for up to 1000 postal codes via the <code>ids</code> field under <a data-encore-id="textLink" class="Link-sc-k8gsk-0 flYERd" href="/documentation/ads-api/reference/v2.0/getGeoTargets">Get Geo Targets</a> (previously this was limited to 50 postal codes)</li> </ul> </li> </ul> <div class="sc-9e80177b-1 ifxrgl"><h4 class="encore-text encore-text-body-medium-bold" data-encore-id="text" id="documentation-updates-1">Documentation Updates</h4></div> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Updates to our <a data-encore-id="textLink" class="Link-sc-k8gsk-0 flYERd" href="/documentation/ads-api#versioning">Versioning</a> policy:<!-- --> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Added new release calendar to provide context on our release cadence</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Removed reference to minor versions -- all new version releases will be released as new major versions moving forward</li> </ul> </li> </ul> <div class="sc-9e80177b-1 ifxrgl"><h3 class="encore-text encore-text-title-small" data-encore-id="text" id="december-2023">December 2023</h3></div> <p data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 ckCbjl">The following updates have been made to the latest version (v2) of the Ads API.</p> <div class="sc-9e80177b-1 ifxrgl"><h4 class="encore-text encore-text-body-medium-bold" data-encore-id="text" id="whats-new-3">What&#x27;s New</h4></div> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Update to <a data-encore-id="textLink" class="Link-sc-k8gsk-0 flYERd" href="/documentation/ads-api/reference/v2.0/createAdSet">Create Ad Set</a> endpoint: New optional parameter <code>pacing</code> has been added with the following allowed values – these are immutable after ad set creation:<!-- --> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>PACING_ASAP</code>: Deliver ads at an accelerated pace. Delivery stops when daily or lifetime budget is spent</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>PACING_EVEN</code>: Deliver ads throughout your selected schedule at a standard pace.</li> </ul> </li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Update to <a data-encore-id="textLink" class="Link-sc-k8gsk-0 flYERd" href="/documentation/ads-api/reference/v2.0/createAdSet">Create Ad Set</a>, <a data-encore-id="textLink" class="Link-sc-k8gsk-0 flYERd" href="/documentation/ads-api/reference/v2.0/updateAdSet">Update Ad Set</a>, <a data-encore-id="textLink" class="Link-sc-k8gsk-0 flYERd" href="/documentation/ads-api/reference/v2.0/estimateBid">Estimate Bid</a>, and <a data-encore-id="textLink" class="Link-sc-k8gsk-0 flYERd" href="/documentation/ads-api/reference/v2.0/estimateAudience">Estimate Audience</a> endpoints:<!-- --> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">The max allowed targeted age has been increased to 99 (was previously 65)</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">The parameter <code>sensitive_topic_exclusion_ids</code> under the <code>targets</code> object has been marked as deprecated in v2 and will be sunset in the next version bump (timing TBD) – it is being replaced with new optional parameter <code>sensitive_topic_exclusions</code> which allows users to specify separate filter levels for individual sensitive topic ids, or a single global filter to be applied to all sensitive topics<!-- --> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Allowed values for the new <code>filter_option</code> parameter (nested under <code>sensitive_topic_exclusions</code>):<!-- --> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>STANDARD</code> (default): Provides the full breadth of podcasts eligible for ads.</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>PARTIAL</code>: May include audio of “real-world” alcohol/tobacco use, or dramatic depictions or educational coverage of alcohol/tobacco use; may include dramatic and non-graphic depiction, edu-tainment, op-ed coverage, or breaking news of crime/violence or weapons; may include dramatic depictions or discussion of drug use for entertainment or journalistic purposes (including discussion of addiction recovery); may include depictions of recreational gambling or news coverage of gambling legislation; may include dramatic or graphic depictions of hate speech/acts in an entertainment context, or audio of “real-world” hate speech for discussion purposes; may include dramatic and non-graphic depictions of sexual acts in an entertainment context; may include discussion or discussion or references to past terrorist events/groups, without graphic details.</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>LIMITED</code>: May include informal mentions of alcohol brands/use, drug use, gambling, smoking/tobacco products, or weapons; as well as educational or informative discussions of criminal reform/past unlawful criminal activity, hate speech/acts, sexual relationships/sexuality or terrorism.</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>RESTRICTED</code>: Avoid placements that contain any reference to the sensitive topic(s). Total exclusion of the sensitive topic(s) is not guaranteed.</li> </ul> </li> </ul> </li> </ul> </li> </ul> <div class="sc-9e80177b-1 ifxrgl"><h4 class="encore-text encore-text-body-medium-bold" data-encore-id="text" id="breaking-changesdeprecations">Breaking Changes/Deprecations</h4></div> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">[Breaking Change] Update to the <a data-encore-id="textLink" class="Link-sc-k8gsk-0 flYERd" href="/documentation/ads-api/reference/v2.0/updateAdSet">Update Ad Set</a> and <a data-encore-id="textLink" class="Link-sc-k8gsk-0 flYERd" href="/documentation/ads-api/reference/v2.0/updateCampaign">Update Campaign</a> endpoints: we’re removing support for archiving ad sets and campaigns – effective December 12th, 2023, the API will return a validation error when users attempt to set the <code>status</code> parameter to <code>ARCHIVED</code> for an ad set or a campaign</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">[Breaking Change] Update to <a data-encore-id="textLink" class="Link-sc-k8gsk-0 flYERd" href="/documentation/ads-api/reference/v2.0/estimateAudience">Estimate Audience</a> endpoint: the parameter <code>bid_micro_amount</code> will be required starting on December 17th, 2023 -- impacted partners have been sent direct communications to update their integrations</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">[Non-Breaking Change, Deprecation] Update to <a data-encore-id="textLink" class="Link-sc-k8gsk-0 flYERd" href="/documentation/ads-api/reference/v2.0/estimateBid">Estimate Bid</a> endpoint: <code>start_date</code> and <code>end_date</code> have been marked as deprecated and are no longer required – in the next version bump, these parameters removed from under this endpoint</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">v1 to v1.4 of the Ads API was sunset on November 27, 2023 – these endpoints are no longer available and any partners that have still yet to migrate to v2 should do so</li> </ul> <div class="sc-9e80177b-1 ifxrgl"><h4 class="encore-text encore-text-body-medium-bold" data-encore-id="text" id="documentation-updates-2">Documentation Updates</h4></div> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Added a new section on <a data-encore-id="textLink" class="Link-sc-k8gsk-0 flYERd" href="/documentation/ads-api#breaking-v-non-breaking-changes-policy">Breaking v. Non-Breaking Changes Policy</a> to our API Design documentation which provides specific examples of breaking vs non-breaking changes</li> </ul> <div class="sc-9e80177b-1 ifxrgl"><h3 class="encore-text encore-text-title-small" data-encore-id="text" id="november-2023">November 2023</h3></div> <p data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 ckCbjl">The following updates have been made to the latest version (v2) of the Ads API.</p> <div class="sc-9e80177b-1 ifxrgl"><h4 class="encore-text encore-text-body-medium-bold" data-encore-id="text" id="whats-new-4">What&#x27;s New</h4></div> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Reporting updates:<!-- --> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Updates to <a data-encore-id="textLink" class="Link-sc-k8gsk-0 flYERd" href="/documentation/ads-api/reference/v2.0/getAggregateReport">Get Aggregate Report</a> endpoint:<!-- --> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">We’ve restored support for filtering by multiple <code>entity_ids</code> (campaign/ad set/ad IDs) in a single call when requesting daily and hourly granularity<!-- --> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">NOTE: A maximum of 50 <code>entity_ids</code> can be included in a single request</li> </ul> </li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Users may now filter ads by campaign IDs when requesting lifetime granularity – previously, requests with <code>entity_type=CAMPAIGN</code> and <code>entity_ids_type=AD</code> would result in a validation error</li> </ul> </li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Update to <a data-encore-id="textLink" class="Link-sc-k8gsk-0 flYERd" href="/documentation/ads-api/reference/v2.0/getAggregateReport">Get Aggregate Report</a> and <a data-encore-id="textLink" class="Link-sc-k8gsk-0 flYERd" href="/documentation/ads-api/reference/v2.0/getAudienceInsightReport">Get Insight Report</a> endpoints: We’ve removed the validation rule that previously required <code>report_start</code> and <code>report_end</code> to be in the past – requests where <code>report_start</code> and/or <code>report_end</code> are in the future will no longer result in a validation error<!-- --> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">This means that users requesting <code>granularity=DAY</code> under Get Aggregate Report are now able to request data for the current day by setting <code>report_end</code> to tomorrow’s date (e.g., if today is November 14, 2023 in UTC, <code>report_end</code> should be set to <code>2023-11-15T00:00:00Z</code> to return data up to today)</li> </ul> </li> </ul> </li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">The ability to query by IDs has been added to the <a data-encore-id="textLink" class="Link-sc-k8gsk-0 flYERd" href="/documentation/ads-api/reference/v2.0/getEpisodeTopicTargets">Get Podcast Episode Topic Targets</a>, <a data-encore-id="textLink" class="Link-sc-k8gsk-0 flYERd" href="/documentation/ads-api/reference/v2.0/getSensitiveTopicTargets">Get Sensitive Topic Targets</a>, <a data-encore-id="textLink" class="Link-sc-k8gsk-0 flYERd" href="/documentation/ads-api/reference/v2.0/getGenreTargets">Get Genre Targets</a>, Get Playlist Targets, and <a data-encore-id="textLink" class="Link-sc-k8gsk-0 flYERd" href="/documentation/ads-api/reference/v2.0/getPodcastShows">Get Podcast Shows</a>) endpoints</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Update to <a data-encore-id="textLink" class="Link-sc-k8gsk-0 flYERd" href="/documentation/ads-api/reference/v2.0/getGeoTargets">Get Geo Targets</a> endpoint: <code>country_code</code> is no longer required when requesting <code>types=COUNTRY</code> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">This means that users can now retrieve a list of all allowed country geo targets by requesting <code>types=COUNTRY</code> and leaving all other query parameters blank</li> </ul> </li> </ul> <div class="sc-9e80177b-1 ifxrgl"><h4 class="encore-text encore-text-body-medium-bold" data-encore-id="text" id="breaking-changesdeprecations-1">Breaking Changes/Deprecations</h4></div> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">[ACTION REQUIRED] v1-v1.4 of the Ads API was deprecated on November 13, 2023. All v1-v1.4 endpoints will be sunset on November 27, 2023, at which point calls to v1-v1.4 endpoints will fail. All partners must migrate to v2 by this date in order to avoid disruptions to their integrations.</li> </ul> <div class="sc-9e80177b-1 ifxrgl"><h4 class="encore-text encore-text-body-medium-bold" data-encore-id="text" id="documentation-updates-3">Documentation Updates</h4></div> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Update to our <a data-encore-id="textLink" class="Link-sc-k8gsk-0 flYERd" href="/documentation/ads-api#versioning">Versioning</a> policy: Effective November 15, 2023, the Ads API team will consider adding new enum fields as a non-breaking change and we expect our consumers to adjust their code to allow for this convention. Previously, we had not defined the expected behavior for this type of change.</li> </ul> <div class="sc-9e80177b-1 ifxrgl"><h3 class="encore-text encore-text-title-small" data-encore-id="text" id="october-2023">October 2023</h3></div> <p data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 ckCbjl">The following updates have been made to the latest version (v2) of the Ads API.</p> <div class="sc-9e80177b-1 ifxrgl"><h4 class="encore-text encore-text-body-medium-bold" data-encore-id="text" id="whats-new-5">What&#x27;s New</h4></div> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Launch of the new video views campaign objective:<!-- --> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">New value <code>VIDEO_VIEWS</code> is now available for the <code>objective</code> parameter under the <a data-encore-id="textLink" class="Link-sc-k8gsk-0 flYERd" href="/documentation/ads-api/reference/v2.0/createCampaign">Create Campaign</a> endpoint</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">New field (i.e., metric) called <code>VIDEO_VIEWS</code> is now available under the <a data-encore-id="textLink" class="Link-sc-k8gsk-0 flYERd" href="/documentation/ads-api/reference/v2.0/getAggregateReport">Get Aggregate Report</a> and <a data-encore-id="textLink" class="Link-sc-k8gsk-0 flYERd" href="/documentation/ads-api/reference/v2.0/getAudienceInsightReport">Get Insights Report</a> endpoints</li> </ul> </li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Other reporting updates:<!-- --> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">When requesting <code>entity_type</code> = <code>AD_SET</code> or <code>AD</code> and <code>granularity</code> = <code>LIFETIME</code>, any entity can now be used for filtering (e.g., at lifetime granularity, users can now filter Ads by Campaign IDs whereas previously they were only able to filter Ads by Ad IDs).<!-- --> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">NOTE: If requesting <code>entity_type</code> = <code>CAMPAIGN</code>, only Campaign IDs can be used for filtering</li> </ul> </li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Restored support for requesting <code>report_start</code> and <code>report_end</code> when requesting <code>LIFETIME</code> granularity (NOTE: The date range specified for report start/end must be 90 days or less, as is already the case for <code>HOUR</code> and <code>DAY</code> granularity requests)</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Improved 400 error messaging to more clearly explain the underlying issue with the request for several scenarios</li> </ul> </li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Other campaign management updates:<!-- --> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Added new parameter <code>campaign_ids</code> to Get Ad Sets endpoint to enable filtering by one or more campaign IDs</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Added new parameter <code>ad_set_ids</code> to Get Ads endpoint to enable filtering by one or more ad set IDs</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Create &amp; Update Ad Set:<!-- --> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">When creating or updating an ad set, the start date must now only be 1 hour in the future (previously we required it to start at least 24 hrs in the future)</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">[Bug Fix] The minimum allowed lifetime budget is now ~$250 regardless of targeted country; previous issue where an error was sometimes returned when setting a lifetime budget over ~$250 has been resolved</li> </ul> </li> </ul> </li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">New endpoints:<!-- --> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Get Sensitive Topic targets: Retrieve allowed sensitive topic target values, used for excluding sensitive podcast topics from possible ad placements</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Get Podcast Episode Topic targets: Retrieve allowed podcast episode target values, used for targeting relevant podcast episode topics</li> </ul> </li> </ul> <div class="sc-9e80177b-1 ifxrgl"><h4 class="encore-text encore-text-body-medium-bold" data-encore-id="text" id="breaking-changesdeprecations-2">Breaking Changes/Deprecations</h4></div> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">[ACTION REQUIRED] Upcoming deprecation deadline: v1 through v1.4 of the Ads API will be deprecated on November 13th, 2023. All partners must migrate to v2 by this date in order to avoid disruptions to their integrations.</li> </ul> <div class="sc-9e80177b-1 ifxrgl"><h4 class="encore-text encore-text-body-medium-bold" data-encore-id="text" id="documentation-updates-4">Documentation Updates</h4></div> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Added more detailed descriptions to reporting endpoint parameters to clarify expected behavior</li> </ul> <div class="sc-9e80177b-1 ifxrgl"><h3 class="encore-text encore-text-title-small" data-encore-id="text" id="september-2023">September 2023</h3></div> <p data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 ckCbjl">The following updates have been made to the latest version (v2) of the Ads API.</p> <div class="sc-9e80177b-1 ifxrgl"><h4 class="encore-text encore-text-body-medium-bold" data-encore-id="text" id="whats-new-6">What&#x27;s New</h4></div> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Updates to reporting endpoints (<a data-encore-id="textLink" class="Link-sc-k8gsk-0 flYERd" href="/documentation/ads-api/reference/v2.0/getAggregateReport">Get Aggregate Report</a> &amp; <a data-encore-id="textLink" class="Link-sc-k8gsk-0 flYERd" href="/documentation/ads-api/reference/v2.0/getAudienceInsightReport">Get Insights Report</a>) in effect as of September 7th, 2023:<!-- --> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Zero-stat campaigns (i.e., campaigns that have not yet been trafficked) are now automatically included in reports</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Updates to the <code>SPEND</code> field:<!-- --> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>SPEND</code> is now capped based on billable impressions; this means that any spend tied to delivery over the specified budget is now filtered out in order to match the Ad Studio UI’s logic</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>SPEND</code> is now reported in standard units instead of in micro amounts (e.g., 1800 dollars and 31 cents is now reported as <code>1800.31</code> instead of <code>1800310000</code> as previously)</li> </ul> </li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Updates relevant for Get Aggregate Report by Ad Account ID endpoint only:<!-- --> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">The parameters <code>entity_ids</code> and <code>entity_ids_type</code> are now required when requesting <code>DAY</code> or <code>HOUR</code> granularity</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Removed support for filtering by multiple entity IDs when <code>DAY</code> or <code>HOUR</code> granularity is requested -- these requests must be filtered by a single entity ID</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">When requesting <code>HOUR</code> granularity, the API will only return data for the last 14 days</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">When requesting <code>DAY</code> granularity:<!-- --> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">The maximum allowed difference between <code>report_start</code> and <code>report_end</code> is 90 days – there is no limit on how far back in time <code>report_start</code> and <code>report_end</code> can go though</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">The timestamps for <code>report_start</code> and <code>report_end</code> must be rounded to the nearest day (e.g., <code>2023-09-15T00:00:00Z</code>)</li> </ul> </li> </ul> </li> </ul> </li> </ul> <div class="sc-9e80177b-1 ifxrgl"><h4 class="encore-text encore-text-body-medium-bold" data-encore-id="text" id="breaking-changesdeprecations-3">Breaking Changes/Deprecations</h4></div> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">[ACTION REQUIRED] Upcoming deprecation deadline: v1 through v1.4 of the Ads API will be deprecated on November 13th, 2023 and sunset on November 27, 2023. All partners must migrate to v2 by this date in order to avoid disruptions to their integrations.</li> </ul> <div class="sc-9e80177b-1 ifxrgl"><h3 class="encore-text encore-text-title-small" data-encore-id="text" id="august-2023">August 2023</h3></div> <div class="sc-9e80177b-1 ifxrgl"><h4 class="encore-text encore-text-body-medium-bold" data-encore-id="text" id="announcing-ads-api-v2">Announcing Ads API v2!</h4></div> <p data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 ckCbjl">All of the following updates are included under a new major version (v2) released on August 8, 2023.</p> <div class="sc-9e80177b-1 ifxrgl"><h4 class="encore-text encore-text-body-medium-bold" data-encore-id="text" id="whats-changing">What&#x27;s Changing</h4></div> <div class="sc-9e80177b-1 ifxrgl"><h4 class="encore-text encore-text-body-medium-bold" data-encore-id="text" id="general">General</h4></div> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">The Campaign Management API is now generally available! These endpoints no longer require a manual allowlisting process to access.</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">[Breaking Change] The following entities have been deprecated from the API:<!-- --> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>advertiser</code>: All references to advertiser, including advertiser endpoints, have been removed</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>organization</code>: All references to organization have been removed</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>ad_set_links</code>: All references to ad_set_links, including Ad Set Link endpoints, have been removed</li> </ul> </li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">[Breaking Change] All resource names now follow snake_case convention (previously in v1, camelCase was used for path resources)</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">[Breaking Change] All <code>update</code> requests now use the PATCH method to support partial data updates (previously in v1, PUT was used even though the resource is not fully replaced)</li> </ul> <div class="sc-9e80177b-1 ifxrgl"><h4 class="encore-text encore-text-body-medium-bold" data-encore-id="text" id="paging">Paging</h4></div> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">[Breaking Change] <code>page_size</code> has been renamed to <code>limit</code> in all instances (previously in v1, both <code>page_size</code> and <code>limit</code> were used)</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">[New] <code>paging</code> object is now returned if pagination is specified. Example:</li> </ul> <div class="ch-codeblock not-prose " data-ch-theme="s4d"><div class="ch-code-wrapper ch-code" data-ch-measured="false"><code class="ch-code-scroll-parent"><br/><div><span class="ch-code-line-number">_<!-- -->10</span><div style="display:inline-block;margin-left:16px"><span> &quot;paging&quot;: {</span></div></div><div><span class="ch-code-line-number">_<!-- -->10</span><div style="display:inline-block;margin-left:16px"><span> &quot;page_size&quot;: 50,</span></div></div><div><span class="ch-code-line-number">_<!-- -->10</span><div style="display:inline-block;margin-left:16px"><span> &quot;total_results&quot;: 17,</span></div></div><div><span class="ch-code-line-number">_<!-- -->10</span><div style="display:inline-block;margin-left:16px"><span> &quot;offset&quot;: 0</span></div></div><div><span class="ch-code-line-number">_<!-- -->10</span><div style="display:inline-block;margin-left:16px"><span> }</span></div></div><br/></code></div></div> <div class="sc-9e80177b-1 ifxrgl"><h4 class="encore-text encore-text-body-medium-bold" data-encore-id="text" id="ad-accounts">Ad Accounts</h4></div> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Endpoint to query a single ad account by ID called <code>Get an Ad Account</code> is now available</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Get Ad Accounts endpoint path has been shortened to GET /ad_accounts (was previously GET /currentUser/adAccounts)</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">[Breaking Change] The following parameters have been deprecated from the ad account entity:<!-- --> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>organization_id</code></li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>ad_studio_lead</code></li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>description</code></li> </ul> </li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">[Breaking Change] The following parameters have been renamed under the ad account entity:<!-- --> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>last_modified</code> is now <code>updated_at</code></li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>iso_country_code</code> is now <code>country_code</code></li> </ul> </li> </ul> <div class="sc-9e80177b-1 ifxrgl"><h4 class="encore-text encore-text-body-medium-bold" data-encore-id="text" id="campaigns">Campaigns</h4></div> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">[New] The following parameters have been added to the campaign entity:<!-- --> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>updated_at</code>: When the campaign was last updated (read only)</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>purchase_order</code>: Intended for organizational purposes; if specified, it will be displayed on invoices (optional for Create Campaign requests and cannot be updated)</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>objective</code>: The objective of the campaign, previously referred to as <code>bid_optimization_goal</code> at the ad set level (required for Create Campaign requests and cannot be updated)</li> </ul> </li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">[Breaking Change] The following parameters have been deprecated from the campaign entity:<!-- --> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>description</code></li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>advertiser_id</code></li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>landing_page_domain</code></li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>version</code></li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>ad_set_ids</code></li> </ul> </li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">[Breaking Change] The following endpoints have been deprecated:<!-- --> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Update Campaign Status</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Get Campaigns (users can continue to call Get Campaigns by Ad Account ID and Get Campaigns by ID endpoints to retrieve campaigns)</li> </ul> </li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">[Breaking Change] The following filters under Get Campaigns by Ad Account ID endpoint have been deprecated:<!-- --> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>ids</code> (ability to query by a single campaign ID still supported under Get Campaign by ID endpoint, but querying by an array of IDs is no longer supported)</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>advertiser_ids</code></li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>statuses</code></li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>name</code></li> </ul> </li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">[Breaking Change] The following parameters have been renamed under the campaign entity:<!-- --> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>created_on</code> is now <code>created_at</code></li> </ul> </li> </ul> <div class="sc-9e80177b-1 ifxrgl"><h4 class="encore-text encore-text-body-medium-bold" data-encore-id="text" id="ad-sets">Ad Sets</h4></div> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">[New] The following parameters have been added to the ad set entity:<!-- --> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>updated_at</code>: When the campaign was last updated (read only)</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">[Breaking Change] <code>category</code>: A category that most closely matches the content of the ad(s); certain categories may be subject to restrictions (required for Create Ad Set requests and can be updated)</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>podcast_episode_topics</code>: Podcast episode topics to target (optional for Create Ad Set requests and can be updated)</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>sensitive_topic_exclusions</code>: Sensitive podcast episode topics to exclude from ad placements (optional for Create Ad Set requests and can be updated)</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>language</code>: Languages to target; languages are based on the language users use on Spotify (optional for Create Ad Set requests and cannot be updated)</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>interests</code>: Interests to target; interests are based on listening habits and playlist preferences (optional for Create Ad Set requests and can be updated)</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>exclude_placements</code>: When targeting a market where podcast ads are supported, placements will automatically default to include both podcast and music; users can set this parameter to <code>PODCAST</code> in order to limit their ad placement to music only (optional for Create Ad Set requests and can be updated)</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>delivery</code>: Use to pause/resume ad set delivery; if set to <code>ON</code>, ad set will be served (once ad review is passed and start date occurs) and if set to <code>OFF</code>, ad set will not be served (optional for Create Ad Set requests and can be updated)</li> </ul> </li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">[Breaking Change] The following parameters have been deprecated from the ad set entity:<!-- --> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>advertiser_id</code></li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>ad_ids</code> (ability to link an ad to an ad set is still supported at the ad entity level)</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>active_status</code></li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>ad_set_links</code></li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>custom_audience_ids</code></li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>serving_issues</code></li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>version</code></li> </ul> </li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">[Breaking Change] The following parameters have had schema changes or been renamed under the ad set entity:<!-- --> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>targeting has been renamed to </code>targets`</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>budget</code> object added to the Create Ad Set request in order to match response schema:<!-- --> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>budget_micro_amount</code> in the Create Ad Set request is now nested under the <code>budget</code> object and renamed to <code>micro_amount</code> (previously <code>budget_micro_amount</code> was a root-level parameter)</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>type</code> parameter has been added to specify a <code>DAILY</code> or <code>LIFETIME</code> budget (required for Create Ad Set requests)</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>country_code</code> has been renamed to <code>currency</code> (read only)</li> </ul> </li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Names of the following targeting parameters have been simplified:<!-- --> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>gender_names</code> is now <code>genders</code></li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>platform_names</code> is now <code>platforms</code></li> </ul> </li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Geo targeting parameters (<code>country_code</code>, <code>regions</code>, <code>dmas</code>, <code>cities</code>, <code>postal_codes</code>) are now nested within a new - <code>geo_targets</code> object under <code>targets</code> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">All geo target IDs are now string data type (previously they were integers [int32])</li> </ul> </li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Metadata (e.g., <code>name</code>) is no longer returned with targeting parameters in Get Ad Set by Ad Account ID response – objects have been flattened into arrays where only the target ID(s) are included now<!-- --> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Metadata is still included in Get Ad Set by Ad Set ID response</li> </ul> </li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>artist_promotion</code> has been renamed to <code>promotion</code> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>name</code> parameter under <code>artist_promotion</code> has been removed</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>artist_promotion_goal</code> has been renamed to <code>promotion_goal</code></li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Changes to the following promotion goal enum values:<!-- --> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>ARTIST_CONTENT</code> has been removed (artist targeting is now allowed for any ad set)</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>PODCAST_PROMO</code> has been added (for promoting a podcast)</li> </ul> </li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>artist_promotion_target</code> object has been removed and replaced with <code>promotion_target_id</code> parameter</li> </ul> </li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>bid_optimization_goal</code> has been moved to the campaign entity level and renamed <code>objective</code></li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>format</code> has been moved out of the <code>targeting</code> object and is now a root-level parameter, and has been renamed to - <code>asset_format</code></li> </ul> </li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">[Breaking Change] The following endpoints have been deprecated:<!-- --> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Update Ad Set Status (ability to update campaign status has been consolidated into Create and Update Ad Set endpoints in v2)</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Get Ad Sets (users can continue to call Get Campaigns by Ad Account ID and Get Campaigns by ID endpoints to retrieve campaigns)</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Get Ad Set Links</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Get Ad Sets by Campaign</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Update Ad Set Link Status</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Get Ad Set Serving Status</li> </ul> </li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">[Breaking Change] The following filters under Get Ad Sets by Ad Account ID endpoint have been deprecated:<!-- --> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">ids (ability to query by a single ad set ID still supported under Get Ad Set by ID endpoint, but querying by an array of IDs is no longer supported)<!-- --> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>advertiser_ids</code></li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>campaign_ids</code></li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>ad_ids</code></li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>active_statuses</code></li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>statuses</code></li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>ad_stauses</code></li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>name</code></li> </ul> </li> </ul> </li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">[Breaking Change] The following validation logic has been added:<!-- --> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Minimum budget amount</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Minimum bid amount</li> </ul> </li> </ul> <div class="sc-9e80177b-1 ifxrgl"><h4 class="encore-text encore-text-body-medium-bold" data-encore-id="text" id="ads">Ads</h4></div> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">[New] The following parameters have been added to the ad entity:<!-- --> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">updated_at: When the ad was last updated (read only)</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">call to action: The metadata for the behavior of the call-to-action button<!-- --> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>text</code>: The text used for the call-to-action button -- currently defaults to <code>LEARN MORE</code> but option to configure is coming soon (by end of August 2023)</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>clickthrough_url</code>: The link to the ads desired landing page.</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>language</code>: The language in which the call-to-action text is presented -- currently defaults to &quot;ENGLISH&quot; but option to configure is coming soon (by end of August 2023)</li> </ul> </li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>delivery</code>: Use to pause/resume ad delivery; if set to <code>ON</code>, ad will be served (once ad review is passed and start date occurs) and if set to <code>OFF</code>, ad will not be served (optional for Create Ad requests and can be updated)</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>ad_preview_url</code>: Link to view a preview of the ad</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>ad_set_id</code>: The ID of the ad set to which the ad belongs</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>logo_image_asset</code>: Part of <code>assets</code> object; logo image for the ad (optional for Create Ad requests and can be updated)</li> </ul> </li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">[Breaking Change] The following parameters have been deprecated from the ad entity:<!-- --> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>advertiser_id</code></li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>landing_page_domain</code></li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>version</code></li> </ul> </li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">[Breaking Change] The following endpoints have been deprecated:<!-- --> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Get Ads (users can continue to call Get Ads by Ad Account ID and Get Ads by ID endpoints to retrieve campaigns)</li> </ul> </li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">[Breaking Change] The following parameters have had schema changes or been renamed under the ad entity:<!-- --> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>created</code> has been renamed to <code>created_at</code></li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>brand_name</code> has been renamed to <code>advertiser_name</code></li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>clickthrough_url</code> is now nested under the <code>call_to_action</code> object</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>assets</code> object has been simplified to contain the following parameters:<!-- --> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>asset_id</code>: ID of an audio or video asset (required on Create Ad requests and can be updated)</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>companion_asset_id</code>: ID of a companion image asset (required on Create Ad requests and can be updated)</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>logo_asset_id</code>: Nested under <code>assets</code> object - ID of a logo image asset (optional on Create Ad requests and can be updated)</li> </ul> </li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>third_party_viewability_tracking</code> has been renamed to <code>third_party_tracking</code> and contains the following parameters:<!-- --> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>measurement_partner</code>: Name of the third-party measurement partner; <code>DCM</code> is now supported along with <code>IAS</code></li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>url</code>: Third-party tracking URL</li> </ul> </li> </ul> </li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">[Breaking Change] The following filters have been deprecated under Get Ads by Ad Account ID endpoint:<!-- --> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>ids</code> (ability to query by a single ad ID still supported under Get Ad by ID endpoint, but querying by an array of IDs is no longer supported)</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>ad_set_ids</code></li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>statuses</code></li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>name</code></li> </ul> </li> </ul> <div class="sc-9e80177b-1 ifxrgl"><h4 class="encore-text encore-text-body-medium-bold" data-encore-id="text" id="assets">Assets</h4></div> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">[Breaking Change] Get Audio Assets, Get Video Assets, and Get Image Assets endpoints have been deprecated and replaced with a single endpoint called <code>Get Assets by Asset Type and Ad Account</code></li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">[Breaking Change] Get Audio Asset, Get Video Asset, and Get Image Asset endpoints have been deprecated and replaced with a single endpoint called <code>Get Asset</code></li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">[Breaking Change] Get Fullmix Upload Url, Get Video Upload Url, and Get Image Upload Url endpoints have been deprecated and replaced with a single <code>Create Asset</code> endpoint</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">[New] The following endpoints have been added to enable asset upload:<!-- --> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Upload Asset: Upload image, audio, or video assets that are 25 MB or smaller</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Start Upload Chunked Asset: Start a chunked upload session for image, audio, or video assets (required for files that are 25 MB or larger)</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Transfer Chunked Asset: Continues the upload session of a chunked asset by transferring one section of binary media data</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Complete Upload Chunked Asset: Completes the upload session of a chunked asset</li> </ul> </li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">[New] Endpoint to update an asset called <code>Update Asset</code> is now available</li> </ul> <div class="sc-9e80177b-1 ifxrgl"><h4 class="encore-text encore-text-body-medium-bold" data-encore-id="text" id="targets">Targets</h4></div> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">[New] Support for the following new targeting types has been added:<!-- --> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Postal codes: Postal code IDs can be retrieved via Get Geo Targets endpoint and input as an optional parameter in ‘targeting’ under ad sets entities</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Interests: Interests can be retrieved via new endpoint Get Interest Targets and input as an optional parameter in ‘targeting’ under ad sets entities</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Languages: Languages can be retrieved via new endpoint Get Language Targets and input as an optional parameter in ‘targeting’ under ad sets entities</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Podcast episode topics: Only available for markets where podcast ads are supported – podcast episode topics can be retrieved via new endpoint Get Podcast Episode Targets and input as an optional parameter in ‘targeting’ under ad sets entities</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Podcast sensitive episode topic exclusion: Only available for markets where podcast ads are supported – podcast sensitive episode topics can be retrieved via new endpoint Get Interest Targets and input as an optional parameter in ‘targeting’ under ad sets entities</li> </ul> </li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">[Breaking Change] Consolidation of previous v1 targeting endpoints:<!-- --> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Get Artist Targets and Search Artist Targets have been consolidated into a single endpoint Get Artist Targets</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Get Genre Targets and Search Genre Targets have been consolidated into a single endpoint Get Genre Targets<!-- --> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Querying by ids is no longer supported</li> </ul> </li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Get Playlist Targets and Search Playlist Targets have been consolidated into a single endpoint Get Playlist Targets<!-- --> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Querying by ids is no longer supported</li> </ul> </li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Get Geo Targets and Search Geo Targets have been consolidated into a single endpoint Get Geo Targets<!-- --> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">New parameter <code>parent_geo_name</code> added to geo target entity</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Renamed <code>id</code> and <code>type</code> parameters to <code>geo_id</code> and <code>geo_type</code> under geo target entity</li> </ul> </li> </ul> </li> </ul> <div class="sc-9e80177b-1 ifxrgl"><h4 class="encore-text encore-text-body-medium-bold" data-encore-id="text" id="reporting">Reporting</h4></div> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">[Breaking Change] Create Report and Create Report by Ad Account have been deprecated and replaced with the following endpoints:<!-- --> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Get Aggregate Report by Ad Account Id: Returns aggregated ad campaign metrics based on requested fields and dimensions</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Get Insight Report by Ad Account Id: Returns ad campaign metrics broken out by audience insights (e.g., age, gender, genre) based on requested fields – available only as ad set level breakdown at lifetime granularity and does not support report start/end time filtering</li> </ul> </li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">[Breaking Change] The following <code>dimensions</code> values have been deprecated:<!-- --> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>YEAR</code></li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>MONTH</code></li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>CURRENCY</code></li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>COST_TYPE</code></li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>ADVERTISER</code></li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>DMA</code></li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>REGION</code></li> </ul> </li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">[Breaking Change] The following <code>fields</code> values have been deprecated:<!-- --> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>FETCHES</code></li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>RENDER_RATIO</code></li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>FETCH_REACH</code></li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>SERVES</code></li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>ERRORS</code></li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>COMPLETION_RATE</code></li> </ul> </li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">[Breaking Change] The following fields have been renamed:<!-- --> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>SERVE_REACH</code> is now <code>REACH</code></li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>SERVE_FREQ</code> is now <code>FREQUENCY</code></li> </ul> </li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">[Breaking Change] The following filters have been deprecated:<!-- --> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>advertiser_ids</code></li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>country_isos</code></li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>region_ids</code></li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>dma_ids</code></li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>platforms</code></li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>ad_set_start_dates</code></li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>ad_set_end_dates</code></li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>cost_type_filters</code></li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>organization_ids</code></li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>ad_account_ids</code> (all reports must now include a single ad account ID in the path but filtering by multiple ad account IDs is no longer supported)</li> </ul> </li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">[Breaking Change] Filtering by campaign, ad set, or ad ID(s) has been consolidated into two generic fields (previously this was supported via separate filters for each entity type):<!-- --> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">entity_ids: A list of one or more campaign, ad set, or ad IDs by which to filter reporting</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">entity_ids_type: The entity type of IDs contained in the entity_ids field – if entity_ids is set, this field is required.</li> </ul> </li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">[Breaking Change] Filtering by campaign, ad set, or ad ID status(es) has been consolidated into two generic fields:<!-- --> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">entity_status_type: The entity type of statuses contained in the statuses field</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">statuses: A list of one or more campaign, ad set, or ad statuses by which to filter reporting – If this field is set, the entity_status_type field is required</li> </ul> </li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">[New] The following audience insight dimensions have been added and are available under the Get Insight Report by Ad Account ID endpoint:<!-- --> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>AGE</code></li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>GENDER</code></li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>GENRE</code></li> </ul> </li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">[New] The following updates will go into effect on September 1, 2023:<!-- --> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Data refresh cadence will be increased to hourly (vs every few hours in v1-v1.4) – this will result in a discrepancy between UI and API stats for those who have not yet updated their integration to v2</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Zero-stat campaigns (i.e., campaigns that have not yet been trafficked) will automatically be included in reports</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">SPEND field will be capped based on billable impressions; this means that spend tied to delivery over the specified budget will now be filtered out in order to match the UI’s logic</li> </ul> </li> </ul> <div class="sc-9e80177b-1 ifxrgl"><h4 class="encore-text encore-text-body-medium-bold" data-encore-id="text" id="estimates">Estimates</h4></div> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Estimate Bid (formerly known as <code>Get Bid Estimate</code>)<!-- --> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">[Breaking Change] Get Bid Estimate endpoint has been shortened to POST <code>/estimates/bid</code> (was previously POST <code>/adAccounts/{ad_account_id}/estimate/bid</code>)</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">[Breaking Change] <code>budget_micro_amount</code> is no longer required in the request body</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">[Breaking Change] The following parameters are now required when fetching a bid estimate:<!-- --> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>start_date</code></li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>end_date</code></li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>asset_format</code></li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>bid_strategy</code></li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>currency</code></li> </ul> </li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">[Breaking Change] <code>bid_optimization_goal</code> has been renamed to <code>objective</code></li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">[New] The following optional request body parameters have been added:<!-- --> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">frequency_caps</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Under <code>targets</code> object:<!-- --> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>postal_code_ids</code> (nested under geo_targets)</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>podcast_episode_topic_ids</code></li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>sensitive_topic_exclusion_ids</code></li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>language</code></li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>interest_ids</code></li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>exclude_placements</code></li> </ul> </li> </ul> </li> </ul> </li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Estimate Audience (formerly known as <code>Get Audience Estimate</code>)<!-- --> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">[Breaking Change] Get Bid Estimate endpoint has been shortened to POST <code>/estimates/audience</code> (was previously POST <code>/adAccounts/{ad_account_id}/estimate/audience</code>)</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">[Breaking Change] ad_account_id is now a request body parameter (was previously a path parameter)</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">[Breaking Change] The following parameters are now required when fetching a bid estimate:<!-- --> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>start_date</code></li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>end_date</code></li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>asset_format</code></li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>bid_strategy</code></li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>budget</code> (type &amp; micro_amount)</li> </ul> </li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">[Breaking Change] <code>bid_optimization_goal</code> has been renamed to <code>objective</code></li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">[New] The following optional request body parameters have been added:<!-- --> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">frequency_caps</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Under <code>targets</code> object:<!-- --> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>postal_code_ids</code> (nested under geo_targets)</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>podcast_episode_topic_ids</code></li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>sensitive_topic_exclusion_ids</code></li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>language</code></li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>interest_ids</code></li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>exclude_placements</code></li> </ul> </li> </ul> </li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">[New] The following parameters have been added to the response body:<!-- --> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>estimated_frequency_min</code></li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>estimated_frequency_max</code></li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">forecast_type: The time granularity of the forecast -- if a &quot;LIFETIME&quot; budget type is specified, the API will return a single &quot;LIFETIME&quot; forecast type and if a &quot;DAILY&quot; budget type is specified, the API will return &quot;DAILY&quot;, &quot;WEEKLY&quot; and &quot;MONTHLY&quot; forecast types</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">likely_to_deliver_budget: Indicates the likelihood of spending most of the budget</li> </ul> </li> </ul> </li> </ul> <div class="sc-9e80177b-1 ifxrgl"><h4 class="encore-text encore-text-body-medium-bold" data-encore-id="text" id="ad-categories-new">Ad Categories [New]</h4></div> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Get Ad Categories endpoint: Ad categories can be retrieved via this endpoint and input under the <code>ad_category</code> parameter in the Create Ad Set request</li> </ul> <div class="sc-9e80177b-1 ifxrgl"><h4 class="encore-text encore-text-body-medium-bold" data-encore-id="text" id="podcast-shows-new">Podcast Shows [New]</h4></div> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Get Podcast Shows endpoint: Available for podcast promotion use only (not for targeting) – podcast shows can be retrieved via this endpoint and input under the <code>promotion_target_id</code> parameter in the Create Ad Set request</li> </ul> <div class="sc-9e80177b-1 ifxrgl"><h4 class="encore-text encore-text-body-medium-bold" data-encore-id="text" id="documentation-updates-5">Documentation Updates</h4></div> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Now that the Campaign Management API is in GA, mention of manual allowlisting process and closed beta requirements have been removed</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Versioning policy has been simplified and schedule has been updated to reflect November 13, 2023 deprecation date for v1.3-v1.4</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Filtering and Querying section has been removed</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Slicing section has been removed</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Object Hierarchy has been updated to reflect v2 changes</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Build a Campaign Guide has been updated based on new v2 specs</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Metrics Glossary has been updated to only reflect metrics included in v2</li> </ul> <div class="sc-9e80177b-1 ifxrgl"><h3 class="encore-text encore-text-title-small" data-encore-id="text" id="november-2022">November 2022</h3></div> <div class="sc-9e80177b-1 ifxrgl"><h4 class="encore-text encore-text-body-medium-bold" data-encore-id="text" id="announcing-ads-api-v14">Announcing Ads API v1.4</h4></div> <p data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 ckCbjl">All of the following updates are included under a new minor version (v1.4) released on November 29, 2022.</p> <p data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 ckCbjl"><strong>What&#x27;s New</strong></p> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Introducing new Click objective with accompanying Call-to-Action (“CTA”) card format<!-- --> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Spotify Ad Studio advertisers are now able to set up a click optimization goal for their campaigns along with reach and impressions goals introduced this year. Ads with click goal will be accompanied by a Call-to-Action card: a clickable ad experience consisting of an advertiser&#x27;s companion image, a name and a call-to-action button. After the initial ad is served, the message will resurface across the Spotify app making it easier for listeners to remember and take action.</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">New enum value <code>CLICKS</code> is available under the <code>bid_optimization_goal</code> parameter when <a data-encore-id="textLink" class="Link-sc-k8gsk-0 flYERd" href="/documentation/ads-api/reference/v1.4/post_ad_set">creating an ad set</a>, <a data-encore-id="textLink" class="Link-sc-k8gsk-0 flYERd" href="/documentation/ads-api/reference/v1.4/put_ad_set">updating an ad set</a>, and <a data-encore-id="textLink" class="Link-sc-k8gsk-0 flYERd" href="/documentation/ads-api/reference/v1.4/get_bid_estimate">retrieving bid/audience estimates</a></li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">CTA cards will be enabled for music ads only (not video) – <a data-encore-id="textLink" class="Link-sc-k8gsk-0 flYERd" href="/documentation/ads-api/reference/v1.4/post_ad">create ad</a> endpoint now includes:<!-- --> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">New required parameter <code>brand_name</code>: Displayed in ad</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">New optional parameter <code>tagline</code>: Displayed in CTA card, max 140 characters</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">These two parameters are included in the response when retrieving ads</li> </ul> </li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Enforcing new validation logic, see Breaking Changes/Deprecations section below for details</li> </ul> </li> </ul> <p data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 ckCbjl"><strong>Breaking Changes/Deprecations</strong></p> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">New parameter <code>brand_name</code> is now required when creating an ad</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Removed and replaced <code>slot_type</code> with <code>format</code> under ad sets/estimates targeting object</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Removed <code>country_codes</code> (array of string) under ad sets/estimates <code>targeting</code> object and replaced with <code>country_code</code> (string)</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Validation rules added:<!-- --> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Ad set start and end dates must be in the future</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Max ad set duration of 365 days</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Minimum length of 2 characters and maximum of 120 characters for campaigns, ad sets and ads entity names</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Only one country may be targeted per ad set</li> </ul> </li> </ul> <div class="sc-9e80177b-1 ifxrgl"><h3 class="encore-text encore-text-title-small" data-encore-id="text" id="august-2022">August 2022</h3></div> <p data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 ckCbjl">All of the following updates are included under the current version of the API v1.3:</p> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">New enum value <code>ARTIST_CONTENT</code> is available under the <code>artist_promotion_goal</code> parameter when <a data-encore-id="textLink" class="Link-sc-k8gsk-0 flYERd" href="/documentation/ads-api/reference/v1.3/post_ad_set">creating an ad set</a> or <a data-encore-id="textLink" class="Link-sc-k8gsk-0 flYERd" href="/documentation/ads-api/reference/v1.3/put_ad_set">updating an ad set</a>: Users can now specify when they are promoting an artist&#x27;s merch or concert by selecting this option (NOTE: <code>ARTIST_BOOST</code> should continue to be used when promoting an artist&#x27;s music on Spotify).</li> </ul> <div class="sc-9e80177b-1 ifxrgl"><h3 class="encore-text encore-text-title-small" data-encore-id="text" id="july-2022---v13">July 2022 - v1.3</h3></div> <div class="sc-9e80177b-1 ifxrgl"><h4 class="encore-text encore-text-body-medium-bold" data-encore-id="text" id="announcing-ads-api-v13">Announcing Ads API v1.3</h4></div> <p data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 ckCbjl">All of the following updates are included under a new minor version (v1.3) released July 2022.</p> <p data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 ckCbjl"><strong>What&#x27;s New</strong></p> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">New minor version v1.3 released. <em>Note: v1.1 and v1.2 will be fully deprecated on August 25, 2022. See <a data-encore-id="textLink" class="Link-sc-k8gsk-0 flYERd" href="/documentation/ads-api#versioning">Versioning</a> section for version schedules.</em></li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Addition of effective cost per mille and completed listen fields, <code>ECPM</code> and <code>ECPCL</code>, to <a data-encore-id="textLink" class="Link-sc-k8gsk-0 flYERd" href="/documentation/ads-api/reference/v1.4/get_report">reporting</a> endpoints. See <a data-encore-id="textLink" class="Link-sc-k8gsk-0 flYERd" href="/documentation/ads-api/guides#campaign-performance-metrics">Metrics Glossary</a> for detailed definitions.</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Ad sets and Estimates requests have been updated to use an auction pricing model, see &quot;Breaking Changes/Deprecations&quot; below for details</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>frequency_caps</code> is no longer a required parameter for <a data-encore-id="textLink" class="Link-sc-k8gsk-0 flYERd" href="/documentation/ads-api/reference/v1.4/post_ad_set">create ad sets</a> requests; it is now optional. If <code>frequency_caps</code> is not specified, API will default to the maximum allowed values:<!-- --> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">5 per day</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">35 per week</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">50 per month</li> </ul> </li> </ul> <p data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 ckCbjl"><strong>Breaking Changes/Deprecations</strong></p> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Addition of <code>bid_optimization_goal</code>, <code>bid_strategy</code>, and <code>bid_micro_amount</code> to ad sets output responses, as <em>required</em> fields to <a data-encore-id="textLink" class="Link-sc-k8gsk-0 flYERd" href="/documentation/ads-api/reference/v1.4/post_ad_set">create ad sets</a> requests, and as <em>optional</em> fields to <a data-encore-id="textLink" class="Link-sc-k8gsk-0 flYERd" href="/documentation/ads-api/reference/v1.4/put_ad_set">update ad sets</a> requests<!-- --> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Allowed values for <code>bid_optimization_goal</code> are:<!-- --> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>EVEN_IMPRESSION_DELIVERY</code>: We’ll aim to deliver as many impressions as possible to your target audience. Not available for active audio (CPCL) ad sets.</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>REACH</code>: We’ll aim to reach as many unique listeners as possible with your message.</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>AD_COMPLETES</code>: We’ll aim to deliver as many impressions as possible to your target audience. Available for active audio (CPCL) ad sets only.</li> </ul> </li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Allowed values for <code>bid_strategy</code> are:<!-- --> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>MAX_BID</code>: The bid you specify will act as a ceiling/cap.</li> </ul> </li> </ul> </li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">The following fields under the ad sets objects have been renamed:<!-- --> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>optimization</code> is now <code>artist_promotion</code></li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>optimization_goal</code> is now <code>artist_promotion_goal</code></li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>optimization_target</code> is now <code>artist_promotion_target</code></li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>optimization_target_type</code> is now <code>artist_promotion_target_type</code></li> </ul> </li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">The previous <code>/estimate</code> endpoints are deprecated and replaced with two new ones (<a data-encore-id="textLink" class="Link-sc-k8gsk-0 flYERd" href="/documentation/ads-api/reference/v1.4/get_bid_estimate">Get Bid Estimate</a> and <a data-encore-id="textLink" class="Link-sc-k8gsk-0 flYERd" href="/documentation/ads-api/reference/v1.4/get_audience_estimate">Get Audience Estimate</a>) that allow users to specify bid details:<!-- --> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>POST /v1.3/adAccounts/{ad_account_id}/estimate/audience</code> is replacing <code>POST /v1.2/estimate</code></li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>POST /v1.3/adAccounts/{ad_account_id}/estimate/bid</code> is replacing <code>POST /v1.2/adAccounts/{ad_account_id}/estimate/cost</code></li> </ul> </li> </ul> <p data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 ckCbjl"><strong>Documentation Updates</strong></p> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Migrated documentation to main portal <a data-encore-id="textLink" class="Link-sc-k8gsk-0 flYERd" href="/">Spotify for Developers</a></li> </ul> <div class="sc-9e80177b-1 ifxrgl"><h3 class="encore-text encore-text-title-small" data-encore-id="text" id="december-2021---v12">December 2021 - v1.2</h3></div> <div class="sc-9e80177b-1 ifxrgl"><h4 class="encore-text encore-text-body-medium-bold" data-encore-id="text" id="announcing-ads-api-v12">Announcing Ads API v1.2</h4></div> <p data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 ckCbjl">All of the following updates are included under a new minor version (v1.2) released December 2021.</p> <p data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 ckCbjl"><strong>What&#x27;s New</strong></p> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">New minor version v1.2 released</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Added new <a data-encore-id="textLink" class="Link-sc-k8gsk-0 flYERd" href="/documentation/ads-api/reference/v1.2/get_cost_estimate">pricing estimate endpoint</a> to estimate your CPM/CLCL/CPCV based on specified targeting parameters<!-- --> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>POST /adAccounts/{ad_account_id}/estimate/cost</code></li> </ul> </li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Added <code>custom_audience_ids</code> under the <code>targeting</code> parameter for ad sets<!-- --> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">You now have the option to specify custom audiences to target when creating/updating an ad set</li> </ul> </li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Added <code>third_party_viewability_tracking</code> for ads<!-- --> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">You now have the ability to set up third-party viewability tracking when creating/updating an ad</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">NOTE: This is currently only supported for measurement partner <code>IAS</code></li> </ul> </li> </ul> <p data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 ckCbjl"><strong>Breaking Changes/Deprecations</strong></p> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">“Flights” have been renamed “Ad Sets”<!-- --> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">We have renamed all instances of these entities in v1.2 in order to match the nomenclature used in the Ad Studio UI</li> </ul> </li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">“Creatives” have been renamed “Ads”<!-- --> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">We have renamed all instances of these entities in v1.2 in order to match the nomenclature used in the Ad Studio UI</li> </ul> </li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Removed parameter “unit_cost_micro_amount” from <a data-encore-id="textLink" class="Link-sc-k8gsk-0 flYERd" href="/documentation/ads-api/reference/v1.2/post_ad_set">Create Ad Set</a> and <a data-encore-id="textLink" class="Link-sc-k8gsk-0 flYERd" href="/documentation/ads-api/reference/v1.2/put_ad_set">Update Ad Set</a> (fka Flight) endpoints</li> </ul> <p data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 ckCbjl"><strong>Documentation Updates</strong></p> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Added new sections: “Metrics Glossary” and “Release Notes”</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Added additional detail on the expected behavior of the <code>report_datetime_range</code> filter under the <a data-encore-id="textLink" class="Link-sc-k8gsk-0 flYERd" href="/documentation/ads-api/guides#reporting-open-beta">Reporting API</a></li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Updates to “Versioning” section - added version release/sunset schedule</li> </ul> <div class="sc-9e80177b-1 ifxrgl"><h3 class="encore-text encore-text-title-small" data-encore-id="text" id="november-2021---v11">November 2021 - v1.1</h3></div> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Added support for podcast ad performance data to the Reporting API<!-- --> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Ads served to podcast listeners on Spotify will automatically be reflected without making any updates to your integration</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">To capture the impressions served off Spotify, you will need to update your integration by adding the new metric called <code>OFF_SPOTIFY_IMPRESSIONS</code></li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">There are no breaking changes associated with this launch, however, we recommend that you complete this update as soon as possible in order to accurately reflect podcast ad performance</li> </ul> </li> </ul> <div class="sc-9e80177b-1 ifxrgl"><h3 class="encore-text encore-text-title-small" data-encore-id="text" id="june-2019---v11">June 2019 - v1.1</h3></div> <div class="sc-9e80177b-1 ifxrgl"><h4 class="encore-text encore-text-body-medium-bold" data-encore-id="text" id="announcing-ads-api-v11">Announcing Ads API v1.1</h4></div> <p data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 ckCbjl">v1.1 was released June 2019</p> <p data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 ckCbjl"><strong>What&#x27;s New</strong></p> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Combined the <code>/geo</code> and <code>/geos</code> endpoints into just <code>/geos</code>. See docs <a data-encore-id="textLink" class="Link-sc-k8gsk-0 flYERd" href="/documentation/ads-api/reference/v1.4/get_targets_geo">here</a></li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><code>/geos</code> endpoint now allows you to specify a type of geo you are searching for as a filter in a query param.</li> </ul> <div class="sc-9e80177b-1 ifxrgl"><h3 class="encore-text encore-text-title-small" data-encore-id="text" id="april-2019---v10">April 2019 - v1.0</h3></div> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Renamed the landing_page_url field to be landing_page_domain so it is consistent across the API</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Renamed arrays on GET targets and GET campaigns to be consistent with rest of API</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Refactored statuses on flight endpoint</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Pausing status for flight and flight links<!-- --> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Previously, you had to pause a flight on the update flight request. Now, there is a separate endpoint to pause / activate / archive a flight. You are no longer able to change the status on the update flight request.</li> </ul> </li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Added Flight Links endpoints<!-- --> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Flight links are a connection between flights and creatives that ensure the creative(s) and its contents are compatible with the flight’s targeting</li> </ul> </li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Added serving status endpoint<!-- --> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">The new serving status endpoint indicates whether your flight is serving or not</li> </ul> </li> </ul> <div class="sc-9e80177b-1 ifxrgl"><h3 class="encore-text encore-text-title-small" data-encore-id="text" id="march-2019---v10">March 2019 - v1.0</h3></div> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Added Campaign Status Endpoint<!-- --> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">The available statuses for campaigns are ACTIVE, PAUSED, and ARCHIVED</li> </ul> </li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Removed CANCELLED as a status on campaigns<!-- --> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Campaigns can now only be archived, not cancelled</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Archiving will permanently pause a campaign, you cannot unarchive a campaign</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Archiving a campaign will prevent delivery across all associated flights</li> </ul> </li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Removed ability to update campaign status on PUT<!-- --> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Use the campaign status endpoint</li> </ul> </li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Added support for slicing on all GET LIST requests for creatives, flights, and campaigns<!-- --> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Slicing is the ability to specify what fields you want returned</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">How it works: GET LIST endpoints, there is a query parameter called <code>fields</code> where you can specify a comma-separated list of fields you want returned</li> </ul> </li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Added support for filtering on all the GET LIST requests for creatives, flights, and campaigns<!-- --> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Filtering is the ability to filter your results based on specific criteria (e.g., Get Flights for a specific Advertiser ID)</li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">How it works: On the GET LIST endpoints, there are optional query parameters to specify the filter</li> </ul> </li> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">Added support for ordering by a specific field on GET LIST requests for creatives, campaigns, and flights<!-- --> <ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hrsDVQ"> <li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem">How it works: There are optional query parameters to specify the ordering field, ascending or descending based on the field</li> </ul> </li> </ul></div></div></main></div><footer class="sc-79176060-0 byLwnG encore-inverted-dark-set"><h2 data-encore-id="visuallyHidden" class="VisuallyHidden__VisuallyHiddenElement-sc-17bibe8-0 kdFSxQ">Footer</h2><nav aria-label="footer" class="sc-79176060-1 dPgCwV"><span class="sc-79176060-2 gpumOS"><a data-small="true" class="sc-539db49-0 iUCAkX" href="/"><svg aria-label="Spotify for Developers" xmlns="http://www.w3.org/2000/svg" width="240" height="34"><use href="/images/spotify-for-developers-logo.svg#s4d-logo"></use></svg></a></span><div class="Type__TypeElement-sc-goli3j-0 bXWpix sc-79176060-3 fBSVgz" data-encore-id="type"><h3 data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 jFxTq">Documentation</h3><ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hWSKsH"><li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><a class="Link-sc-k8gsk-0 buKKye sc-79176060-4 ckOHVi" data-encore-id="textLink" href="/documentation/web-api">Web API</a></li><li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><a class="Link-sc-k8gsk-0 buKKye sc-79176060-4 ckOHVi" data-encore-id="textLink" href="/documentation/web-playback-sdk">Web Playback SDK</a></li><li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><a class="Link-sc-k8gsk-0 buKKye sc-79176060-4 ckOHVi" data-encore-id="textLink" href="/documentation/ads-api">Ads API</a></li><li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><a class="Link-sc-k8gsk-0 buKKye sc-79176060-4 ckOHVi" data-encore-id="textLink" href="/documentation/ios">iOS</a></li><li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><a class="Link-sc-k8gsk-0 buKKye sc-79176060-4 ckOHVi" data-encore-id="textLink" href="/documentation/android">Android</a></li><li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><a class="Link-sc-k8gsk-0 buKKye sc-79176060-4 ckOHVi" data-encore-id="textLink" href="/documentation/embeds">Embeds</a></li><li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><a class="Link-sc-k8gsk-0 buKKye sc-79176060-4 ckOHVi" data-encore-id="textLink" href="/documentation/commercial-hardware">Commercial Hardware</a></li></ul></div><div class="Type__TypeElement-sc-goli3j-0 bXWpix sc-79176060-3 fBSVgz" data-encore-id="type"><h3 data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 jFxTq">Guidelines</h3><ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hWSKsH"><li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><a class="Link-sc-k8gsk-0 buKKye sc-79176060-4 ckOHVi" data-encore-id="textLink" href="/documentation/design">Design</a></li><li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><a class="Link-sc-k8gsk-0 buKKye sc-79176060-4 ckOHVi" data-encore-id="textLink" href="/documentation/accessibility">Accessibility</a></li></ul></div><div class="Type__TypeElement-sc-goli3j-0 bXWpix sc-79176060-3 fBSVgz" data-encore-id="type"><h3 data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 jFxTq">Community</h3><ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hWSKsH"><li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><a class="Link-sc-k8gsk-0 buKKye sc-79176060-4 ckOHVi" data-encore-id="textLink" href="/community">News</a></li><li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><a class="Link-sc-k8gsk-0 buKKye sc-79176060-4 ckOHVi" data-encore-id="textLink" href="https://community.spotify.com/t5/Spotify-for-Developers/bd-p/Spotify_Developer">Forum</a></li></ul></div><div class="Type__TypeElement-sc-goli3j-0 bXWpix sc-79176060-3 fBSVgz" data-encore-id="type"><h3 data-encore-id="type" class="Type__TypeElement-sc-goli3j-0 jFxTq">Legal</h3><ul role="list" data-encore-id="typeList" class="TypeList__TypeListElement-sc-1jhixr6-0 hWSKsH"><li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><a class="Link-sc-k8gsk-0 buKKye sc-79176060-4 ckOHVi" data-encore-id="textLink" href="/terms">Developer Terms</a></li><li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><a class="Link-sc-k8gsk-0 buKKye sc-79176060-4 ckOHVi" data-encore-id="textLink" href="/policy">Developer Policy</a></li><li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><a class="Link-sc-k8gsk-0 buKKye sc-79176060-4 ckOHVi" data-encore-id="textLink" href="/compliance-tips">Compliance Tips</a></li><li class="encore-text encore-text-body-medium TypeListItem__TypeListItemElement-sc-q1l2mf-0 kqbyZR" data-encore-id="typeListItem"><a class="Link-sc-k8gsk-0 buKKye sc-79176060-4 ckOHVi" data-encore-id="textLink" href="/third-party-licenses">Third Party Licenses</a></li></ul></div></nav><p class="Type__TypeElement-sc-goli3j-0 bXWpix sc-79176060-5 dgothR" data-encore-id="type"><a href="https://www.spotify.com/legal/end-user-agreement/" data-encore-id="textLink" class="Link-sc-k8gsk-0 buKKye">Legal</a><a href="https://www.spotify.com/legal/cookies-policy/" data-encore-id="textLink" class="Link-sc-k8gsk-0 buKKye">Cookies</a><span>© <!-- -->2024<!-- --> Spotify AB</span></p></footer></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"source":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nconst chCodeConfig = {\n \"staticMediaQuery\": \"not screen, (max-width: 768px)\",\n \"lineNumbers\": true,\n \"showCopyButton\": true,\n \"themeName\": \"s4d\"\n};\nfunction _createMdxContent(props) {\n const _components = {\n a: \"a\",\n code: \"code\",\n em: \"em\",\n h2: \"h2\",\n h3: \"h3\",\n h4: \"h4\",\n img: \"img\",\n li: \"li\",\n ol: \"ol\",\n p: \"p\",\n strong: \"strong\",\n table: \"table\",\n tbody: \"tbody\",\n td: \"td\",\n th: \"th\",\n thead: \"thead\",\n tr: \"tr\",\n ul: \"ul\",\n ..._provideComponents(),\n ...props.components\n }, {CH} = _components;\n if (!CH) _missingMdxReference(\"CH\", false);\n if (!CH.Code) _missingMdxReference(\"CH.Code\", true);\n return _jsxs(_Fragment, {\n children: [_jsx(\"style\", {\n dangerouslySetInnerHTML: {\n __html: \"[data-ch-theme=\\\"s4d\\\"] { --ch-t-colorScheme: dark;--ch-t-foreground: #ffffff;--ch-t-background: #1E073C;--ch-t-lighter-inlineBackground: #1e073ce6;--ch-t-editor-background: #1E073C;--ch-t-editor-foreground: #F8F8F2;--ch-t-editor-lineHighlightBackground: #3E3D32;--ch-t-editor-rangeHighlightBackground: #ffffff0b;--ch-t-editor-infoForeground: #3794FF;--ch-t-editor-selectionBackground: #49483E;--ch-t-focusBorder: #007FD4;--ch-t-tab-activeBackground: #1E073C;--ch-t-tab-activeForeground: #ffffff;--ch-t-tab-inactiveBackground: #2D2D2D;--ch-t-tab-inactiveForeground: #ffffff80;--ch-t-tab-border: #252526;--ch-t-tab-activeBorder: #1E073C;--ch-t-editorGroup-border: #444444;--ch-t-editorGroupHeader-tabsBackground: #252526;--ch-t-editorLineNumber-foreground: #858585;--ch-t-input-background: #3C3C3C;--ch-t-input-foreground: #F8F8F2;--ch-t-icon-foreground: #C5C5C5;--ch-t-sideBar-background: #252526;--ch-t-sideBar-foreground: #F8F8F2;--ch-t-sideBar-border: #252526;--ch-t-list-activeSelectionBackground: #094771;--ch-t-list-activeSelectionForeground: #fffffe;--ch-t-list-hoverBackground: #2A2D2E; }\"\n }\n }), \"\\n\", _jsx(_components.h2, {\n id: \"about\",\n children: \"About\"\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"The Spotify Ads API lets you build, manage, and report on \", _jsx(_components.a, {\n href: \"https://adsmanager.spotify.com\",\n children: \"Ads Manager\"\n }), \" campaigns. This guide can help you get started. Topics include:\"]\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsx(_components.li, {\n children: \"Getting started requirements and instructions\"\n }), \"\\n\", _jsx(_components.li, {\n children: \"An Ads Manager overview\"\n }), \"\\n\", _jsx(_components.li, {\n children: \"Descriptions of available endpoints\"\n }), \"\\n\", _jsx(_components.li, {\n children: \"Help and support information\"\n }), \"\\n\"]\n }), \"\\n\", _jsx(_components.h3, {\n id: \"next-steps\",\n children: \"Next steps\"\n }), \"\\n\", _jsx(_components.p, {\n children: \"If you're not sure what to do now, try these recommendations:\"\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [\"\\n\", _jsxs(_components.p, {\n children: [\"New to the Ads API? See the \", _jsx(_components.a, {\n href: \"/documentation/ads-api/quick-start\",\n children: \"Quickstart\"\n }), \" section. It provides instructions about how to set up an account to work with our API.\"]\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"\\n\", _jsxs(_components.p, {\n children: [\"Already using the Ads API? Great! Check the \", _jsx(_components.a, {\n href: \"/documentation/ads-api/#release-notes\",\n children: \"Release Notes section\"\n }), \" for information on the latest changes, or browse the available methods below.\"]\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\", _jsx(_components.h3, {\n id: \"support\",\n children: \"Support\"\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"To report a bug or ask questions about this service, contact the Ads API team at \", _jsx(_components.a, {\n href: \"mailto:ads-api-support@spotify.com\",\n children: \"ads-api-support@spotify.com\"\n }), \".\\nNOTE: Please be sure to include info such as your client ID and a copy of the request and response (including the sp_trace_id) if relevant.\"]\n }), \"\\n\", _jsx(_components.h3, {\n id: \"subscribe-to-newsletter\",\n children: \"Subscribe to Newsletter\"\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Sign up for our monthly Ads API newsletter \", _jsx(_components.a, {\n href: \"http://eepurl.com/h-NAHz\",\n children: \"here\"\n }), \" if you want to receive updates about new releases, testing opportunities, and more!\"]\n }), \"\\n\", _jsx(_components.h2, {\n id: \"api-design\",\n children: \"API Design\"\n }), \"\\n\", _jsx(_components.p, {\n children: \"This section covers important design elements that affect how the Ads API works. Take a moment to review this information.\"\n }), \"\\n\", _jsx(_components.h3, {\n id: \"rate-limiting\",\n children: \"Rate Limiting\"\n }), \"\\n\", _jsx(_components.p, {\n children: \"Rate limiting caps the number of API calls a user or app can make within a set period of time. The\\nAds API applies RPS rate limits on a per-user basis for each calling app, regardless of the number of\\nsimultaneous app users. These limits help Spotify provide API access equitably to all our engineering\\npartners.\"\n }), \"\\n\", _jsx(_components.p, {\n children: \"In addition, there is also a cap on the reporting endpoints that takes precedence over the general\\ncap on the client ID + user ID key since these specific endpoints are most at risk for high-request\\nvolumes, oftentimes due to bad or malformed requests.\"\n }), \"\\n\", _jsx(_components.p, {\n children: \"Note: If our API returns status code 429, it means that you have sent too many requests. When this\\nhappens, check the headers for the following info:\"\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"X-RateLimit-Remaining\"\n }), \": The count of requests remaining in the rate limit window\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"X-RateLimit-Limit\"\n }), \": The maximum number of requests allowed within the rate limit window\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"X-RateLimit-Reset\"\n }), \": The number of seconds left until the rate limit resets and you can retry your request again\"]\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.table, {\n children: [_jsx(_components.thead, {\n children: _jsxs(_components.tr, {\n children: [_jsx(_components.th, {\n children: \"Rate Limit On\"\n }), _jsx(_components.th, {\n children: \"Rate Limit Request\"\n }), _jsx(_components.th, {\n children: \"Window (seconds)\"\n }), _jsx(_components.th, {\n children: \"Sustained Requests per second (RPS) limit\"\n })]\n })\n }), _jsxs(_components.tbody, {\n children: [_jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: \"Client ID + User ID (as a single key)\"\n }), _jsx(_components.td, {\n children: \"1500\"\n }), _jsx(_components.td, {\n children: \"30s\"\n }), _jsx(_components.td, {\n children: \"50 RPS\"\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: \"Client ID + User ID (as a single key) on Reporting Endpoints\"\n }), _jsx(_components.td, {\n children: \"150\"\n }), _jsx(_components.td, {\n children: \"30s\"\n }), _jsx(_components.td, {\n children: \"50 RPS\"\n })]\n })]\n })]\n }), \"\\n\", _jsx(_components.h3, {\n id: \"breaking-v-non-breaking-changes-policy\",\n children: \"Breaking v. Non-Breaking Changes Policy\"\n }), \"\\n\", _jsx(_components.p, {\n children: \"This section provides a more detailed list of what Ads API considers to be a \\\"Breaking\\\" change, and what is\\nconsidered a \\\"Non-Breaking\\\" change (i.e. backwards compatible change). The API defines these\\nterms in the following way:\"\n }), \"\\n\", _jsxs(_components.ol, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: \"Breaking Changes\"\n }), \": Any alteration in the API that causes existing integrations to fail or\\nfunction incorrectly from the perspective of the Ads API customers / users. Integrations built on the\\nprevious version of the API would not continue to function as expected after these changes are\\nimplemented, and would thus require immediate attention and modification.\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: \"Non-Breaking/Backwards Compatible Changes\"\n }), \": Updates or enhancements to the API that do\\nnot disrupt existing integrations. Integrations built on the previous version of the API continue to\\nfunction as expected, even after these changes are implemented.\"]\n }), \"\\n\"]\n }), \"\\n\", _jsx(_components.h4, {\n id: \"breaking-changes\",\n children: \"Breaking Changes\"\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsx(_components.li, {\n children: \"Removing an existing operation/endpoint\"\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: \"Request\"\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [\"Headers\", \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsx(_components.li, {\n children: \"Removing or renaming an existing header\"\n }), \"\\n\", _jsx(_components.li, {\n children: \"Adding a new required header\"\n }), \"\\n\", _jsx(_components.li, {\n children: \"Making a previously optional header required\"\n }), \"\\n\", _jsx(_components.li, {\n children: \"Changing the type of a header\"\n }), \"\\n\", _jsx(_components.li, {\n children: \"Changing the default value of a header\"\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"Body\", \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsx(_components.li, {\n children: \"Removing or renaming an existing field\"\n }), \"\\n\", _jsx(_components.li, {\n children: \"Adding or increasing restrictions to the accepted values for an existing non-enum field\"\n }), \"\\n\", _jsx(_components.li, {\n children: \"Removing enum options from an existing enum-type field\"\n }), \"\\n\", _jsx(_components.li, {\n children: \"Adding a new required request field\"\n }), \"\\n\", _jsx(_components.li, {\n children: \"Making a previously optional request field required\"\n }), \"\\n\", _jsx(_components.li, {\n children: \"Changing the type of an existing request field\"\n }), \"\\n\", _jsx(_components.li, {\n children: \"Changing the default value of an existing field\"\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"Query/Path Parameters\", \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsx(_components.li, {\n children: \"Removing or renaming an existing parameter\"\n }), \"\\n\", _jsx(_components.li, {\n children: \"Adding or increasing restrictions to the accepted values for an existing non-enum parameter\"\n }), \"\\n\", _jsx(_components.li, {\n children: \"Removing enum options from an existing enum-type parameter\"\n }), \"\\n\", _jsx(_components.li, {\n children: \"Adding a new required parameter\"\n }), \"\\n\", _jsx(_components.li, {\n children: \"Making a previously optional parameter required\"\n }), \"\\n\", _jsx(_components.li, {\n children: \"Changing the type of an existing parameter\"\n }), \"\\n\", _jsx(_components.li, {\n children: \"Changing the default value of a parameter\"\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: \"Response\"\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [\"Body\", \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsx(_components.li, {\n children: \"Removing or renaming an existing field\"\n }), \"\\n\", _jsx(_components.li, {\n children: \"Removing enum values/options from an existing enum-type field\"\n }), \"\\n\", _jsx(_components.li, {\n children: \"Changing the type of an existing field\"\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\", _jsx(_components.li, {\n children: \"Adding a new validation rule to an existing parameter or making an existing validation rule more\\nrestrictive\"\n }), \"\\n\", _jsx(_components.li, {\n children: \"Changing the value of what is being returned behind the scenes\"\n }), \"\\n\", _jsx(_components.li, {\n children: \"Changing authentication or authorization requirements\"\n }), \"\\n\"]\n }), \"\\n\", _jsx(_components.h4, {\n id: \"non-breakingbackwards-compatible-changes\",\n children: \"Non-Breaking/Backwards Compatible Changes\"\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsx(_components.li, {\n children: \"Updating documentation, both internally and externally facing\"\n }), \"\\n\", _jsx(_components.li, {\n children: \"Adding a new operation/endpoint\"\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: \"Request\"\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [\"Headers\", \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsx(_components.li, {\n children: \"Adding a new optional header\"\n }), \"\\n\", _jsx(_components.li, {\n children: \"Making a previously required header optional\"\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"Request Body\", \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsx(_components.li, {\n children: \"Adding a new optional field\"\n }), \"\\n\", _jsx(_components.li, {\n children: \"Making a previously required field optional\"\n }), \"\\n\", _jsx(_components.li, {\n children: \"Adding enum values to an existing enum type field\"\n }), \"\\n\", _jsx(_components.li, {\n children: \"Marking an existing field as deprecated to warn of future remove, but not removing it\"\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"Query/Path Parameters\", \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsx(_components.li, {\n children: \"Adding a new optional parameter\"\n }), \"\\n\", _jsx(_components.li, {\n children: \"Making a previously required parameter optional\"\n }), \"\\n\", _jsx(_components.li, {\n children: \"Adding enum values to an existing enum type parameter\"\n }), \"\\n\", _jsx(_components.li, {\n children: \"Marking an existing parameter as deprecated to warn of future remove, but not removing it\"\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: \"Response\"\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [\"Headers\", \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsx(_components.li, {\n children: \"Adding a new header\"\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"Body\", \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsx(_components.li, {\n children: \"Adding a new field\"\n }), \"\\n\", _jsx(_components.li, {\n children: \"Changing the order of properties in existing API responses\"\n }), \"\\n\", _jsx(_components.li, {\n children: \"Adding enum values to an existing enum type field\"\n }), \"\\n\", _jsx(_components.li, {\n children: \"Marking an existing field as deprecated to warn of future remove, but not removing it\"\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\", _jsx(_components.li, {\n children: \"Any bug fixes that don’t fall into the breaking changes category\"\n }), \"\\n\", _jsx(_components.li, {\n children: \"Codebase improvements that don't fall into the breaking changes category\\n(e.g. Testing Improvements, Performance Improvements, etc.)\"\n }), \"\\n\", _jsx(_components.li, {\n children: \"Marking an existing endpoint as deprecated to warn of future remove, but not removing it\"\n }), \"\\n\"]\n }), \"\\n\", _jsx(_components.h3, {\n id: \"versioning\",\n children: \"Versioning\"\n }), \"\\n\", _jsx(_components.p, {\n children: \"The most recent version of the Ads API is v2.\"\n }), \"\\n\", _jsx(_components.p, {\n children: \"All endpoints are versioned with a version number in the URI. Version numbers are integers starting with a 1 or 2, and the version number is a prefix of the URI.\"\n }), \"\\n\", _jsx(_components.p, {\n children: \"In accordance with semantic versioning, versions are bumped when there is a backwards-incompatible change that necessitates it, such as significant schema changes.\"\n }), \"\\n\", _jsx(_components.p, {\n children: \"Updates that do not break existing consumers will be deployed to the current version as patch releases.\"\n }), \"\\n\", _jsxs(_components.p, {\n children: [_jsx(_components.em, {\n children: \"Patch\"\n }), \" releases:\"]\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsx(_components.li, {\n children: \"Non-Breaking Changes\"\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [_jsx(_components.em, {\n children: \"Major\"\n }), \" releases, e.g. \", _jsx(_components.code, {\n children: \"/v2/\"\n }), \" to \", _jsx(_components.code, {\n children: \"/v3/\"\n }), \":\"]\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsx(_components.li, {\n children: \"Major Breaking/Backwards Compatible Changes\"\n }), \"\\n\"]\n }), \"\\n\", _jsx(_components.p, {\n children: \"For each of these releases, the API team will communicate with clients and detail the changes in the API Release Notes.\"\n }), \"\\n\", _jsx(_components.h3, {\n id: \"release-calendar\",\n children: \"Release Calendar\"\n }), \"\\n\", _jsx(_components.p, {\n children: \"In order to maintain a healthy evolution of fixes and improvements to the API, in January 2024 the Ads API began to follow a lifecycle of sunsetting its currently latest version approximately every year. From v2 onwards, the API team will maintain 3 versions (e.g., v2, v3, and v4 will be maintained at the same time).\\nWithin about 12 months, the current version is considered deprecated. Deprecation means that a newer version is now available and the flagged version will soon be sunset. After another 6 months, the version is sunset and will no longer be accessible.\"\n }), \"\\n\", _jsx(_components.p, {\n children: \"For example, the current latest version (v2) of the API will be deprecated ~12 months from January 2024 in winter 2025 and then sunset ~Q3 2025:\"\n }), \"\\n\", _jsx(_components.p, {\n children: _jsx(_components.img, {\n src: \"/images/blog/ads-api-release-calendar.png\",\n alt: \"\\\"Ads API Version Lifecycle\\\"\"\n })\n }), \"\\n\", _jsx(_components.p, {\n children: \"To summarize the release policy:\"\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: \"Deprecations\"\n }), \": the Ads API team will give a \", _jsx(_components.strong, {\n children: \"6 month notice\"\n }), \" before a version becomes deprecated. Once deprecated, new features will not be added to the version, and non-critical bugs will not be resolved. In rare exceptions, critical bug fixes will still be made to the version until it's sunset.\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: \"Sunset\"\n }), \": the Ads API team will give a \", _jsx(_components.strong, {\n children: \"6 month notice\"\n }), \" before a version becomes sunset, meaning HTTP requests can no longer be made.\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: \"Release Notes\"\n }), \": the Ads API team will continue to post monthly updates (see more in the Release Notes section).\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: \"Monthly Newsletter\"\n }), \": the newsletter includes a summarized version of the release notes (see more in the Monthly Newsletter section).\"]\n }), \"\\n\"]\n }), \"\\n\", _jsx(_components.h3, {\n id: \"past-versions\",\n children: \"Past Versions\"\n }), \"\\n\", _jsx(_components.p, {\n children: \"For historical reasons, here's a table of previous API versions:\"\n }), \"\\n\", _jsxs(_components.table, {\n children: [_jsx(_components.thead, {\n children: _jsxs(_components.tr, {\n children: [_jsx(_components.th, {\n children: \"API Version\"\n }), _jsx(_components.th, {\n children: \"Release Date\"\n }), _jsx(_components.th, {\n children: \"Deprecation Date\"\n }), _jsx(_components.th, {\n children: \"Sunset Date\"\n })]\n })\n }), _jsxs(_components.tbody, {\n children: [_jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: \"v2\"\n }), _jsx(_components.td, {\n children: \"August 2023\"\n }), _jsx(_components.td, {\n children: \"TBA\"\n }), _jsx(_components.td, {\n children: \"TBA\"\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: \"v1.4\"\n }), _jsx(_components.td, {\n children: \"November 2022\"\n }), _jsx(_components.td, {\n children: \"November 13, 2023\"\n }), _jsx(_components.td, {\n children: \"November 27, 2023\"\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: \"v1.3\"\n }), _jsx(_components.td, {\n children: \"July 2022\"\n }), _jsx(_components.td, {\n children: \"November 13, 2023\"\n }), _jsx(_components.td, {\n children: \"November 27, 2023\"\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: \"v1.2\"\n }), _jsx(_components.td, {\n children: \"December 2021\"\n }), _jsx(_components.td, {\n children: \"August 25, 2022\"\n }), _jsx(_components.td, {\n children: \"November 27, 2023\"\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: \"v1.1\"\n }), _jsx(_components.td, {\n children: \"June 2019\"\n }), _jsx(_components.td, {\n children: \"August 25, 2022\"\n }), _jsx(_components.td, {\n children: \"November 27, 2023\"\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: \"v1.0\"\n }), _jsx(_components.td, {\n children: \"March 2019\"\n }), _jsx(_components.td, {\n children: \"July 1, 2022\"\n }), _jsx(_components.td, {\n children: \"November 27, 2023\"\n })]\n })]\n })]\n }), \"\\n\", _jsx(_components.h3, {\n id: \"time-format\",\n children: \"Time Format\"\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Times are always recorded in \", _jsx(_components.a, {\n href: \"https://en.wikipedia.org/wiki/ISO_8601\",\n children: \"ISO 8601\"\n }), \" format as \", _jsx(_components.a, {\n href: \"https://en.wikipedia.org/wiki/UTC_offset\",\n children: \"Coordinated Universal Time (UTC)\"\n }), \" with a \", _jsx(_components.a, {\n href: \"https://en.wikipedia.org/wiki/UTC_offset\",\n children: \"zero offset\"\n }), \": \", _jsx(_components.code, {\n children: \"YYYY-MM-DDTHH:MM:SSZ\"\n }), \".\"]\n }), \"\\n\", _jsx(_components.h3, {\n id: \"pagination\",\n children: \"Pagination\"\n }), \"\\n\", _jsx(_components.p, {\n children: \"Most list endpoints support paging the dataset by taking an offset and limit as query parameters.\"\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"limit\"\n }), \" specifies the number of results to be returned from the call. If not specified, the default value is 50. The max allowed value is also 50.\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"offset\"\n }), \" specifies the starting position of the first result.\"]\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"If you specify a \", _jsx(_components.code, {\n children: \"limit\"\n }), \" of 5, the API will return 5 results. On the next page you’d put an offset of 6 to retrieve results 6 through 10. We return the total number of results along with the page size in the \", _jsx(_components.code, {\n children: \"paging\"\n }), \" object.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"The \", _jsx(_components.a, {\n href: \"/documentation/ads-api/reference/v2.0/getAggregateReport\",\n children: \"reporting endpoints\"\n }), \" are an exception and use continuation tokens for paging instead of \", _jsx(_components.code, {\n children: \"offset\"\n }), \". The reporting response will include a continuation token that can then be sent in a subsequent reporting request to access the next page of results. When sending a request with a continuation token included, no other fields should be specified. If the continuation token returned in the response is null, that means there are no more pages available.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Continuation tokens are base64 encoded and encrypted strings that look like the following:\\n\", _jsx(_components.code, {\n children: \"AMC-fuxpGRIqFcOUEzDEdWQsM5Iy7mkRThKFo94mEys6RF1lzeKyq1sOlWU4RsdjSsgDWR2D7An1nFgLXNBU9hocKnWQ9jRsps6kCLqKd7Q77zNEhHm_Xlb6J_Fci6kK7tXVM3U6H8OajjcTA18eFcr-kv0etZJZBWlMhtP84xj4WiVDZnPWaMo7AL3jRrHH32grJ3eRA2PAoZmhg80%3D\"\n })]\n }), \"\\n\", _jsx(_components.h2, {\n id: \"release-notes\",\n children: \"Release Notes\"\n }), \"\\n\", _jsx(_components.p, {\n children: \"This section documents changes to the Ads API, including all patch updates, bug fixes, new version releases, version deprecations, version sunsets, etc.\"\n }), \"\\n\", _jsx(_components.h3, {\n id: \"march-2024\",\n children: \"March 2024\"\n }), \"\\n\", _jsx(_components.p, {\n children: \"The following updates have been made to the latest version (v2) of the Ads API.\"\n }), \"\\n\", _jsx(_components.h4, {\n id: \"whats-new\",\n children: \"What's New\"\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [\"New campaign objective \", _jsx(_components.code, {\n children: \"\\\"PODCAST_STREAMS\\\"\"\n }), \" is now available when \", _jsx(_components.a, {\n href: \"/documentation/ads-api/reference/v2.0/createCampaign\",\n children: \"creating\"\n }), \" or \", _jsx(_components.a, {\n href: \"/documentation/ads-api/reference/v2.0/updateCampaign\",\n children: \"updating\"\n }), \" a campaign: The new Podcast Streams objective enables podcasters of all sizes easily promote their shows to listeners who are more likely to stream podcasts on Spotify -- learn more \", _jsx(_components.a, {\n href: \"https://ads.spotify.com/en-US/news-and-insights/podcast-streams-objective/\",\n children: \"here\"\n })]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"New read-only field \", _jsx(_components.code, {\n children: \"display_name\"\n }), \" under the ad account entity: This is an optional nickname that a user can give to an ad account; it is referred to as the ad account nickname in the UI and is specific to a user\"]\n }), \"\\n\"]\n }), \"\\n\", _jsx(_components.h4, {\n id: \"documentation-updates\",\n children: \"Documentation Updates\"\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [\"Update to \", _jsx(_components.a, {\n href: \"/documentation/ads-api#rate-limiting\",\n children: \"Rate Limiting\"\n }), \":\", \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsx(_components.li, {\n children: \"Replaced IP-level rate limit with a user-level rate limit\"\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"Added info on new rate limiting headers:\", \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"X-RateLimit-Remaining\"\n }), \": The count of requests remaining in the rate limit window\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"X-RateLimit-Limit\"\n }), \": The maximum number of requests allowed within the rate limit window\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"X-RateLimit-Reset\"\n }), \": The number of seconds left until the rate limit resets and you can retry your request again\"]\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"Update to \", _jsx(_components.a, {\n href: \"/documentation/ads-api#pagination\",\n children: \"Pagination\"\n }), \": Added documentation to reflect that reporting endpoints use \", _jsx(_components.code, {\n children: \"continuation_token\"\n }), \" for paging instead of \", _jsx(_components.code, {\n children: \"offset\"\n })]\n }), \"\\n\"]\n }), \"\\n\", _jsx(_components.h3, {\n id: \"february-2024\",\n children: \"February 2024\"\n }), \"\\n\", _jsx(_components.p, {\n children: \"The following updates have been made to the latest version (v2) of the Ads API.\"\n }), \"\\n\", _jsx(_components.h4, {\n id: \"whats-new-1\",\n children: \"What's New\"\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [\"Reporting updates:\", \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [\"Support for ad account-level breakdowns: a new enum value \", _jsx(_components.code, {\n children: \"\\\"AD_ACCOUNT\\\"\"\n }), \" is now available under the \", _jsx(_components.code, {\n children: \"entity_type\"\n }), \" parameter for the \", _jsx(_components.a, {\n href: \"/documentation/ads-api/reference/v2.0/getAggregateReport\",\n children: \"Get Aggregate Report\"\n }), \" endpoint\", \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [\"Ad account-level breakdowns are not supported for the \", _jsx(_components.a, {\n href: \"/documentation/ads-api/reference/v2.0/getAudienceInsightReport\",\n children: \"Get Insight Report\"\n }), \" endpoint\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"The following fields/filters \", _jsx(_components.strong, {\n children: \"cannot\"\n }), \" be used when requesting an ad account-level breakdown:\", \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"entity_id\"\n }), \" - the ID of the ad account specified in the endpoint path will be used to filter the request\"]\n }), \"\\n\", _jsx(_components.li, {\n children: _jsx(_components.code, {\n children: \"entity_id_type\"\n })\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"include_parent_entity\"\n }), \"- cannot be set to \", _jsx(_components.code, {\n children: \"true\"\n })]\n }), \"\\n\", _jsx(_components.li, {\n children: _jsx(_components.code, {\n children: \"statuses\"\n })\n }), \"\\n\", _jsx(_components.li, {\n children: _jsx(_components.code, {\n children: \"entity_status_type\"\n })\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"Campaign Management updates:\", \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [\"New \", _jsx(_components.a, {\n href: \"https://ads.spotify.com/en-US/news-and-insights/introducing-canvas-for-ads/\",\n children: \"Canvas\"\n }), \" feature available! When creating or updating an audio ad, users now have the option to include a visual companion asset (an image or a video) that will play on a loop in full-screen when listeners are in-focus\", \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [\"To use Canvas via the Ads API: When sending a request to the \", _jsx(_components.a, {\n href: \"/documentation/ads-api/reference/v2.0/createAd\",\n children: \"Create\"\n }), \" or \", _jsx(_components.a, {\n href: \"/documentation/ads-api/reference/v2.0/updateAd\",\n children: \"Update\"\n }), \" Ad endpoints, specify an image or video asset ID under the optional field \", _jsx(_components.code, {\n children: \"canvas_asset_id\"\n }), \" (nested under the \", _jsx(_components.code, {\n children: \"assets\"\n }), \" object)\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"This feature is only available for ads created under ad sets where the \", _jsx(_components.code, {\n children: \"format\"\n }), \" is \", _jsx(_components.code, {\n children: \"\\\"AUDIO\\\"\"\n }), \" (not available for \", _jsx(_components.code, {\n children: \"\\\"VIDEO\\\"\"\n }), \")\"]\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"Relaxation of ad set start/end date validation logic: The validation logic under the \", _jsx(_components.a, {\n href: \"/documentation/ads-api/reference/v2.0/updateAdSet\",\n children: \"Update Ad Set\"\n }), \" endpoint has been relaxed so that users may now shorten the schedule of an ad set (previously it could only be extended)\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"Relaxation of requirements when creating or updating an image asset: If a user calls the \", _jsx(_components.a, {\n href: \"/documentation/ads-api/reference/v2.0/createAsset\",\n children: \"Create\"\n }), \" or \", _jsx(_components.a, {\n href: \"/documentation/ads-api/reference/v2.0/updateAsset\",\n children: \"Update\"\n }), \" Asset endpoints and specifies the \", _jsx(_components.code, {\n children: \"asset_type\"\n }), \" as \", _jsx(_components.code, {\n children: \"\\\"IMAGE\\\"\"\n }), \", they are no longer required to specify \", _jsx(_components.code, {\n children: \"asset_subtype\"\n }), \" as well\", \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [\"Previously, users were required to specify \", _jsx(_components.code, {\n children: \"asset_subtype\"\n }), \" as either \", _jsx(_components.code, {\n children: \"\\\"LOGO\\\"\"\n }), \" or \", _jsx(_components.code, {\n children: \"\\\"COMPANION\\\"\"\n }), \" when creating an image asset, but now \", _jsx(_components.code, {\n children: \"asset_subtype\"\n }), \" will automatically default to \", _jsx(_components.code, {\n children: \"\\\"USER_UPLOADED_IMAGE\\\"\"\n }), \" for all image assets and is not required in the request to create an image asset\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"Requests that continue to specify \", _jsx(_components.code, {\n children: \"\\\"LOGO\\\"\"\n }), \" or \", _jsx(_components.code, {\n children: \"\\\"COMPANION\\\"\"\n }), \" under the \", _jsx(_components.code, {\n children: \"asset_subtype\"\n }), \" field will continue to work, but these values will be automatically overriden with \", _jsx(_components.code, {\n children: \"\\\"USER_UPLOADED_IMAGE\\\"\"\n })]\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\", _jsx(_components.h3, {\n id: \"january-2024\",\n children: \"January 2024\"\n }), \"\\n\", _jsx(_components.p, {\n children: \"The following updates have been made to the latest version (v2) of the Ads API.\"\n }), \"\\n\", _jsx(_components.h4, {\n id: \"whats-new-2\",\n children: \"What's New\"\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [\"Reporting updates:\", \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [\"New metrics \", _jsx(_components.code, {\n children: \"VIDEO_EXPANDS\"\n }), \" and \", _jsx(_components.code, {\n children: \"VIDEO_EXPAND_RATE\"\n }), \" available under the \", _jsx(_components.a, {\n href: \"/documentation/ads-api/reference/v2.0/getAggregateReport\",\n children: \"Get Aggregate Report\"\n }), \" endpoint for campaigns using the Video Views objective\"]\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"Campaign Management updates:\", \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [\"New call-to-action text enum value\", _jsx(_components.code, {\n children: \"\\\"WATCH NOW\\\"\"\n }), \" is now available under the \", _jsx(_components.a, {\n href: \"/documentation/ads-api/reference/v2.0/createAd\",\n children: \"Ad\"\n }), \" entity\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"Support for bulk postal code upload: Users can now search for up to 1000 postal codes via the \", _jsx(_components.code, {\n children: \"ids\"\n }), \" field under \", _jsx(_components.a, {\n href: \"/documentation/ads-api/reference/v2.0/getGeoTargets\",\n children: \"Get Geo Targets\"\n }), \" (previously this was limited to 50 postal codes)\"]\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\", _jsx(_components.h4, {\n id: \"documentation-updates-1\",\n children: \"Documentation Updates\"\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [\"Updates to our \", _jsx(_components.a, {\n href: \"/documentation/ads-api#versioning\",\n children: \"Versioning\"\n }), \" policy:\", \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsx(_components.li, {\n children: \"Added new release calendar to provide context on our release cadence\"\n }), \"\\n\", _jsx(_components.li, {\n children: \"Removed reference to minor versions -- all new version releases will be released as new major versions moving forward\"\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\", _jsx(_components.h3, {\n id: \"december-2023\",\n children: \"December 2023\"\n }), \"\\n\", _jsx(_components.p, {\n children: \"The following updates have been made to the latest version (v2) of the Ads API.\"\n }), \"\\n\", _jsx(_components.h4, {\n id: \"whats-new-3\",\n children: \"What's New\"\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [\"Update to \", _jsx(_components.a, {\n href: \"/documentation/ads-api/reference/v2.0/createAdSet\",\n children: \"Create Ad Set\"\n }), \" endpoint: New optional parameter \", _jsx(_components.code, {\n children: \"pacing\"\n }), \" has been added with the following allowed values – these are immutable after ad set creation:\", \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"PACING_ASAP\"\n }), \": Deliver ads at an accelerated pace. Delivery stops when daily or lifetime budget is spent\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"PACING_EVEN\"\n }), \": Deliver ads throughout your selected schedule at a standard pace.\"]\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"Update to \", _jsx(_components.a, {\n href: \"/documentation/ads-api/reference/v2.0/createAdSet\",\n children: \"Create Ad Set\"\n }), \", \", _jsx(_components.a, {\n href: \"/documentation/ads-api/reference/v2.0/updateAdSet\",\n children: \"Update Ad Set\"\n }), \", \", _jsx(_components.a, {\n href: \"/documentation/ads-api/reference/v2.0/estimateBid\",\n children: \"Estimate Bid\"\n }), \", and \", _jsx(_components.a, {\n href: \"/documentation/ads-api/reference/v2.0/estimateAudience\",\n children: \"Estimate Audience\"\n }), \" endpoints:\", \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsx(_components.li, {\n children: \"The max allowed targeted age has been increased to 99 (was previously 65)\"\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"The parameter \", _jsx(_components.code, {\n children: \"sensitive_topic_exclusion_ids\"\n }), \" under the \", _jsx(_components.code, {\n children: \"targets\"\n }), \" object has been marked as deprecated in v2 and will be sunset in the next version bump (timing TBD) – it is being replaced with new optional parameter \", _jsx(_components.code, {\n children: \"sensitive_topic_exclusions\"\n }), \" which allows users to specify separate filter levels for individual sensitive topic ids, or a single global filter to be applied to all sensitive topics\", \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [\"Allowed values for the new \", _jsx(_components.code, {\n children: \"filter_option\"\n }), \" parameter (nested under \", _jsx(_components.code, {\n children: \"sensitive_topic_exclusions\"\n }), \"):\", \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"STANDARD\"\n }), \" (default): Provides the full breadth of podcasts eligible for ads.\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"PARTIAL\"\n }), \": May include audio of “real-world” alcohol/tobacco use, or dramatic depictions or educational coverage of alcohol/tobacco use; may include dramatic and non-graphic depiction, edu-tainment, op-ed coverage, or breaking news of crime/violence or weapons; may include dramatic depictions or discussion of drug use for entertainment or journalistic purposes (including discussion of addiction recovery); may include depictions of recreational gambling or news coverage of gambling legislation; may include dramatic or graphic depictions of hate speech/acts in an entertainment context, or audio of “real-world” hate speech for discussion purposes; may include dramatic and non-graphic depictions of sexual acts in an entertainment context; may include discussion or discussion or references to past terrorist events/groups, without graphic details.\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"LIMITED\"\n }), \": May include informal mentions of alcohol brands/use, drug use, gambling, smoking/tobacco products, or weapons; as well as educational or informative discussions of criminal reform/past unlawful criminal activity, hate speech/acts, sexual relationships/sexuality or terrorism.\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"RESTRICTED\"\n }), \": Avoid placements that contain any reference to the sensitive topic(s). Total exclusion of the sensitive topic(s) is not guaranteed.\"]\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\", _jsx(_components.h4, {\n id: \"breaking-changesdeprecations\",\n children: \"Breaking Changes/Deprecations\"\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [\"[Breaking Change] Update to the \", _jsx(_components.a, {\n href: \"/documentation/ads-api/reference/v2.0/updateAdSet\",\n children: \"Update Ad Set\"\n }), \" and \", _jsx(_components.a, {\n href: \"/documentation/ads-api/reference/v2.0/updateCampaign\",\n children: \"Update Campaign\"\n }), \" endpoints: we’re removing support for archiving ad sets and campaigns – effective December 12th, 2023, the API will return a validation error when users attempt to set the \", _jsx(_components.code, {\n children: \"status\"\n }), \" parameter to \", _jsx(_components.code, {\n children: \"ARCHIVED\"\n }), \" for an ad set or a campaign\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"[Breaking Change] Update to \", _jsx(_components.a, {\n href: \"/documentation/ads-api/reference/v2.0/estimateAudience\",\n children: \"Estimate Audience\"\n }), \" endpoint: the parameter \", _jsx(_components.code, {\n children: \"bid_micro_amount\"\n }), \" will be required starting on December 17th, 2023 -- impacted partners have been sent direct communications to update their integrations\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"[Non-Breaking Change, Deprecation] Update to \", _jsx(_components.a, {\n href: \"/documentation/ads-api/reference/v2.0/estimateBid\",\n children: \"Estimate Bid\"\n }), \" endpoint: \", _jsx(_components.code, {\n children: \"start_date\"\n }), \" and \", _jsx(_components.code, {\n children: \"end_date\"\n }), \" have been marked as deprecated and are no longer required – in the next version bump, these parameters removed from under this endpoint\"]\n }), \"\\n\", _jsx(_components.li, {\n children: \"v1 to v1.4 of the Ads API was sunset on November 27, 2023 – these endpoints are no longer available and any partners that have still yet to migrate to v2 should do so\"\n }), \"\\n\"]\n }), \"\\n\", _jsx(_components.h4, {\n id: \"documentation-updates-2\",\n children: \"Documentation Updates\"\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [\"Added a new section on \", _jsx(_components.a, {\n href: \"/documentation/ads-api#breaking-v-non-breaking-changes-policy\",\n children: \"Breaking v. Non-Breaking Changes Policy\"\n }), \" to our API Design documentation which provides specific examples of breaking vs non-breaking changes\"]\n }), \"\\n\"]\n }), \"\\n\", _jsx(_components.h3, {\n id: \"november-2023\",\n children: \"November 2023\"\n }), \"\\n\", _jsx(_components.p, {\n children: \"The following updates have been made to the latest version (v2) of the Ads API.\"\n }), \"\\n\", _jsx(_components.h4, {\n id: \"whats-new-4\",\n children: \"What's New\"\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [\"Reporting updates:\", \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [\"Updates to \", _jsx(_components.a, {\n href: \"/documentation/ads-api/reference/v2.0/getAggregateReport\",\n children: \"Get Aggregate Report\"\n }), \" endpoint:\", \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [\"We’ve restored support for filtering by multiple \", _jsx(_components.code, {\n children: \"entity_ids\"\n }), \" (campaign/ad set/ad IDs) in a single call when requesting daily and hourly granularity\", \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [\"NOTE: A maximum of 50 \", _jsx(_components.code, {\n children: \"entity_ids\"\n }), \" can be included in a single request\"]\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"Users may now filter ads by campaign IDs when requesting lifetime granularity – previously, requests with \", _jsx(_components.code, {\n children: \"entity_type=CAMPAIGN\"\n }), \" and \", _jsx(_components.code, {\n children: \"entity_ids_type=AD\"\n }), \" would result in a validation error\"]\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"Update to \", _jsx(_components.a, {\n href: \"/documentation/ads-api/reference/v2.0/getAggregateReport\",\n children: \"Get Aggregate Report\"\n }), \" and \", _jsx(_components.a, {\n href: \"/documentation/ads-api/reference/v2.0/getAudienceInsightReport\",\n children: \"Get Insight Report\"\n }), \" endpoints: We’ve removed the validation rule that previously required \", _jsx(_components.code, {\n children: \"report_start\"\n }), \" and \", _jsx(_components.code, {\n children: \"report_end\"\n }), \" to be in the past – requests where \", _jsx(_components.code, {\n children: \"report_start\"\n }), \" and/or \", _jsx(_components.code, {\n children: \"report_end\"\n }), \" are in the future will no longer result in a validation error\", \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [\"This means that users requesting \", _jsx(_components.code, {\n children: \"granularity=DAY\"\n }), \" under Get Aggregate Report are now able to request data for the current day by setting \", _jsx(_components.code, {\n children: \"report_end\"\n }), \" to tomorrow’s date (e.g., if today is November 14, 2023 in UTC, \", _jsx(_components.code, {\n children: \"report_end\"\n }), \" should be set to \", _jsx(_components.code, {\n children: \"2023-11-15T00:00:00Z\"\n }), \" to return data up to today)\"]\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"The ability to query by IDs has been added to the \", _jsx(_components.a, {\n href: \"/documentation/ads-api/reference/v2.0/getEpisodeTopicTargets\",\n children: \"Get Podcast Episode Topic Targets\"\n }), \", \", _jsx(_components.a, {\n href: \"/documentation/ads-api/reference/v2.0/getSensitiveTopicTargets\",\n children: \"Get Sensitive Topic Targets\"\n }), \", \", _jsx(_components.a, {\n href: \"/documentation/ads-api/reference/v2.0/getGenreTargets\",\n children: \"Get Genre Targets\"\n }), \", Get Playlist Targets, and \", _jsx(_components.a, {\n href: \"/documentation/ads-api/reference/v2.0/getPodcastShows\",\n children: \"Get Podcast Shows\"\n }), \") endpoints\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"Update to \", _jsx(_components.a, {\n href: \"/documentation/ads-api/reference/v2.0/getGeoTargets\",\n children: \"Get Geo Targets\"\n }), \" endpoint: \", _jsx(_components.code, {\n children: \"country_code\"\n }), \" is no longer required when requesting \", _jsx(_components.code, {\n children: \"types=COUNTRY\"\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [\"This means that users can now retrieve a list of all allowed country geo targets by requesting \", _jsx(_components.code, {\n children: \"types=COUNTRY\"\n }), \" and leaving all other query parameters blank\"]\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\", _jsx(_components.h4, {\n id: \"breaking-changesdeprecations-1\",\n children: \"Breaking Changes/Deprecations\"\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsx(_components.li, {\n children: \"[ACTION REQUIRED] v1-v1.4 of the Ads API was deprecated on November 13, 2023. All v1-v1.4 endpoints will be sunset on November 27, 2023, at which point calls to v1-v1.4 endpoints will fail. All partners must migrate to v2 by this date in order to avoid disruptions to their integrations.\"\n }), \"\\n\"]\n }), \"\\n\", _jsx(_components.h4, {\n id: \"documentation-updates-3\",\n children: \"Documentation Updates\"\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [\"Update to our \", _jsx(_components.a, {\n href: \"/documentation/ads-api#versioning\",\n children: \"Versioning\"\n }), \" policy: Effective November 15, 2023, the Ads API team will consider adding new enum fields as a non-breaking change and we expect our consumers to adjust their code to allow for this convention. Previously, we had not defined the expected behavior for this type of change.\"]\n }), \"\\n\"]\n }), \"\\n\", _jsx(_components.h3, {\n id: \"october-2023\",\n children: \"October 2023\"\n }), \"\\n\", _jsx(_components.p, {\n children: \"The following updates have been made to the latest version (v2) of the Ads API.\"\n }), \"\\n\", _jsx(_components.h4, {\n id: \"whats-new-5\",\n children: \"What's New\"\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [\"Launch of the new video views campaign objective:\", \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [\"New value \", _jsx(_components.code, {\n children: \"VIDEO_VIEWS\"\n }), \" is now available for the \", _jsx(_components.code, {\n children: \"objective\"\n }), \" parameter under the \", _jsx(_components.a, {\n href: \"/documentation/ads-api/reference/v2.0/createCampaign\",\n children: \"Create Campaign\"\n }), \" endpoint\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"New field (i.e., metric) called \", _jsx(_components.code, {\n children: \"VIDEO_VIEWS\"\n }), \" is now available under the \", _jsx(_components.a, {\n href: \"/documentation/ads-api/reference/v2.0/getAggregateReport\",\n children: \"Get Aggregate Report\"\n }), \" and \", _jsx(_components.a, {\n href: \"/documentation/ads-api/reference/v2.0/getAudienceInsightReport\",\n children: \"Get Insights Report\"\n }), \" endpoints\"]\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"Other reporting updates:\", \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [\"When requesting \", _jsx(_components.code, {\n children: \"entity_type\"\n }), \" = \", _jsx(_components.code, {\n children: \"AD_SET\"\n }), \" or \", _jsx(_components.code, {\n children: \"AD\"\n }), \" and \", _jsx(_components.code, {\n children: \"granularity\"\n }), \" = \", _jsx(_components.code, {\n children: \"LIFETIME\"\n }), \", any entity can now be used for filtering (e.g., at lifetime granularity, users can now filter Ads by Campaign IDs whereas previously they were only able to filter Ads by Ad IDs).\", \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [\"NOTE: If requesting \", _jsx(_components.code, {\n children: \"entity_type\"\n }), \" = \", _jsx(_components.code, {\n children: \"CAMPAIGN\"\n }), \", only Campaign IDs can be used for filtering\"]\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"Restored support for requesting \", _jsx(_components.code, {\n children: \"report_start\"\n }), \" and \", _jsx(_components.code, {\n children: \"report_end\"\n }), \" when requesting \", _jsx(_components.code, {\n children: \"LIFETIME\"\n }), \" granularity (NOTE: The date range specified for report start/end must be 90 days or less, as is already the case for \", _jsx(_components.code, {\n children: \"HOUR\"\n }), \" and \", _jsx(_components.code, {\n children: \"DAY\"\n }), \" granularity requests)\"]\n }), \"\\n\", _jsx(_components.li, {\n children: \"Improved 400 error messaging to more clearly explain the underlying issue with the request for several scenarios\"\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"Other campaign management updates:\", \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [\"Added new parameter \", _jsx(_components.code, {\n children: \"campaign_ids\"\n }), \" to Get Ad Sets endpoint to enable filtering by one or more campaign IDs\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"Added new parameter \", _jsx(_components.code, {\n children: \"ad_set_ids\"\n }), \" to Get Ads endpoint to enable filtering by one or more ad set IDs\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"Create \u0026 Update Ad Set:\", \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsx(_components.li, {\n children: \"When creating or updating an ad set, the start date must now only be 1 hour in the future (previously we required it to start at least 24 hrs in the future)\"\n }), \"\\n\", _jsx(_components.li, {\n children: \"[Bug Fix] The minimum allowed lifetime budget is now ~$250 regardless of targeted country; previous issue where an error was sometimes returned when setting a lifetime budget over ~$250 has been resolved\"\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"New endpoints:\", \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsx(_components.li, {\n children: \"Get Sensitive Topic targets: Retrieve allowed sensitive topic target values, used for excluding sensitive podcast topics from possible ad placements\"\n }), \"\\n\", _jsx(_components.li, {\n children: \"Get Podcast Episode Topic targets: Retrieve allowed podcast episode target values, used for targeting relevant podcast episode topics\"\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\", _jsx(_components.h4, {\n id: \"breaking-changesdeprecations-2\",\n children: \"Breaking Changes/Deprecations\"\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsx(_components.li, {\n children: \"[ACTION REQUIRED] Upcoming deprecation deadline: v1 through v1.4 of the Ads API will be deprecated on November 13th, 2023. All partners must migrate to v2 by this date in order to avoid disruptions to their integrations.\"\n }), \"\\n\"]\n }), \"\\n\", _jsx(_components.h4, {\n id: \"documentation-updates-4\",\n children: \"Documentation Updates\"\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsx(_components.li, {\n children: \"Added more detailed descriptions to reporting endpoint parameters to clarify expected behavior\"\n }), \"\\n\"]\n }), \"\\n\", _jsx(_components.h3, {\n id: \"september-2023\",\n children: \"September 2023\"\n }), \"\\n\", _jsx(_components.p, {\n children: \"The following updates have been made to the latest version (v2) of the Ads API.\"\n }), \"\\n\", _jsx(_components.h4, {\n id: \"whats-new-6\",\n children: \"What's New\"\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [\"Updates to reporting endpoints (\", _jsx(_components.a, {\n href: \"/documentation/ads-api/reference/v2.0/getAggregateReport\",\n children: \"Get Aggregate Report\"\n }), \" \u0026 \", _jsx(_components.a, {\n href: \"/documentation/ads-api/reference/v2.0/getAudienceInsightReport\",\n children: \"Get Insights Report\"\n }), \") in effect as of September 7th, 2023:\", \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsx(_components.li, {\n children: \"Zero-stat campaigns (i.e., campaigns that have not yet been trafficked) are now automatically included in reports\"\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"Updates to the \", _jsx(_components.code, {\n children: \"SPEND\"\n }), \" field:\", \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"SPEND\"\n }), \" is now capped based on billable impressions; this means that any spend tied to delivery over the specified budget is now filtered out in order to match the Ad Studio UI’s logic\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"SPEND\"\n }), \" is now reported in standard units instead of in micro amounts (e.g., 1800 dollars and 31 cents is now reported as \", _jsx(_components.code, {\n children: \"1800.31\"\n }), \" instead of \", _jsx(_components.code, {\n children: \"1800310000\"\n }), \" as previously)\"]\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"Updates relevant for Get Aggregate Report by Ad Account ID endpoint only:\", \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [\"The parameters \", _jsx(_components.code, {\n children: \"entity_ids\"\n }), \" and \", _jsx(_components.code, {\n children: \"entity_ids_type\"\n }), \" are now required when requesting \", _jsx(_components.code, {\n children: \"DAY\"\n }), \" or \", _jsx(_components.code, {\n children: \"HOUR\"\n }), \" granularity\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"Removed support for filtering by multiple entity IDs when \", _jsx(_components.code, {\n children: \"DAY\"\n }), \" or \", _jsx(_components.code, {\n children: \"HOUR\"\n }), \" granularity is requested -- these requests must be filtered by a single entity ID\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"When requesting \", _jsx(_components.code, {\n children: \"HOUR\"\n }), \" granularity, the API will only return data for the last 14 days\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"When requesting \", _jsx(_components.code, {\n children: \"DAY\"\n }), \" granularity:\", \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [\"The maximum allowed difference between \", _jsx(_components.code, {\n children: \"report_start\"\n }), \" and \", _jsx(_components.code, {\n children: \"report_end\"\n }), \" is 90 days – there is no limit on how far back in time \", _jsx(_components.code, {\n children: \"report_start\"\n }), \" and \", _jsx(_components.code, {\n children: \"report_end\"\n }), \" can go though\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"The timestamps for \", _jsx(_components.code, {\n children: \"report_start\"\n }), \" and \", _jsx(_components.code, {\n children: \"report_end\"\n }), \" must be rounded to the nearest day (e.g., \", _jsx(_components.code, {\n children: \"2023-09-15T00:00:00Z\"\n }), \")\"]\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\", _jsx(_components.h4, {\n id: \"breaking-changesdeprecations-3\",\n children: \"Breaking Changes/Deprecations\"\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsx(_components.li, {\n children: \"[ACTION REQUIRED] Upcoming deprecation deadline: v1 through v1.4 of the Ads API will be deprecated on November 13th, 2023 and sunset on November 27, 2023. All partners must migrate to v2 by this date in order to avoid disruptions to their integrations.\"\n }), \"\\n\"]\n }), \"\\n\", _jsx(_components.h3, {\n id: \"august-2023\",\n children: \"August 2023\"\n }), \"\\n\", _jsx(_components.h4, {\n id: \"announcing-ads-api-v2\",\n children: \"Announcing Ads API v2!\"\n }), \"\\n\", _jsx(_components.p, {\n children: \"All of the following updates are included under a new major version (v2) released on August 8, 2023.\"\n }), \"\\n\", _jsx(_components.h4, {\n id: \"whats-changing\",\n children: \"What's Changing\"\n }), \"\\n\", _jsx(_components.h4, {\n id: \"general\",\n children: \"General\"\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsx(_components.li, {\n children: \"The Campaign Management API is now generally available! These endpoints no longer require a manual\\nallowlisting process to access.\"\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"[Breaking Change] The following entities have been deprecated from the API:\", \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"advertiser\"\n }), \": All references to advertiser, including advertiser endpoints, have been removed\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"organization\"\n }), \": All references to organization have been removed\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"ad_set_links\"\n }), \": All references to ad_set_links, including Ad Set Link endpoints, have been removed\"]\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\", _jsx(_components.li, {\n children: \"[Breaking Change] All resource names now follow snake_case convention (previously in v1, camelCase\\nwas used for path resources)\"\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"[Breaking Change] All \", _jsx(_components.code, {\n children: \"update\"\n }), \" requests now use the PATCH method to support partial data updates\\n(previously in v1, PUT was used even though the resource is not fully replaced)\"]\n }), \"\\n\"]\n }), \"\\n\", _jsx(_components.h4, {\n id: \"paging\",\n children: \"Paging\"\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [\"[Breaking Change] \", _jsx(_components.code, {\n children: \"page_size\"\n }), \" has been renamed to \", _jsx(_components.code, {\n children: \"limit\"\n }), \" in all instances (previously in v1, both\\n\", _jsx(_components.code, {\n children: \"page_size\"\n }), \" and \", _jsx(_components.code, {\n children: \"limit\"\n }), \" were used)\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"[New] \", _jsx(_components.code, {\n children: \"paging\"\n }), \" object is now returned if pagination is specified. Example:\"]\n }), \"\\n\"]\n }), \"\\n\", _jsx(CH.Code, {\n codeConfig: chCodeConfig,\n northPanel: {\n \"tabs\": [\"\"],\n \"active\": \"\",\n \"heightRatio\": 1\n },\n files: [{\n \"name\": \"\",\n \"focus\": \"\",\n \"code\": {\n \"lines\": [{\n \"tokens\": [{\n \"content\": \" \\\"paging\\\"\",\n \"props\": {\n \"style\": {\n \"color\": \"#2CCDA9\"\n }\n }\n }, {\n \"content\": \": {\",\n \"props\": {\n \"style\": {\n \"color\": \"#FFFFFF\"\n }\n }\n }]\n }, {\n \"tokens\": [{\n \"content\": \" \\\"page_size\\\"\",\n \"props\": {\n \"style\": {\n \"color\": \"#E1D457\",\n \"fontStyle\": \"italic\"\n }\n }\n }, {\n \"content\": \": \",\n \"props\": {\n \"style\": {\n \"color\": \"#FFFFFF\"\n }\n }\n }, {\n \"content\": \"50\",\n \"props\": {\n \"style\": {\n \"color\": \"#2CCDA9\"\n }\n }\n }, {\n \"content\": \",\",\n \"props\": {\n \"style\": {\n \"color\": \"#FFFFFF\"\n }\n }\n }]\n }, {\n \"tokens\": [{\n \"content\": \" \\\"total_results\\\"\",\n \"props\": {\n \"style\": {\n \"color\": \"#E1D457\",\n \"fontStyle\": \"italic\"\n }\n }\n }, {\n \"content\": \": \",\n \"props\": {\n \"style\": {\n \"color\": \"#FFFFFF\"\n }\n }\n }, {\n \"content\": \"17\",\n \"props\": {\n \"style\": {\n \"color\": \"#2CCDA9\"\n }\n }\n }, {\n \"content\": \",\",\n \"props\": {\n \"style\": {\n \"color\": \"#FFFFFF\"\n }\n }\n }]\n }, {\n \"tokens\": [{\n \"content\": \" \\\"offset\\\"\",\n \"props\": {\n \"style\": {\n \"color\": \"#E1D457\",\n \"fontStyle\": \"italic\"\n }\n }\n }, {\n \"content\": \": \",\n \"props\": {\n \"style\": {\n \"color\": \"#FFFFFF\"\n }\n }\n }, {\n \"content\": \"0\",\n \"props\": {\n \"style\": {\n \"color\": \"#2CCDA9\"\n }\n }\n }]\n }, {\n \"tokens\": [{\n \"content\": \" }\",\n \"props\": {\n \"style\": {\n \"color\": \"#FFFFFF\"\n }\n }\n }]\n }],\n \"lang\": \"json\"\n },\n \"annotations\": []\n }]\n }), \"\\n\", _jsx(_components.h4, {\n id: \"ad-accounts\",\n children: \"Ad Accounts\"\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [\"Endpoint to query a single ad account by ID called \", _jsx(_components.code, {\n children: \"Get an Ad Account\"\n }), \" is now available\"]\n }), \"\\n\", _jsx(_components.li, {\n children: \"Get Ad Accounts endpoint path has been shortened to GET /ad_accounts (was\\npreviously GET /currentUser/adAccounts)\"\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"[Breaking Change] The following parameters have been deprecated from the ad account entity:\", \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsx(_components.li, {\n children: _jsx(_components.code, {\n children: \"organization_id\"\n })\n }), \"\\n\", _jsx(_components.li, {\n children: _jsx(_components.code, {\n children: \"ad_studio_lead\"\n })\n }), \"\\n\", _jsx(_components.li, {\n children: _jsx(_components.code, {\n children: \"description\"\n })\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"[Breaking Change] The following parameters have been renamed under the ad account entity:\", \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"last_modified\"\n }), \" is now \", _jsx(_components.code, {\n children: \"updated_at\"\n })]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"iso_country_code\"\n }), \" is now \", _jsx(_components.code, {\n children: \"country_code\"\n })]\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\", _jsx(_components.h4, {\n id: \"campaigns\",\n children: \"Campaigns\"\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [\"[New] The following parameters have been added to the campaign entity:\", \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"updated_at\"\n }), \": When the campaign was last updated (read only)\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"purchase_order\"\n }), \": Intended for organizational purposes; if specified, it will be displayed on\\ninvoices (optional for Create Campaign requests and cannot be updated)\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"objective\"\n }), \": The objective of the campaign, previously referred to as \", _jsx(_components.code, {\n children: \"bid_optimization_goal\"\n }), \"\\nat the ad set level (required for Create Campaign requests and cannot be updated)\"]\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"[Breaking Change] The following parameters have been deprecated from the campaign entity:\", \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsx(_components.li, {\n children: _jsx(_components.code, {\n children: \"description\"\n })\n }), \"\\n\", _jsx(_components.li, {\n children: _jsx(_components.code, {\n children: \"advertiser_id\"\n })\n }), \"\\n\", _jsx(_components.li, {\n children: _jsx(_components.code, {\n children: \"landing_page_domain\"\n })\n }), \"\\n\", _jsx(_components.li, {\n children: _jsx(_components.code, {\n children: \"version\"\n })\n }), \"\\n\", _jsx(_components.li, {\n children: _jsx(_components.code, {\n children: \"ad_set_ids\"\n })\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"[Breaking Change] The following endpoints have been deprecated:\", \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsx(_components.li, {\n children: \"Update Campaign Status\"\n }), \"\\n\", _jsx(_components.li, {\n children: \"Get Campaigns (users can continue to call Get Campaigns by Ad Account ID and Get Campaigns by\\nID endpoints to retrieve campaigns)\"\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"[Breaking Change] The following filters under Get Campaigns by Ad Account ID endpoint have been\\ndeprecated:\", \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"ids\"\n }), \" (ability to query by a single campaign ID still supported under Get Campaign by ID endpoint,\\nbut querying by an array of IDs is no longer supported)\"]\n }), \"\\n\", _jsx(_components.li, {\n children: _jsx(_components.code, {\n children: \"advertiser_ids\"\n })\n }), \"\\n\", _jsx(_components.li, {\n children: _jsx(_components.code, {\n children: \"statuses\"\n })\n }), \"\\n\", _jsx(_components.li, {\n children: _jsx(_components.code, {\n children: \"name\"\n })\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"[Breaking Change] The following parameters have been renamed under the campaign entity:\", \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"created_on\"\n }), \" is now \", _jsx(_components.code, {\n children: \"created_at\"\n })]\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\", _jsx(_components.h4, {\n id: \"ad-sets\",\n children: \"Ad Sets\"\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [\"[New] The following parameters have been added to the ad set entity:\", \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"updated_at\"\n }), \": When the campaign was last updated (read only)\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"[Breaking Change] \", _jsx(_components.code, {\n children: \"category\"\n }), \": A category that most closely matches the content of the ad(s);\\ncertain categories may be subject to restrictions (required for Create Ad Set requests and\\ncan be updated)\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"podcast_episode_topics\"\n }), \": Podcast episode topics to target (optional for Create Ad Set requests\\nand can be updated)\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"sensitive_topic_exclusions\"\n }), \": Sensitive podcast episode topics to exclude from ad placements\\n(optional for Create Ad Set requests and can be updated)\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"language\"\n }), \": Languages to target; languages are based on the language users use on Spotify\\n(optional for Create Ad Set requests and cannot be updated)\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"interests\"\n }), \": Interests to target; interests are based on listening habits and playlist preferences\\n(optional for Create Ad Set requests and can be updated)\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"exclude_placements\"\n }), \": When targeting a market where podcast ads are supported, placements will\\nautomatically default to include both podcast and music; users can set this parameter to \", _jsx(_components.code, {\n children: \"PODCAST\"\n }), \"\\nin order to limit their ad placement to music only (optional for Create Ad Set requests and can be\\nupdated)\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"delivery\"\n }), \": Use to pause/resume ad set delivery; if set to \", _jsx(_components.code, {\n children: \"ON\"\n }), \", ad set will be served (once ad review\\nis passed and start date occurs) and if set to \", _jsx(_components.code, {\n children: \"OFF\"\n }), \", ad set will not be served (optional for Create\\nAd Set requests and can be updated)\"]\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"[Breaking Change] The following parameters have been deprecated from the ad set entity:\", \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsx(_components.li, {\n children: _jsx(_components.code, {\n children: \"advertiser_id\"\n })\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"ad_ids\"\n }), \" (ability to link an ad to an ad set is still supported at the ad entity level)\"]\n }), \"\\n\", _jsx(_components.li, {\n children: _jsx(_components.code, {\n children: \"active_status\"\n })\n }), \"\\n\", _jsx(_components.li, {\n children: _jsx(_components.code, {\n children: \"ad_set_links\"\n })\n }), \"\\n\", _jsx(_components.li, {\n children: _jsx(_components.code, {\n children: \"custom_audience_ids\"\n })\n }), \"\\n\", _jsx(_components.li, {\n children: _jsx(_components.code, {\n children: \"serving_issues\"\n })\n }), \"\\n\", _jsx(_components.li, {\n children: _jsx(_components.code, {\n children: \"version\"\n })\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"[Breaking Change] The following parameters have had schema changes or been renamed under the\\nad set entity:\", \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"targeting has been renamed to \"\n }), \"targets`\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"budget\"\n }), \" object added to the Create Ad Set request in order to match response schema:\", \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"budget_micro_amount\"\n }), \" in the Create Ad Set request is now nested under the \", _jsx(_components.code, {\n children: \"budget\"\n }), \" object\\nand renamed to \", _jsx(_components.code, {\n children: \"micro_amount\"\n }), \" (previously \", _jsx(_components.code, {\n children: \"budget_micro_amount\"\n }), \" was a root-level parameter)\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"type\"\n }), \" parameter has been added to specify a \", _jsx(_components.code, {\n children: \"DAILY\"\n }), \" or \", _jsx(_components.code, {\n children: \"LIFETIME\"\n }), \" budget (required for\\nCreate Ad Set requests)\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"country_code\"\n }), \" has been renamed to \", _jsx(_components.code, {\n children: \"currency\"\n }), \" (read only)\"]\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"Names of the following targeting parameters have been simplified:\", \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"gender_names\"\n }), \" is now \", _jsx(_components.code, {\n children: \"genders\"\n })]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"platform_names\"\n }), \" is now \", _jsx(_components.code, {\n children: \"platforms\"\n })]\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"Geo targeting parameters (\", _jsx(_components.code, {\n children: \"country_code\"\n }), \", \", _jsx(_components.code, {\n children: \"regions\"\n }), \", \", _jsx(_components.code, {\n children: \"dmas\"\n }), \", \", _jsx(_components.code, {\n children: \"cities\"\n }), \", \", _jsx(_components.code, {\n children: \"postal_codes\"\n }), \") are now\\nnested within a new - \", _jsx(_components.code, {\n children: \"geo_targets\"\n }), \" object under \", _jsx(_components.code, {\n children: \"targets\"\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsx(_components.li, {\n children: \"All geo target IDs are now string data type (previously they were integers [int32])\"\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"Metadata (e.g., \", _jsx(_components.code, {\n children: \"name\"\n }), \") is no longer returned with targeting parameters in Get Ad Set by Ad\\nAccount ID response – objects have been flattened into arrays where only the target ID(s) are\\nincluded now\", \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsx(_components.li, {\n children: \"Metadata is still included in Get Ad Set by Ad Set ID response\"\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"artist_promotion\"\n }), \" has been renamed to \", _jsx(_components.code, {\n children: \"promotion\"\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"name\"\n }), \" parameter under \", _jsx(_components.code, {\n children: \"artist_promotion\"\n }), \" has been removed\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"artist_promotion_goal\"\n }), \" has been renamed to \", _jsx(_components.code, {\n children: \"promotion_goal\"\n })]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"Changes to the following promotion goal enum values:\", \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"ARTIST_CONTENT\"\n }), \" has been removed (artist targeting is now allowed for any ad set)\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"PODCAST_PROMO\"\n }), \" has been added (for promoting a podcast)\"]\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"artist_promotion_target\"\n }), \" object has been removed and replaced with \", _jsx(_components.code, {\n children: \"promotion_target_id\"\n }), \"\\nparameter\"]\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"bid_optimization_goal\"\n }), \" has been moved to the campaign entity level and renamed \", _jsx(_components.code, {\n children: \"objective\"\n })]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"format\"\n }), \" has been moved out of the \", _jsx(_components.code, {\n children: \"targeting\"\n }), \" object and is now a root-level parameter, and\\nhas been renamed to - \", _jsx(_components.code, {\n children: \"asset_format\"\n })]\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"[Breaking Change] The following endpoints have been deprecated:\", \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsx(_components.li, {\n children: \"Update Ad Set Status (ability to update campaign status has been consolidated into Create and\\nUpdate Ad Set endpoints in v2)\"\n }), \"\\n\", _jsx(_components.li, {\n children: \"Get Ad Sets (users can continue to call Get Campaigns by Ad Account ID and Get Campaigns by ID\\nendpoints to retrieve campaigns)\"\n }), \"\\n\", _jsx(_components.li, {\n children: \"Get Ad Set Links\"\n }), \"\\n\", _jsx(_components.li, {\n children: \"Get Ad Sets by Campaign\"\n }), \"\\n\", _jsx(_components.li, {\n children: \"Update Ad Set Link Status\"\n }), \"\\n\", _jsx(_components.li, {\n children: \"Get Ad Set Serving Status\"\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"[Breaking Change] The following filters under Get Ad Sets by Ad Account ID endpoint have been\\ndeprecated:\", \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [\"ids (ability to query by a single ad set ID still supported under Get Ad Set by ID endpoint,\\nbut querying by an array of IDs is no longer supported)\", \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsx(_components.li, {\n children: _jsx(_components.code, {\n children: \"advertiser_ids\"\n })\n }), \"\\n\", _jsx(_components.li, {\n children: _jsx(_components.code, {\n children: \"campaign_ids\"\n })\n }), \"\\n\", _jsx(_components.li, {\n children: _jsx(_components.code, {\n children: \"ad_ids\"\n })\n }), \"\\n\", _jsx(_components.li, {\n children: _jsx(_components.code, {\n children: \"active_statuses\"\n })\n }), \"\\n\", _jsx(_components.li, {\n children: _jsx(_components.code, {\n children: \"statuses\"\n })\n }), \"\\n\", _jsx(_components.li, {\n children: _jsx(_components.code, {\n children: \"ad_stauses\"\n })\n }), \"\\n\", _jsx(_components.li, {\n children: _jsx(_components.code, {\n children: \"name\"\n })\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"[Breaking Change] The following validation logic has been added:\", \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsx(_components.li, {\n children: \"Minimum budget amount\"\n }), \"\\n\", _jsx(_components.li, {\n children: \"Minimum bid amount\"\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\", _jsx(_components.h4, {\n id: \"ads\",\n children: \"Ads\"\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [\"[New] The following parameters have been added to the ad entity:\", \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsx(_components.li, {\n children: \"updated_at: When the ad was last updated (read only)\"\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"call to action: The metadata for the behavior of the call-to-action button\", \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"text\"\n }), \": The text used for the call-to-action button -- currently defaults to \", _jsx(_components.code, {\n children: \"LEARN MORE\"\n }), \" but\\noption to configure is coming soon (by end of August 2023)\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"clickthrough_url\"\n }), \": The link to the ads desired landing page.\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"language\"\n }), \": The language in which the call-to-action text is presented -- currently defaults to\\n\\\"ENGLISH\\\" but option to configure is coming soon (by end of August 2023)\"]\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"delivery\"\n }), \": Use to pause/resume ad delivery; if set to \", _jsx(_components.code, {\n children: \"ON\"\n }), \", ad will be served (once ad review is\\npassed and start date occurs) and if set to \", _jsx(_components.code, {\n children: \"OFF\"\n }), \", ad will not be served (optional for Create Ad\\nrequests and can be updated)\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"ad_preview_url\"\n }), \": Link to view a preview of the ad\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"ad_set_id\"\n }), \": The ID of the ad set to which the ad belongs\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"logo_image_asset\"\n }), \": Part of \", _jsx(_components.code, {\n children: \"assets\"\n }), \" object; logo image for the ad (optional for Create Ad requests\\nand can be updated)\"]\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"[Breaking Change] The following parameters have been deprecated from the ad entity:\", \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsx(_components.li, {\n children: _jsx(_components.code, {\n children: \"advertiser_id\"\n })\n }), \"\\n\", _jsx(_components.li, {\n children: _jsx(_components.code, {\n children: \"landing_page_domain\"\n })\n }), \"\\n\", _jsx(_components.li, {\n children: _jsx(_components.code, {\n children: \"version\"\n })\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"[Breaking Change] The following endpoints have been deprecated:\", \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsx(_components.li, {\n children: \"Get Ads (users can continue to call Get Ads by Ad Account ID and Get Ads by ID endpoints to retrieve\\ncampaigns)\"\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"[Breaking Change] The following parameters have had schema changes or been renamed under the ad entity:\", \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"created\"\n }), \" has been renamed to \", _jsx(_components.code, {\n children: \"created_at\"\n })]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"brand_name\"\n }), \" has been renamed to \", _jsx(_components.code, {\n children: \"advertiser_name\"\n })]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"clickthrough_url\"\n }), \" is now nested under the \", _jsx(_components.code, {\n children: \"call_to_action\"\n }), \" object\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"assets\"\n }), \" object has been simplified to contain the following parameters:\", \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"asset_id\"\n }), \": ID of an audio or video asset (required on Create Ad requests and can be updated)\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"companion_asset_id\"\n }), \": ID of a companion image asset (required on Create Ad requests and can be updated)\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"logo_asset_id\"\n }), \": Nested under \", _jsx(_components.code, {\n children: \"assets\"\n }), \" object - ID of a logo image asset (optional on Create Ad\\nrequests and can be updated)\"]\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"third_party_viewability_tracking\"\n }), \" has been renamed to \", _jsx(_components.code, {\n children: \"third_party_tracking\"\n }), \" and contains the\\nfollowing parameters:\", \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"measurement_partner\"\n }), \": Name of the third-party measurement partner; \", _jsx(_components.code, {\n children: \"DCM\"\n }), \" is now supported along\\nwith \", _jsx(_components.code, {\n children: \"IAS\"\n })]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"url\"\n }), \": Third-party tracking URL\"]\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"[Breaking Change] The following filters have been deprecated under Get Ads by Ad Account ID endpoint:\", \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"ids\"\n }), \" (ability to query by a single ad ID still supported under Get Ad by ID endpoint, but querying\\nby an array of IDs is no longer supported)\"]\n }), \"\\n\", _jsx(_components.li, {\n children: _jsx(_components.code, {\n children: \"ad_set_ids\"\n })\n }), \"\\n\", _jsx(_components.li, {\n children: _jsx(_components.code, {\n children: \"statuses\"\n })\n }), \"\\n\", _jsx(_components.li, {\n children: _jsx(_components.code, {\n children: \"name\"\n })\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\", _jsx(_components.h4, {\n id: \"assets\",\n children: \"Assets\"\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [\"[Breaking Change] Get Audio Assets, Get Video Assets, and Get Image Assets endpoints have been\\ndeprecated and replaced with a single endpoint called \", _jsx(_components.code, {\n children: \"Get Assets by Asset Type and Ad Account\"\n })]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"[Breaking Change] Get Audio Asset, Get Video Asset, and Get Image Asset endpoints have been\\ndeprecated and replaced with a single endpoint called \", _jsx(_components.code, {\n children: \"Get Asset\"\n })]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"[Breaking Change] Get Fullmix Upload Url, Get Video Upload Url, and Get Image Upload Url endpoints\\nhave been deprecated and replaced with a single \", _jsx(_components.code, {\n children: \"Create Asset\"\n }), \" endpoint\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"[New] The following endpoints have been added to enable asset upload:\", \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsx(_components.li, {\n children: \"Upload Asset: Upload image, audio, or video assets that are 25 MB or smaller\"\n }), \"\\n\", _jsx(_components.li, {\n children: \"Start Upload Chunked Asset: Start a chunked upload session for image, audio, or video assets\\n(required for files that are 25 MB or larger)\"\n }), \"\\n\", _jsx(_components.li, {\n children: \"Transfer Chunked Asset: Continues the upload session of a chunked asset by transferring one section\\nof binary media data\"\n }), \"\\n\", _jsx(_components.li, {\n children: \"Complete Upload Chunked Asset: Completes the upload session of a chunked asset\"\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"[New] Endpoint to update an asset called \", _jsx(_components.code, {\n children: \"Update Asset\"\n }), \" is now available\"]\n }), \"\\n\"]\n }), \"\\n\", _jsx(_components.h4, {\n id: \"targets\",\n children: \"Targets\"\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [\"[New] Support for the following new targeting types has been added:\", \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsx(_components.li, {\n children: \"Postal codes: Postal code IDs can be retrieved via Get Geo Targets endpoint and input as an\\noptional parameter in ‘targeting’ under ad sets entities\"\n }), \"\\n\", _jsx(_components.li, {\n children: \"Interests: Interests can be retrieved via new endpoint Get Interest Targets and input as an\\noptional parameter in ‘targeting’ under ad sets entities\"\n }), \"\\n\", _jsx(_components.li, {\n children: \"Languages: Languages can be retrieved via new endpoint Get Language Targets and input as an\\noptional parameter in ‘targeting’ under ad sets entities\"\n }), \"\\n\", _jsx(_components.li, {\n children: \"Podcast episode topics: Only available for markets where podcast ads are supported – podcast\\nepisode topics can be retrieved via new endpoint Get Podcast Episode Targets and input as an\\noptional parameter in ‘targeting’ under ad sets entities\"\n }), \"\\n\", _jsx(_components.li, {\n children: \"Podcast sensitive episode topic exclusion: Only available for markets where podcast ads are\\nsupported – podcast sensitive episode topics can be retrieved via new endpoint Get Interest\\nTargets and input as an optional parameter in ‘targeting’ under ad sets entities\"\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"[Breaking Change] Consolidation of previous v1 targeting endpoints:\", \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsx(_components.li, {\n children: \"Get Artist Targets and Search Artist Targets have been consolidated into a single endpoint\\nGet Artist Targets\"\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"Get Genre Targets and Search Genre Targets have been consolidated into a single endpoint\\nGet Genre Targets\", \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsx(_components.li, {\n children: \"Querying by ids is no longer supported\"\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"Get Playlist Targets and Search Playlist Targets have been consolidated into a single endpoint\\nGet Playlist Targets\", \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsx(_components.li, {\n children: \"Querying by ids is no longer supported\"\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"Get Geo Targets and Search Geo Targets have been consolidated into a single endpoint Get Geo Targets\", \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [\"New parameter \", _jsx(_components.code, {\n children: \"parent_geo_name\"\n }), \" added to geo target entity\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"Renamed \", _jsx(_components.code, {\n children: \"id\"\n }), \" and \", _jsx(_components.code, {\n children: \"type\"\n }), \" parameters to \", _jsx(_components.code, {\n children: \"geo_id\"\n }), \" and \", _jsx(_components.code, {\n children: \"geo_type\"\n }), \" under geo target entity\"]\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\", _jsx(_components.h4, {\n id: \"reporting\",\n children: \"Reporting\"\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [\"[Breaking Change] Create Report and Create Report by Ad Account have been deprecated and replaced\\nwith the following endpoints:\", \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsx(_components.li, {\n children: \"Get Aggregate Report by Ad Account Id: Returns aggregated ad campaign metrics based on requested\\nfields and dimensions\"\n }), \"\\n\", _jsx(_components.li, {\n children: \"Get Insight Report by Ad Account Id: Returns ad campaign metrics broken out by audience insights\\n(e.g., age, gender, genre) based on requested fields – available only as ad set level breakdown\\nat lifetime granularity and does not support report start/end time filtering\"\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"[Breaking Change] The following \", _jsx(_components.code, {\n children: \"dimensions\"\n }), \" values have been deprecated:\", \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsx(_components.li, {\n children: _jsx(_components.code, {\n children: \"YEAR\"\n })\n }), \"\\n\", _jsx(_components.li, {\n children: _jsx(_components.code, {\n children: \"MONTH\"\n })\n }), \"\\n\", _jsx(_components.li, {\n children: _jsx(_components.code, {\n children: \"CURRENCY\"\n })\n }), \"\\n\", _jsx(_components.li, {\n children: _jsx(_components.code, {\n children: \"COST_TYPE\"\n })\n }), \"\\n\", _jsx(_components.li, {\n children: _jsx(_components.code, {\n children: \"ADVERTISER\"\n })\n }), \"\\n\", _jsx(_components.li, {\n children: _jsx(_components.code, {\n children: \"DMA\"\n })\n }), \"\\n\", _jsx(_components.li, {\n children: _jsx(_components.code, {\n children: \"REGION\"\n })\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"[Breaking Change] The following \", _jsx(_components.code, {\n children: \"fields\"\n }), \" values have been deprecated:\", \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsx(_components.li, {\n children: _jsx(_components.code, {\n children: \"FETCHES\"\n })\n }), \"\\n\", _jsx(_components.li, {\n children: _jsx(_components.code, {\n children: \"RENDER_RATIO\"\n })\n }), \"\\n\", _jsx(_components.li, {\n children: _jsx(_components.code, {\n children: \"FETCH_REACH\"\n })\n }), \"\\n\", _jsx(_components.li, {\n children: _jsx(_components.code, {\n children: \"SERVES\"\n })\n }), \"\\n\", _jsx(_components.li, {\n children: _jsx(_components.code, {\n children: \"ERRORS\"\n })\n }), \"\\n\", _jsx(_components.li, {\n children: _jsx(_components.code, {\n children: \"COMPLETION_RATE\"\n })\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"[Breaking Change] The following fields have been renamed:\", \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"SERVE_REACH\"\n }), \" is now \", _jsx(_components.code, {\n children: \"REACH\"\n })]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"SERVE_FREQ\"\n }), \" is now \", _jsx(_components.code, {\n children: \"FREQUENCY\"\n })]\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"[Breaking Change] The following filters have been deprecated:\", \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsx(_components.li, {\n children: _jsx(_components.code, {\n children: \"advertiser_ids\"\n })\n }), \"\\n\", _jsx(_components.li, {\n children: _jsx(_components.code, {\n children: \"country_isos\"\n })\n }), \"\\n\", _jsx(_components.li, {\n children: _jsx(_components.code, {\n children: \"region_ids\"\n })\n }), \"\\n\", _jsx(_components.li, {\n children: _jsx(_components.code, {\n children: \"dma_ids\"\n })\n }), \"\\n\", _jsx(_components.li, {\n children: _jsx(_components.code, {\n children: \"platforms\"\n })\n }), \"\\n\", _jsx(_components.li, {\n children: _jsx(_components.code, {\n children: \"ad_set_start_dates\"\n })\n }), \"\\n\", _jsx(_components.li, {\n children: _jsx(_components.code, {\n children: \"ad_set_end_dates\"\n })\n }), \"\\n\", _jsx(_components.li, {\n children: _jsx(_components.code, {\n children: \"cost_type_filters\"\n })\n }), \"\\n\", _jsx(_components.li, {\n children: _jsx(_components.code, {\n children: \"organization_ids\"\n })\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"ad_account_ids\"\n }), \" (all reports must now include a single ad account ID in the path but filtering\\nby multiple ad account IDs is no longer supported)\"]\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"[Breaking Change] Filtering by campaign, ad set, or ad ID(s) has been consolidated into two\\ngeneric fields (previously this was supported via separate filters for each entity type):\", \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsx(_components.li, {\n children: \"entity_ids: A list of one or more campaign, ad set, or ad IDs by which to filter reporting\"\n }), \"\\n\", _jsx(_components.li, {\n children: \"entity_ids_type: The entity type of IDs contained in the entity_ids field – if entity_ids is set,\\nthis field is required.\"\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"[Breaking Change] Filtering by campaign, ad set, or ad ID status(es) has been consolidated into\\ntwo generic fields:\", \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsx(_components.li, {\n children: \"entity_status_type: The entity type of statuses contained in the statuses field\"\n }), \"\\n\", _jsx(_components.li, {\n children: \"statuses: A list of one or more campaign, ad set, or ad statuses by which to filter reporting –\\nIf this field is set, the entity_status_type field is required\"\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"[New] The following audience insight dimensions have been added and are available under the Get\\nInsight Report by Ad Account ID endpoint:\", \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsx(_components.li, {\n children: _jsx(_components.code, {\n children: \"AGE\"\n })\n }), \"\\n\", _jsx(_components.li, {\n children: _jsx(_components.code, {\n children: \"GENDER\"\n })\n }), \"\\n\", _jsx(_components.li, {\n children: _jsx(_components.code, {\n children: \"GENRE\"\n })\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"[New] The following updates will go into effect on September 1, 2023:\", \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsx(_components.li, {\n children: \"Data refresh cadence will be increased to hourly (vs every few hours in v1-v1.4) – this will\\nresult in a discrepancy between UI and API stats for those who have not yet updated their\\nintegration to v2\"\n }), \"\\n\", _jsx(_components.li, {\n children: \"Zero-stat campaigns (i.e., campaigns that have not yet been trafficked) will automatically be\\nincluded in reports\"\n }), \"\\n\", _jsx(_components.li, {\n children: \"SPEND field will be capped based on billable impressions; this means that spend tied to delivery\\nover the specified budget will now be filtered out in order to match the UI’s logic\"\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\", _jsx(_components.h4, {\n id: \"estimates\",\n children: \"Estimates\"\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [\"Estimate Bid (formerly known as \", _jsx(_components.code, {\n children: \"Get Bid Estimate\"\n }), \")\", \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [\"[Breaking Change] Get Bid Estimate endpoint has been shortened to POST \", _jsx(_components.code, {\n children: \"/estimates/bid\"\n }), \" (was\\npreviously POST \", _jsx(_components.code, {\n children: \"/adAccounts/{ad_account_id}/estimate/bid\"\n }), \")\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"[Breaking Change] \", _jsx(_components.code, {\n children: \"budget_micro_amount\"\n }), \" is no longer required in the request body\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"[Breaking Change] The following parameters are now required when fetching a bid estimate:\", \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsx(_components.li, {\n children: _jsx(_components.code, {\n children: \"start_date\"\n })\n }), \"\\n\", _jsx(_components.li, {\n children: _jsx(_components.code, {\n children: \"end_date\"\n })\n }), \"\\n\", _jsx(_components.li, {\n children: _jsx(_components.code, {\n children: \"asset_format\"\n })\n }), \"\\n\", _jsx(_components.li, {\n children: _jsx(_components.code, {\n children: \"bid_strategy\"\n })\n }), \"\\n\", _jsx(_components.li, {\n children: _jsx(_components.code, {\n children: \"currency\"\n })\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"[Breaking Change] \", _jsx(_components.code, {\n children: \"bid_optimization_goal\"\n }), \" has been renamed to \", _jsx(_components.code, {\n children: \"objective\"\n })]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"[New] The following optional request body parameters have been added:\", \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsx(_components.li, {\n children: \"frequency_caps\"\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"Under \", _jsx(_components.code, {\n children: \"targets\"\n }), \" object:\", \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"postal_code_ids\"\n }), \" (nested under geo_targets)\"]\n }), \"\\n\", _jsx(_components.li, {\n children: _jsx(_components.code, {\n children: \"podcast_episode_topic_ids\"\n })\n }), \"\\n\", _jsx(_components.li, {\n children: _jsx(_components.code, {\n children: \"sensitive_topic_exclusion_ids\"\n })\n }), \"\\n\", _jsx(_components.li, {\n children: _jsx(_components.code, {\n children: \"language\"\n })\n }), \"\\n\", _jsx(_components.li, {\n children: _jsx(_components.code, {\n children: \"interest_ids\"\n })\n }), \"\\n\", _jsx(_components.li, {\n children: _jsx(_components.code, {\n children: \"exclude_placements\"\n })\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"Estimate Audience (formerly known as \", _jsx(_components.code, {\n children: \"Get Audience Estimate\"\n }), \")\", \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [\"[Breaking Change] Get Bid Estimate endpoint has been shortened to POST \", _jsx(_components.code, {\n children: \"/estimates/audience\"\n }), \" (was\\npreviously POST \", _jsx(_components.code, {\n children: \"/adAccounts/{ad_account_id}/estimate/audience\"\n }), \")\"]\n }), \"\\n\", _jsx(_components.li, {\n children: \"[Breaking Change] ad_account_id is now a request body parameter (was previously a path parameter)\"\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"[Breaking Change] The following parameters are now required when fetching a bid estimate:\", \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsx(_components.li, {\n children: _jsx(_components.code, {\n children: \"start_date\"\n })\n }), \"\\n\", _jsx(_components.li, {\n children: _jsx(_components.code, {\n children: \"end_date\"\n })\n }), \"\\n\", _jsx(_components.li, {\n children: _jsx(_components.code, {\n children: \"asset_format\"\n })\n }), \"\\n\", _jsx(_components.li, {\n children: _jsx(_components.code, {\n children: \"bid_strategy\"\n })\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"budget\"\n }), \" (type \u0026 micro_amount)\"]\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"[Breaking Change] \", _jsx(_components.code, {\n children: \"bid_optimization_goal\"\n }), \" has been renamed to \", _jsx(_components.code, {\n children: \"objective\"\n })]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"[New] The following optional request body parameters have been added:\", \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsx(_components.li, {\n children: \"frequency_caps\"\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"Under \", _jsx(_components.code, {\n children: \"targets\"\n }), \" object:\", \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"postal_code_ids\"\n }), \" (nested under geo_targets)\"]\n }), \"\\n\", _jsx(_components.li, {\n children: _jsx(_components.code, {\n children: \"podcast_episode_topic_ids\"\n })\n }), \"\\n\", _jsx(_components.li, {\n children: _jsx(_components.code, {\n children: \"sensitive_topic_exclusion_ids\"\n })\n }), \"\\n\", _jsx(_components.li, {\n children: _jsx(_components.code, {\n children: \"language\"\n })\n }), \"\\n\", _jsx(_components.li, {\n children: _jsx(_components.code, {\n children: \"interest_ids\"\n })\n }), \"\\n\", _jsx(_components.li, {\n children: _jsx(_components.code, {\n children: \"exclude_placements\"\n })\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"[New] The following parameters have been added to the response body:\", \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsx(_components.li, {\n children: _jsx(_components.code, {\n children: \"estimated_frequency_min\"\n })\n }), \"\\n\", _jsx(_components.li, {\n children: _jsx(_components.code, {\n children: \"estimated_frequency_max\"\n })\n }), \"\\n\", _jsx(_components.li, {\n children: \"forecast_type: The time granularity of the forecast -- if a \\\"LIFETIME\\\" budget type is specified,\\nthe API will return a single \\\"LIFETIME\\\" forecast type and if a \\\"DAILY\\\" budget type is specified,\\nthe API will return \\\"DAILY\\\", \\\"WEEKLY\\\" and \\\"MONTHLY\\\" forecast types\"\n }), \"\\n\", _jsx(_components.li, {\n children: \"likely_to_deliver_budget: Indicates the likelihood of spending most of the budget\"\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\", _jsx(_components.h4, {\n id: \"ad-categories-new\",\n children: \"Ad Categories [New]\"\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [\"Get Ad Categories endpoint: Ad categories can be retrieved via this endpoint and input under the\\n\", _jsx(_components.code, {\n children: \"ad_category\"\n }), \" parameter in the Create Ad Set request\"]\n }), \"\\n\"]\n }), \"\\n\", _jsx(_components.h4, {\n id: \"podcast-shows-new\",\n children: \"Podcast Shows [New]\"\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [\"Get Podcast Shows endpoint: Available for podcast promotion use only (not for targeting) –\\npodcast shows can be retrieved via this endpoint and input under the \", _jsx(_components.code, {\n children: \"promotion_target_id\"\n }), \"\\nparameter in the Create Ad Set request\"]\n }), \"\\n\"]\n }), \"\\n\", _jsx(_components.h4, {\n id: \"documentation-updates-5\",\n children: \"Documentation Updates\"\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsx(_components.li, {\n children: \"Now that the Campaign Management API is in GA, mention of manual allowlisting process and\\nclosed beta requirements have been removed\"\n }), \"\\n\", _jsx(_components.li, {\n children: \"Versioning policy has been simplified and schedule has been updated to reflect November 13,\\n2023 deprecation date for v1.3-v1.4\"\n }), \"\\n\", _jsx(_components.li, {\n children: \"Filtering and Querying section has been removed\"\n }), \"\\n\", _jsx(_components.li, {\n children: \"Slicing section has been removed\"\n }), \"\\n\", _jsx(_components.li, {\n children: \"Object Hierarchy has been updated to reflect v2 changes\"\n }), \"\\n\", _jsx(_components.li, {\n children: \"Build a Campaign Guide has been updated based on new v2 specs\"\n }), \"\\n\", _jsx(_components.li, {\n children: \"Metrics Glossary has been updated to only reflect metrics included in v2\"\n }), \"\\n\"]\n }), \"\\n\", _jsx(_components.h3, {\n id: \"november-2022\",\n children: \"November 2022\"\n }), \"\\n\", _jsx(_components.h4, {\n id: \"announcing-ads-api-v14\",\n children: \"Announcing Ads API v1.4\"\n }), \"\\n\", _jsx(_components.p, {\n children: \"All of the following updates are included under a new minor version (v1.4) released on November 29, 2022.\"\n }), \"\\n\", _jsx(_components.p, {\n children: _jsx(_components.strong, {\n children: \"What's New\"\n })\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [\"Introducing new Click objective with accompanying Call-to-Action (“CTA”) card format\", \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsx(_components.li, {\n children: \"Spotify Ad Studio advertisers are now able to set up a click optimization goal for their campaigns along with reach and impressions goals introduced this year. Ads with click goal will be accompanied by a Call-to-Action card: a clickable ad experience consisting of an advertiser's companion image, a name and a call-to-action button. After the initial ad is served, the message will resurface across the Spotify app making it easier for listeners to remember and take action.\"\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"New enum value \", _jsx(_components.code, {\n children: \"CLICKS\"\n }), \" is available under the \", _jsx(_components.code, {\n children: \"bid_optimization_goal\"\n }), \" parameter when \", _jsx(_components.a, {\n href: \"/documentation/ads-api/reference/v1.4/post_ad_set\",\n children: \"creating an ad set\"\n }), \", \", _jsx(_components.a, {\n href: \"/documentation/ads-api/reference/v1.4/put_ad_set\",\n children: \"updating an ad set\"\n }), \", and \", _jsx(_components.a, {\n href: \"/documentation/ads-api/reference/v1.4/get_bid_estimate\",\n children: \"retrieving bid/audience estimates\"\n })]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"CTA cards will be enabled for music ads only (not video) – \", _jsx(_components.a, {\n href: \"/documentation/ads-api/reference/v1.4/post_ad\",\n children: \"create ad\"\n }), \" endpoint now includes:\", \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [\"New required parameter \", _jsx(_components.code, {\n children: \"brand_name\"\n }), \": Displayed in ad\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"New optional parameter \", _jsx(_components.code, {\n children: \"tagline\"\n }), \": Displayed in CTA card, max 140 characters\"]\n }), \"\\n\", _jsx(_components.li, {\n children: \"These two parameters are included in the response when retrieving ads\"\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\", _jsx(_components.li, {\n children: \"Enforcing new validation logic, see Breaking Changes/Deprecations section below for details\"\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\", _jsx(_components.p, {\n children: _jsx(_components.strong, {\n children: \"Breaking Changes/Deprecations\"\n })\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [\"New parameter \", _jsx(_components.code, {\n children: \"brand_name\"\n }), \" is now required when creating an ad\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"Removed and replaced \", _jsx(_components.code, {\n children: \"slot_type\"\n }), \" with \", _jsx(_components.code, {\n children: \"format\"\n }), \" under ad sets/estimates targeting object\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"Removed \", _jsx(_components.code, {\n children: \"country_codes\"\n }), \" (array of string) under ad sets/estimates \", _jsx(_components.code, {\n children: \"targeting\"\n }), \" object and replaced with \", _jsx(_components.code, {\n children: \"country_code\"\n }), \" (string)\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"Validation rules added:\", \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsx(_components.li, {\n children: \"Ad set start and end dates must be in the future\"\n }), \"\\n\", _jsx(_components.li, {\n children: \"Max ad set duration of 365 days\"\n }), \"\\n\", _jsx(_components.li, {\n children: \"Minimum length of 2 characters and maximum of 120 characters for campaigns, ad sets and ads entity names\"\n }), \"\\n\", _jsx(_components.li, {\n children: \"Only one country may be targeted per ad set\"\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\", _jsx(_components.h3, {\n id: \"august-2022\",\n children: \"August 2022\"\n }), \"\\n\", _jsx(_components.p, {\n children: \"All of the following updates are included under the current version of the API v1.3:\"\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [\"New enum value \", _jsx(_components.code, {\n children: \"ARTIST_CONTENT\"\n }), \" is available under the \", _jsx(_components.code, {\n children: \"artist_promotion_goal\"\n }), \" parameter when \", _jsx(_components.a, {\n href: \"/documentation/ads-api/reference/v1.3/post_ad_set\",\n children: \"creating an ad set\"\n }), \" or \", _jsx(_components.a, {\n href: \"/documentation/ads-api/reference/v1.3/put_ad_set\",\n children: \"updating an ad set\"\n }), \": Users can now specify when they are promoting an artist's merch or concert by selecting this option (NOTE: \", _jsx(_components.code, {\n children: \"ARTIST_BOOST\"\n }), \" should continue to be used when promoting an artist's music on Spotify).\"]\n }), \"\\n\"]\n }), \"\\n\", _jsx(_components.h3, {\n id: \"july-2022---v13\",\n children: \"July 2022 - v1.3\"\n }), \"\\n\", _jsx(_components.h4, {\n id: \"announcing-ads-api-v13\",\n children: \"Announcing Ads API v1.3\"\n }), \"\\n\", _jsx(_components.p, {\n children: \"All of the following updates are included under a new minor version (v1.3) released July 2022.\"\n }), \"\\n\", _jsx(_components.p, {\n children: _jsx(_components.strong, {\n children: \"What's New\"\n })\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [\"New minor version v1.3 released. \", _jsxs(_components.em, {\n children: [\"Note: v1.1 and v1.2 will be fully deprecated on August 25, 2022. See \", _jsx(_components.a, {\n href: \"/documentation/ads-api/#versioning\",\n children: \"Versioning\"\n }), \" section for version schedules.\"]\n })]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"Addition of effective cost per mille and completed listen fields, \", _jsx(_components.code, {\n children: \"ECPM\"\n }), \" and \", _jsx(_components.code, {\n children: \"ECPCL\"\n }), \", to \", _jsx(_components.a, {\n href: \"/documentation/ads-api/reference/v1.4/get_report\",\n children: \"reporting\"\n }), \" endpoints. See \", _jsx(_components.a, {\n href: \"/documentation/ads-api/guides/#campaign-performance-metrics\",\n children: \"Metrics Glossary\"\n }), \" for detailed definitions.\"]\n }), \"\\n\", _jsx(_components.li, {\n children: \"Ad sets and Estimates requests have been updated to use an auction pricing model, see \\\"Breaking Changes/Deprecations\\\" below for details\"\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"frequency_caps\"\n }), \" is no longer a required parameter for \", _jsx(_components.a, {\n href: \"/documentation/ads-api/reference/v1.4/post_ad_set\",\n children: \"create ad sets\"\n }), \" requests; it is now optional. If \", _jsx(_components.code, {\n children: \"frequency_caps\"\n }), \" is not specified, API will default to the maximum allowed values:\", \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsx(_components.li, {\n children: \"5 per day\"\n }), \"\\n\", _jsx(_components.li, {\n children: \"35 per week\"\n }), \"\\n\", _jsx(_components.li, {\n children: \"50 per month\"\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\", _jsx(_components.p, {\n children: _jsx(_components.strong, {\n children: \"Breaking Changes/Deprecations\"\n })\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [\"Addition of \", _jsx(_components.code, {\n children: \"bid_optimization_goal\"\n }), \", \", _jsx(_components.code, {\n children: \"bid_strategy\"\n }), \", and \", _jsx(_components.code, {\n children: \"bid_micro_amount\"\n }), \" to ad sets output responses, as \", _jsx(_components.em, {\n children: \"required\"\n }), \" fields to \", _jsx(_components.a, {\n href: \"/documentation/ads-api/reference/v1.4/post_ad_set\",\n children: \"create ad sets\"\n }), \" requests, and as \", _jsx(_components.em, {\n children: \"optional\"\n }), \" fields to \", _jsx(_components.a, {\n href: \"/documentation/ads-api/reference/v1.4/put_ad_set\",\n children: \"update ad sets\"\n }), \" requests\", \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [\"Allowed values for \", _jsx(_components.code, {\n children: \"bid_optimization_goal\"\n }), \" are:\", \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"EVEN_IMPRESSION_DELIVERY\"\n }), \": We’ll aim to deliver as many impressions as possible to your target audience. Not available for active audio (CPCL) ad sets.\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"REACH\"\n }), \": We’ll aim to reach as many unique listeners as possible with your message.\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"AD_COMPLETES\"\n }), \": We’ll aim to deliver as many impressions as possible to your target audience. Available for active audio (CPCL) ad sets only.\"]\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"Allowed values for \", _jsx(_components.code, {\n children: \"bid_strategy\"\n }), \" are:\", \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"MAX_BID\"\n }), \": The bid you specify will act as a ceiling/cap.\"]\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"The following fields under the ad sets objects have been renamed:\", \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"optimization\"\n }), \" is now \", _jsx(_components.code, {\n children: \"artist_promotion\"\n })]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"optimization_goal\"\n }), \" is now \", _jsx(_components.code, {\n children: \"artist_promotion_goal\"\n })]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"optimization_target\"\n }), \" is now \", _jsx(_components.code, {\n children: \"artist_promotion_target\"\n })]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"optimization_target_type\"\n }), \" is now \", _jsx(_components.code, {\n children: \"artist_promotion_target_type\"\n })]\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"The previous \", _jsx(_components.code, {\n children: \"/estimate\"\n }), \" endpoints are deprecated and replaced with two new ones (\", _jsx(_components.a, {\n href: \"/documentation/ads-api/reference/v1.4/get_bid_estimate\",\n children: \"Get Bid Estimate\"\n }), \" and \", _jsx(_components.a, {\n href: \"/documentation/ads-api/reference/v1.4/get_audience_estimate\",\n children: \"Get Audience Estimate\"\n }), \") that allow users to specify bid details:\", \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"POST /v1.3/adAccounts/{ad_account_id}/estimate/audience\"\n }), \" is replacing \", _jsx(_components.code, {\n children: \"POST /v1.2/estimate\"\n })]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"POST /v1.3/adAccounts/{ad_account_id}/estimate/bid\"\n }), \" is replacing \", _jsx(_components.code, {\n children: \"POST /v1.2/adAccounts/{ad_account_id}/estimate/cost\"\n })]\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\", _jsx(_components.p, {\n children: _jsx(_components.strong, {\n children: \"Documentation Updates\"\n })\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [\"Migrated documentation to main portal \", _jsx(_components.a, {\n href: \"/\",\n children: \"Spotify for Developers\"\n })]\n }), \"\\n\"]\n }), \"\\n\", _jsx(_components.h3, {\n id: \"december-2021---v12\",\n children: \"December 2021 - v1.2\"\n }), \"\\n\", _jsx(_components.h4, {\n id: \"announcing-ads-api-v12\",\n children: \"Announcing Ads API v1.2\"\n }), \"\\n\", _jsx(_components.p, {\n children: \"All of the following updates are included under a new minor version (v1.2) released December 2021.\"\n }), \"\\n\", _jsx(_components.p, {\n children: _jsx(_components.strong, {\n children: \"What's New\"\n })\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsx(_components.li, {\n children: \"New minor version v1.2 released\"\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"Added new \", _jsx(_components.a, {\n href: \"/documentation/ads-api/reference/v1.2/get_cost_estimate\",\n children: \"pricing estimate endpoint\"\n }), \" to estimate your CPM/CLCL/CPCV based on specified targeting parameters\", \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsx(_components.li, {\n children: _jsx(_components.code, {\n children: \"POST /adAccounts/{ad_account_id}/estimate/cost\"\n })\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"Added \", _jsx(_components.code, {\n children: \"custom_audience_ids\"\n }), \" under the \", _jsx(_components.code, {\n children: \"targeting\"\n }), \" parameter for ad sets\", \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsx(_components.li, {\n children: \"You now have the option to specify custom audiences to target when creating/updating an ad set\"\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"Added \", _jsx(_components.code, {\n children: \"third_party_viewability_tracking\"\n }), \" for ads\", \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsx(_components.li, {\n children: \"You now have the ability to set up third-party viewability tracking when creating/updating an ad\"\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"NOTE: This is currently only supported for measurement partner \", _jsx(_components.code, {\n children: \"IAS\"\n })]\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\", _jsx(_components.p, {\n children: _jsx(_components.strong, {\n children: \"Breaking Changes/Deprecations\"\n })\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [\"“Flights” have been renamed “Ad Sets”\", \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsx(_components.li, {\n children: \"We have renamed all instances of these entities in v1.2 in order to match the nomenclature used in the Ad Studio UI\"\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"“Creatives” have been renamed “Ads”\", \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsx(_components.li, {\n children: \"We have renamed all instances of these entities in v1.2 in order to match the nomenclature used in the Ad Studio UI\"\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"Removed parameter “unit_cost_micro_amount” from \", _jsx(_components.a, {\n href: \"/documentation/ads-api/reference/v1.2/post_ad_set\",\n children: \"Create Ad Set\"\n }), \" and \", _jsx(_components.a, {\n href: \"/documentation/ads-api/reference/v1.2/put_ad_set\",\n children: \"Update Ad Set\"\n }), \" (fka Flight) endpoints\"]\n }), \"\\n\"]\n }), \"\\n\", _jsx(_components.p, {\n children: _jsx(_components.strong, {\n children: \"Documentation Updates\"\n })\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsx(_components.li, {\n children: \"Added new sections: “Metrics Glossary” and “Release Notes”\"\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"Added additional detail on the expected behavior of the \", _jsx(_components.code, {\n children: \"report_datetime_range\"\n }), \" filter under the \", _jsx(_components.a, {\n href: \"/documentation/ads-api/guides/#reporting-open-beta\",\n children: \"Reporting API\"\n })]\n }), \"\\n\", _jsx(_components.li, {\n children: \"Updates to “Versioning” section - added version release/sunset schedule\"\n }), \"\\n\"]\n }), \"\\n\", _jsx(_components.h3, {\n id: \"november-2021---v11\",\n children: \"November 2021 - v1.1\"\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [\"Added support for podcast ad performance data to the Reporting API\", \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsx(_components.li, {\n children: \"Ads served to podcast listeners on Spotify will automatically be reflected without making any updates to your integration\"\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"To capture the impressions served off Spotify, you will need to update your integration by adding the new metric called \", _jsx(_components.code, {\n children: \"OFF_SPOTIFY_IMPRESSIONS\"\n })]\n }), \"\\n\", _jsx(_components.li, {\n children: \"There are no breaking changes associated with this launch, however, we recommend that you complete this update as soon as possible in order to accurately reflect podcast ad performance\"\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\", _jsx(_components.h3, {\n id: \"june-2019---v11\",\n children: \"June 2019 - v1.1\"\n }), \"\\n\", _jsx(_components.h4, {\n id: \"announcing-ads-api-v11\",\n children: \"Announcing Ads API v1.1\"\n }), \"\\n\", _jsx(_components.p, {\n children: \"v1.1 was released June 2019\"\n }), \"\\n\", _jsx(_components.p, {\n children: _jsx(_components.strong, {\n children: \"What's New\"\n })\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [\"Combined the \", _jsx(_components.code, {\n children: \"/geo\"\n }), \" and \", _jsx(_components.code, {\n children: \"/geos\"\n }), \" endpoints into just \", _jsx(_components.code, {\n children: \"/geos\"\n }), \". See docs \", _jsx(_components.a, {\n href: \"/documentation/ads-api/reference/v1.4/get_targets_geo\",\n children: \"here\"\n })]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"/geos\"\n }), \" endpoint now allows you to specify a type of geo you are searching for as a filter in a query param.\"]\n }), \"\\n\"]\n }), \"\\n\", _jsx(_components.h3, {\n id: \"april-2019---v10\",\n children: \"April 2019 - v1.0\"\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsx(_components.li, {\n children: \"Renamed the landing_page_url field to be landing_page_domain so it is consistent across the API\"\n }), \"\\n\", _jsx(_components.li, {\n children: \"Renamed arrays on GET targets and GET campaigns to be consistent with rest of API\"\n }), \"\\n\", _jsx(_components.li, {\n children: \"Refactored statuses on flight endpoint\"\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"Pausing status for flight and flight links\", \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsx(_components.li, {\n children: \"Previously, you had to pause a flight on the update flight request. Now, there is a separate endpoint to pause / activate / archive a flight. You are no longer able to change the status on the update flight request.\"\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"Added Flight Links endpoints\", \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsx(_components.li, {\n children: \"Flight links are a connection between flights and creatives that ensure the creative(s) and its contents are compatible with the flight’s targeting\"\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"Added serving status endpoint\", \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsx(_components.li, {\n children: \"The new serving status endpoint indicates whether your flight is serving or not\"\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\", _jsx(_components.h3, {\n id: \"march-2019---v10\",\n children: \"March 2019 - v1.0\"\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [\"Added Campaign Status Endpoint\", \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsx(_components.li, {\n children: \"The available statuses for campaigns are ACTIVE, PAUSED, and ARCHIVED\"\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"Removed CANCELLED as a status on campaigns\", \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsx(_components.li, {\n children: \"Campaigns can now only be archived, not cancelled\"\n }), \"\\n\", _jsx(_components.li, {\n children: \"Archiving will permanently pause a campaign, you cannot unarchive a campaign\"\n }), \"\\n\", _jsx(_components.li, {\n children: \"Archiving a campaign will prevent delivery across all associated flights\"\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"Removed ability to update campaign status on PUT\", \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsx(_components.li, {\n children: \"Use the campaign status endpoint\"\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"Added support for slicing on all GET LIST requests for creatives, flights, and campaigns\", \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsx(_components.li, {\n children: \"Slicing is the ability to specify what fields you want returned\"\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"How it works: GET LIST endpoints, there is a query parameter called \", _jsx(_components.code, {\n children: \"fields\"\n }), \" where you can specify a comma-separated list of fields you want returned\"]\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"Added support for filtering on all the GET LIST requests for creatives, flights, and campaigns\", \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsx(_components.li, {\n children: \"Filtering is the ability to filter your results based on specific criteria (e.g., Get Flights for a specific Advertiser ID)\"\n }), \"\\n\", _jsx(_components.li, {\n children: \"How it works: On the GET LIST endpoints, there are optional query parameters to specify the filter\"\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"Added support for ordering by a specific field on GET LIST requests for creatives, campaigns, and flights\", \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsx(_components.li, {\n children: \"How it works: There are optional query parameters to specify the ordering field, ascending or descending based on the field\"\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\"]\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n chCodeConfig,\n default: MDXContent\n};\nfunction _missingMdxReference(id, component) {\n throw new Error(\"Expected \" + (component ? \"component\" : \"object\") + \" `\" + id + \"` to be defined: you likely forgot to import, pass, or provide it.\");\n}\n","frontmatter":{"title":"Ads API"},"scope":{}},"pageTitle":"Ads API","hideFromSearch":false,"policyReferences":{"StandalonePreview":{"title":"Spotify Audio preview clips can not be a standalone service","description":"Audio Preview Clips may not be offered as a standalone service or product.","url":"/policy/#ii-respect-content-and-creators:~:text=You must not offer metadata,as a standalone service or product."},"ContentAlteration":{"title":"Keep audio content in its original form","description":"The Spotify Platform can not be used to develop applications that alter Spotify Content.","url":"/policy/#iii-some-prohibited-applications:~:text=Do not permit any device or system to segue,."},"Synchronization":{"title":"Do not synchronize Spotify content","description":"You may not synchronize any sound recordings with any visual media, including any advertising, film, television program, slideshow, video, or similar content","url":"/policy/#iii-some-prohibited-applications:~:text=Do not synchronize any sound recordings with any visual media,."},"Downloading":{"title":"Spotify content may not be downloaded","description":"You may not facilitate downloads of Spotify content or enable “stream ripping”","url":"/terms/#section-iv-restrictions:~:text=facilitating,make permanent copies of Spotify Content."},"VisualAlteration":{"title":"Keep visual content in its original form","description":"Spotify visual content must be kept in its original form, e.g. you can not crop album artwork, overlay images on album artwork, place a brand/logo on album artwork","url":"/documentation/design#using-our-content"},"CommercialStreaming":{"title":"Streaming applications may not be commercial","description":"The Spotify Platform can not be used to develop commercial streaming integrations.","url":"/policy/#iv-streaming-and-commercial-use:~:text=Commercial use restrictions,Streaming SDA itself."},"Attribution":{"title":"Ensure content attribution","description":"Please keep in mind that metadata, cover art and artist images must be accompanied by a link back to the applicable artist, album, track, or playlist on the Spotify Service. You must also attribute content from Spotify with the logo.","url":"/policy/#ii-respect-content-and-creators:~:text=If you display any Spotify Content,on the Spotify Service."},"Broadcasting":{"title":"Spotify content may not be broadcasted","description":"The Spotify Platform can not be used for non-interactive broadcasting.","url":"/policy/#iii-some-prohibited-applications:~:text=Do not create any product or service which includes any non,several simultaneous listeners."},"MultipleIntegrations":{"title":"Spotify data may not be transferred","description":"Please keep in mind that you can not enable transfers of data to another service, except for the purpose of enabling a user to transfer their personal data or the metadata of the user's playlists to another service.","url":"/policy/#iii-some-prohibited-applications:~:text=Do not build an SDA that enables the transfer of data,."},"MachineLearning":{"title":"Spotify content may not be used to train machine learning or AI model","description":"Please note that you can not use the Spotify Platform or any Spotify Content to train a machine learning or AI model or otherwise ingesting Spotify Content into a machine learning or AI model.","url":"/terms#section-iv-restrictions:~:text=Misuse%20of%20the,or%20AI%20model%3B"}},"adsApiReferenceLinks":{"v2.0":[{"tags":["ad-accounts"],"path":"/ad_accounts","method":"get","label":"Get Ad Accounts for Current User","operationId":"getAdAccounts"},{"tags":["ad-accounts"],"path":"/ad_accounts/{ad_account_id}","method":"get","label":"Get an Ad Account by ID","operationId":"getAdAccount"},{"tags":["ad-categories"],"path":"/ad_categories","method":"get","label":"Get Ad Categories","operationId":"getAdCategories"},{"tags":["ad-sets"],"path":"/ad_accounts/{ad_account_id}/ad_sets/{ad_set_id}","method":"get","label":"Get Ad Set by ID","operationId":"getAdSetById"},{"tags":["ad-sets"],"path":"/ad_accounts/{ad_account_id}/ad_sets/{ad_set_id}","method":"patch","label":"Update Ad Set","operationId":"updateAdSet"},{"tags":["ad-sets"],"path":"/ad_accounts/{ad_account_id}/ad_sets","method":"get","label":"Get Ad Sets by Ad Account ID","operationId":"getAdSetsByAdAccountId"},{"tags":["ad-sets"],"path":"/ad_accounts/{ad_account_id}/ad_sets","method":"post","label":"Create an Ad Set","operationId":"createAdSet"},{"tags":["ads"],"path":"/ad_accounts/{ad_account_id}/ads","method":"get","label":"Get Ads by Ad Account ID","operationId":"getAds"},{"tags":["ads"],"path":"/ad_accounts/{ad_account_id}/ads","method":"post","label":"Create an Ad","operationId":"createAd"},{"tags":["ads"],"path":"/ad_accounts/{ad_account_id}/ads/{ad_id}","method":"get","label":"Get Ad by ID","operationId":"getAd"},{"tags":["ads"],"path":"/ad_accounts/{ad_account_id}/ads/{ad_id}","method":"patch","label":"Update an Ad","operationId":"updateAd"},{"tags":["assets"],"path":"/ad_accounts/{ad_account_id}/assets","method":"get","label":"Get Assets by Ad Account","operationId":"getAssetsByTypeAndAdAccount"},{"tags":["assets"],"path":"/ad_accounts/{ad_account_id}/assets","method":"post","label":"Create Asset","operationId":"createAsset"},{"tags":["assets"],"path":"/ad_accounts/{ad_account_id}/assets/{asset_id}","method":"get","label":"Get Asset by ID","operationId":"getAsset"},{"tags":["assets"],"path":"/ad_accounts/{ad_account_id}/assets/{asset_id}","method":"patch","label":"Update Asset","operationId":"updateAsset"},{"tags":["assets"],"path":"/ad_accounts/{ad_account_id}/assets/{asset_id}/upload","method":"post","label":"Upload Asset","operationId":"uploadAsset"},{"tags":["assets"],"path":"/ad_accounts/{ad_account_id}/assets/{asset_id}/chunked_upload/start","method":"post","label":"Start Upload Chunked Asset","operationId":"startUploadChunkedAsset"},{"tags":["assets"],"path":"/ad_accounts/{ad_account_id}/assets/{asset_id}/chunked_upload/transfer","method":"post","label":"Transfer Chunked Asset","operationId":"transferChunkedAsset"},{"tags":["assets"],"path":"/ad_accounts/{ad_account_id}/assets/{asset_id}/chunked_upload/complete","method":"post","label":"Complete Upload Chunked Asset","operationId":"completeUploadChunkedAsset"},{"tags":["campaigns"],"path":"/ad_accounts/{ad_account_id}/campaigns","method":"get","label":"Get Campaigns by Ad Account ID","operationId":"getCampaigns"},{"tags":["campaigns"],"path":"/ad_accounts/{ad_account_id}/campaigns","method":"post","label":"Create a Campaign","operationId":"createCampaign"},{"tags":["campaigns"],"path":"/ad_accounts/{ad_account_id}/campaigns/{campaign_id}","method":"get","label":"Get Campaign by ID","operationId":"getCampaign"},{"tags":["campaigns"],"path":"/ad_accounts/{ad_account_id}/campaigns/{campaign_id}","method":"patch","label":"Update a Campaign","operationId":"updateCampaign"},{"tags":["estimates"],"path":"/estimates/audience","method":"post","label":"Estimate audience","operationId":"estimateAudience"},{"tags":["estimates"],"path":"/estimates/bid","method":"post","label":"Estimate bid","operationId":"estimateBid"},{"tags":["podcast-shows"],"path":"/podcast_shows","method":"get","label":"Get Podcast Shows","operationId":"getPodcastShows"},{"tags":["reports"],"path":"/ad_accounts/{ad_account_id}/aggregate_reports","method":"get","label":"Get Aggregate Report by Ad Account ID","operationId":"getAggregateReport"},{"tags":["reports"],"path":"/ad_accounts/{ad_account_id}/insight_reports","method":"get","label":"Get Insight Report by Ad Account ID","operationId":"getAudienceInsightReport"},{"tags":["reports"],"path":"/ad_accounts/{ad_account_id}/async_reports","method":"post","label":"Create a CSV Report Asynchronously","operationId":"createAsyncReport"},{"tags":["reports"],"path":"/ad_accounts/{ad_account_id}/async_reports/{report_id}","method":"get","label":"Get CSV Report Status by ID","operationId":"getAsyncReport"},{"tags":["targets"],"path":"/targets/artists","method":"get","label":"Get Artist Targets","operationId":"getArtistTargets"},{"tags":["targets"],"path":"/targets/genres","method":"get","label":"Get Genre Targets","operationId":"getGenreTargets"},{"tags":["targets"],"path":"/targets/geos","method":"get","label":"Get Geo Targets","operationId":"getGeoTargets"},{"tags":["targets"],"path":"/targets/interests","method":"get","label":"Get Interest Targets","operationId":"getInterestTargets"},{"tags":["targets"],"path":"/targets/languages","method":"get","label":"Get Language Targets","operationId":"getLanguageTargets"},{"tags":["targets"],"path":"/targets/playlists","method":"get","label":"Get Playlist Targets","operationId":"getPlaylistTargets"},{"tags":["targets"],"path":"/targets/episode_topics","method":"get","label":"Get Podcast Episode Topic Targets","operationId":"getEpisodeTopicTargets"},{"tags":["targets"],"path":"/targets/sensitive_topics","method":"get","label":"Get Sensitive Topic Targets","operationId":"getSensitiveTopicTargets"}],"v1.4":[{"tags":["Ad Accounts"],"path":"/currentUser/adAccounts","method":"get","label":"Get Ad Accounts","operationId":"get_adAccounts"},{"tags":["Advertiser"],"path":"/advertisers","method":"post","label":"Get Advertisers","operationId":"get_all_advertisers"},{"tags":["Campaigns"],"path":"/campaigns","method":"post","label":"Get Campaigns","operationId":"get_all_campaigns"},{"tags":["Advertiser"],"path":"/adAccounts/{ad_account_id}/advertisers","method":"get","label":"Get Advertisers by Ad Account","operationId":"get_advertisers"},{"tags":["Advertiser"],"path":"/adAccounts/{ad_account_id}/advertisers","method":"post","label":"Create Advertiser","operationId":"post_advertiser"},{"tags":["Advertiser"],"path":"/adAccounts/{ad_account_id}/advertisers/{advertiser_id}","method":"get","label":"Get Advertiser","operationId":"get_advertiser"},{"tags":["Advertiser"],"path":"/adAccounts/{ad_account_id}/advertisers/{advertiser_id}","method":"put","label":"Update Advertiser","operationId":"put_advertiser"},{"tags":["Campaigns"],"path":"/adAccounts/{ad_account_id}/campaigns","method":"get","label":"Get Campaigns by Ad Account","operationId":"get_campaigns"},{"tags":["Campaigns"],"path":"/adAccounts/{ad_account_id}/campaigns","method":"post","label":"Create Campaign","operationId":"post_campaign"},{"tags":["Campaigns"],"path":"/adAccounts/{ad_account_id}/campaigns/{campaign_id}/status/{status}","method":"put","label":"Update Campaign Status","operationId":"put_campaign_status"},{"tags":["Campaigns"],"path":"/adAccounts/{ad_account_id}/campaigns/{campaign_id}","method":"get","label":"Get Campaign","operationId":"get_campaign"},{"tags":["Campaigns"],"path":"/adAccounts/{ad_account_id}/campaigns/{campaign_id}","method":"put","label":"Update Campaign","operationId":"put_campaign"},{"tags":["Assets"],"path":"/adAccounts/{ad_account_id}/assets/fullmix","method":"post","label":"Get Fullmix Upload Url","operationId":"post_get_fullmix_upload_url"},{"tags":["Assets"],"path":"/adAccounts/{ad_account_id}/assets/audio/{asset_id}","method":"get","label":"Get Audio Asset","operationId":"get_audio_asset"},{"tags":["Assets"],"path":"/adAccounts/{ad_account_id}/assets/video","method":"get","label":"Get Video Assets","operationId":"get_video_assets"},{"tags":["Assets"],"path":"/adAccounts/{ad_account_id}/assets/video","method":"post","label":"Get Video Upload Url","operationId":"post_get_video_upload_url"},{"tags":["Assets"],"path":"/adAccounts/{ad_account_id}/assets/image","method":"get","label":"Get Image Assets","operationId":"get_image_assets"},{"tags":["Assets"],"path":"/adAccounts/{ad_account_id}/assets/image","method":"post","label":"Get Image Upload Url","operationId":"post_get_image_upload_url"},{"tags":["Assets"],"path":"/adAccounts/{ad_account_id}/assets/audio","method":"get","label":"Get Audio Assets","operationId":"get_audio_assets"},{"tags":["Assets"],"path":"/adAccounts/{ad_account_id}/assets/image/{image_id}","method":"get","label":"Get Image Asset","operationId":"get_image_asset"},{"tags":["Assets"],"path":"/adAccounts/{ad_account_id}/assets/video/{video_id}","method":"get","label":"Get Video Asset","operationId":"get_video_asset"},{"tags":["Reports"],"path":"/report","method":"post","label":"Create Report","operationId":"get_report"},{"tags":["Reports"],"path":"/adAccounts/{ad_account_id}/report","method":"post","label":"Create Report by Ad Account","operationId":"post_report"},{"tags":["Targets"],"path":"/targets/artists","method":"get","label":"Get Artist Targets","operationId":"get_artists"},{"tags":["Targets"],"path":"/targets/artist","method":"get","label":"Search Artist Targets","operationId":"get_targets_artist"},{"tags":["Targets"],"path":"/targets/genres","method":"get","label":"Get Genre Targets","operationId":"get_genres"},{"tags":["Targets"],"path":"/targets/genre","method":"get","label":"Search Genre Targets","operationId":"get_targets_genre"},{"tags":["Targets"],"path":"/targets/geos","method":"get","label":"Search Geo Targets","operationId":"get_geos"},{"tags":["Targets"],"path":"/targets/geo","method":"get","label":"Get Geo Targets","operationId":"get_targets_geo"},{"tags":["Targets"],"path":"/targets/playlists","method":"get","label":"Get Playlist Targets","operationId":"get_playlists"},{"tags":["Targets"],"path":"/targets/playlist","method":"get","label":"Search Playlist Targets","operationId":"get_targets_playlist"},{"tags":["Ad Sets"],"path":"/adSets","method":"post","label":"Get Ad Sets","operationId":"get_all_ad_sets"},{"tags":["Ad Sets"],"path":"/adSetlinks","method":"post","label":"Get Ad Set Links","operationId":"get_all_ad_set_links"},{"tags":["Ads"],"path":"/ads","method":"post","label":"Get Ads","operationId":"get_all_ads"},{"tags":["Ad Sets"],"path":"/adAccounts/{ad_account_id}/adSets","method":"get","label":"Get Ad Sets by Ad Account","operationId":"get_ad_sets"},{"tags":["Ad Sets"],"path":"/adAccounts/{ad_account_id}/campaigns/{campaign_id}/adSets","method":"get","label":"Get Ad Sets by Campaign","operationId":"get_ad_sets_by_campaign"},{"tags":["Ad Sets"],"path":"/adAccounts/{ad_account_id}/campaigns/{campaign_id}/adSets","method":"post","label":"Create Ad Set","operationId":"post_ad_set"},{"tags":["Ad Sets"],"path":"/adAccounts/{ad_account_id}/adSetLink/{ad_set_link_id}/status/{status}","method":"put","label":"Update Ad Set Link Status","operationId":"update_ad_set_link_status"},{"tags":["Ad Sets"],"path":"/adAccounts/{ad_account_id}/adSets/{ad_set_id}/status/{status}","method":"put","label":"Update Ad Set Status","operationId":"update_ad_set_status"},{"tags":["Ad Sets"],"path":"/adAccounts/{ad_account_id}/adSets/{ad_set_id}/serving","method":"get","label":"Get Ad Set Serving Status","operationId":"get_ad_set_serving_status"},{"tags":["Ad Sets"],"path":"/adAccounts/{ad_account_id}/adSets/{ad_set_id}","method":"get","label":"Get Ad Set","operationId":"get_ad_set"},{"tags":["Ad Sets"],"path":"/adAccounts/{ad_account_id}/adSets/{ad_set_id}","method":"put","label":"Update Ad Set","operationId":"put_ad_set"},{"tags":["Ads"],"path":"/adAccounts/{ad_account_id}/ads","method":"get","label":"Get Ads by Ad Account","operationId":"get_ads"},{"tags":["Ads"],"path":"/adAccounts/{ad_account_id}/ads","method":"post","label":"Create Ad","operationId":"post_ad"},{"tags":["Ads"],"path":"/adAccounts/{ad_account_id}/ads/{ad_id}","method":"get","label":"Get Ad","operationId":"get_ad"},{"tags":["Ads"],"path":"/adAccounts/{ad_account_id}/ads/{ad_id}","method":"put","label":"Update Ad","operationId":"put_ad"},{"tags":["Estimate"],"path":"/adAccounts/{ad_account_id}/estimate/bid","method":"post","label":"Get Bid Estimate","operationId":"get_bid_estimate"},{"tags":["Estimate"],"path":"/adAccounts/{ad_account_id}/estimate/audience","method":"post","label":"Get Audience Estimate","operationId":"get_audience_estimate"}],"v1.3":[{"tags":["Ad Accounts"],"path":"/currentUser/adAccounts","method":"get","label":"Get Ad Accounts","operationId":"get_adAccounts"},{"tags":["Advertiser"],"path":"/advertisers","method":"post","label":"Get Advertisers","operationId":"get_all_advertisers"},{"tags":["Campaigns"],"path":"/campaigns","method":"post","label":"Get Campaigns","operationId":"get_all_campaigns"},{"tags":["Advertiser"],"path":"/adAccounts/{ad_account_id}/advertisers","method":"get","label":"Get Advertisers by Ad Account","operationId":"get_advertisers"},{"tags":["Advertiser"],"path":"/adAccounts/{ad_account_id}/advertisers","method":"post","label":"Create Advertiser","operationId":"post_advertiser"},{"tags":["Advertiser"],"path":"/adAccounts/{ad_account_id}/advertisers/{advertiser_id}","method":"get","label":"Get Advertiser","operationId":"get_advertiser"},{"tags":["Advertiser"],"path":"/adAccounts/{ad_account_id}/advertisers/{advertiser_id}","method":"put","label":"Update Advertiser","operationId":"put_advertiser"},{"tags":["Campaigns"],"path":"/adAccounts/{ad_account_id}/campaigns","method":"get","label":"Get Campaigns by Ad Account","operationId":"get_campaigns"},{"tags":["Campaigns"],"path":"/adAccounts/{ad_account_id}/campaigns","method":"post","label":"Create Campaign","operationId":"post_campaign"},{"tags":["Campaigns"],"path":"/adAccounts/{ad_account_id}/campaigns/{campaign_id}/status/{status}","method":"put","label":"Update Campaign Status","operationId":"update_campaign_status"},{"tags":["Campaigns"],"path":"/adAccounts/{ad_account_id}/campaigns/{campaign_id}","method":"get","label":"Get Campaign","operationId":"get_campaign"},{"tags":["Campaigns"],"path":"/adAccounts/{ad_account_id}/campaigns/{campaign_id}","method":"put","label":"Update Campaign","operationId":"put_campaign"},{"tags":["Assets"],"path":"/adAccounts/{ad_account_id}/assets/fullmix","method":"post","label":"Get Fullmix Upload Url","operationId":"post_get_fullmix_upload_url"},{"tags":["Assets"],"path":"/adAccounts/{ad_account_id}/assets/audio/{asset_id}","method":"get","label":"Get Audio Asset","operationId":"get_audio_asset"},{"tags":["Assets"],"path":"/adAccounts/{ad_account_id}/assets/video","method":"get","label":"Get Video Assets","operationId":"get_video_assets"},{"tags":["Assets"],"path":"/adAccounts/{ad_account_id}/assets/video","method":"post","label":"Get Video Upload Url","operationId":"post_get_video_upload_url"},{"tags":["Assets"],"path":"/adAccounts/{ad_account_id}/assets/image","method":"get","label":"Get Image Assets","operationId":"get_image_assets"},{"tags":["Assets"],"path":"/adAccounts/{ad_account_id}/assets/image","method":"post","label":"Get Image Upload Url","operationId":"post_get_image_upload_url"},{"tags":["Assets"],"path":"/adAccounts/{ad_account_id}/assets/audio","method":"get","label":"Get Audio Assets","operationId":"get_audio_assets"},{"tags":["Assets"],"path":"/adAccounts/{ad_account_id}/assets/image/{image_id}","method":"get","label":"Get Image Asset","operationId":"get_image_asset"},{"tags":["Assets"],"path":"/adAccounts/{ad_account_id}/assets/video/{video_id}","method":"get","label":"Get Video Asset","operationId":"get_video_asset"},{"tags":["Reports"],"path":"/report","method":"post","label":"Create Report","operationId":"get_report"},{"tags":["Reports"],"path":"/adAccounts/{ad_account_id}/report","method":"post","label":"Create Report by Ad Account","operationId":"post_report"},{"tags":["Targets"],"path":"/targets/artists","method":"get","label":"Get Artist Targets","operationId":"get_artists"},{"tags":["Targets"],"path":"/targets/artist","method":"get","label":"Search Artist Targets","operationId":"get_targets_artist"},{"tags":["Targets"],"path":"/targets/genres","method":"get","label":"Get Genre Targets","operationId":"get_genres"},{"tags":["Targets"],"path":"/targets/genre","method":"get","label":"Search Genre Targets","operationId":"get_targets_genre"},{"tags":["Targets"],"path":"/targets/geos","method":"get","label":"Search Geo Targets","operationId":"get_geos"},{"tags":["Targets"],"path":"/targets/geo","method":"get","label":"Get Geo Targets","operationId":"get_targets_geo"},{"tags":["Targets"],"path":"/targets/playlists","method":"get","label":"Get Playlist Targets","operationId":"get_playlists"},{"tags":["Targets"],"path":"/targets/playlist","method":"get","label":"Search Playlist Targets","operationId":"get_targets_playlist"},{"tags":["Ad Sets"],"path":"/adSets","method":"post","label":"Get Ad Sets","operationId":"get_all_ad_sets"},{"tags":["Ad Sets"],"path":"/adSetlinks","method":"post","label":"Get Ad Set Links","operationId":"get_all_ad_set_links"},{"tags":["Ads"],"path":"/ads","method":"post","label":"Get Ads","operationId":"get_all_ads"},{"tags":["Ad Sets"],"path":"/adAccounts/{ad_account_id}/adSets","method":"get","label":"Get Ad Sets by Ad Account","operationId":"get_ad_sets"},{"tags":["Ad Sets"],"path":"/adAccounts/{ad_account_id}/campaigns/{campaign_id}/adSets","method":"get","label":"Get Ad Sets by Campaign","operationId":"get_ad_sets_by_campaign"},{"tags":["Ad Sets"],"path":"/adAccounts/{ad_account_id}/campaigns/{campaign_id}/adSets","method":"post","label":"Create Ad Set","operationId":"post_ad_set"},{"tags":["Ad Sets"],"path":"/adAccounts/{ad_account_id}/adSetLink/{ad_set_link_id}/status/{status}","method":"put","label":"Update Ad Set Link Status","operationId":"update_ad_set_link_status"},{"tags":["Ad Sets"],"path":"/adAccounts/{ad_account_id}/adSets/{ad_set_id}/status/{status}","method":"put","label":"Update Ad Set Status","operationId":"update_ad_set_status"},{"tags":["Ad Sets"],"path":"/adAccounts/{ad_account_id}/adSets/{ad_set_id}/serving","method":"get","label":"Get Ad Set Serving Status","operationId":"get_ad_set_serving_status"},{"tags":["Ad Sets"],"path":"/adAccounts/{ad_account_id}/adSets/{ad_set_id}","method":"get","label":"Get Ad Set","operationId":"get_ad_set"},{"tags":["Ad Sets"],"path":"/adAccounts/{ad_account_id}/adSets/{ad_set_id}","method":"put","label":"Update Ad Set","operationId":"put_ad_set"},{"tags":["Ads"],"path":"/adAccounts/{ad_account_id}/ads","method":"get","label":"Get Ads by Ad Account","operationId":"get_ads"},{"tags":["Ads"],"path":"/adAccounts/{ad_account_id}/ads","method":"post","label":"Create Ad","operationId":"post_ad"},{"tags":["Ads"],"path":"/adAccounts/{ad_account_id}/ads/{ad_id}","method":"get","label":"Get Ad","operationId":"get_ad"},{"tags":["Ads"],"path":"/adAccounts/{ad_account_id}/ads/{ad_id}","method":"put","label":"Update Ad","operationId":"put_ad"},{"tags":["Estimate"],"path":"/adAccounts/{ad_account_id}/estimate/bid","method":"post","label":"Get Bid Estimate","operationId":"get_bid_estimate"},{"tags":["Estimate"],"path":"/adAccounts/{ad_account_id}/estimate/audience","method":"post","label":"Get Audience Estimate","operationId":"get_audience_estimate"}],"v1.2":[{"tags":["Ad Accounts"],"path":"/currentUser/adAccounts","method":"get","label":"Get Ad Accounts","operationId":"get_adAccounts"},{"tags":["Advertiser"],"path":"/advertisers","method":"post","label":"Get Advertisers","operationId":"get_all_advertisers"},{"tags":["Campaigns"],"path":"/campaigns","method":"post","label":"Get Campaigns","operationId":"get_all_campaigns"},{"tags":["Advertiser"],"path":"/adAccounts/{ad_account_id}/advertisers","method":"get","label":"Get Advertisers by Ad Account","operationId":"get_advertisers"},{"tags":["Advertiser"],"path":"/adAccounts/{ad_account_id}/advertisers","method":"post","label":"Create Advertiser","operationId":"post_advertiser"},{"tags":["Advertiser"],"path":"/adAccounts/{ad_account_id}/advertisers/{advertiser_id}","method":"get","label":"Get Advertiser","operationId":"get_advertiser"},{"tags":["Advertiser"],"path":"/adAccounts/{ad_account_id}/advertisers/{advertiser_id}","method":"put","label":"Update Advertiser","operationId":"put_advertiser"},{"tags":["Campaigns"],"path":"/adAccounts/{ad_account_id}/campaigns","method":"get","label":"Get Campaigns by Ad Account","operationId":"get_campaigns"},{"tags":["Campaigns"],"path":"/adAccounts/{ad_account_id}/campaigns","method":"post","label":"Create Campaign","operationId":"post_campaign"},{"tags":["Campaigns"],"path":"/adAccounts/{ad_account_id}/campaigns/{campaign_id}/status/{status}","method":"put","label":"Update Campaign Status","operationId":"update_campaign_status"},{"tags":["Campaigns"],"path":"/adAccounts/{ad_account_id}/campaigns/{campaign_id}","method":"get","label":"Get Campaign","operationId":"get_campaign"},{"tags":["Campaigns"],"path":"/adAccounts/{ad_account_id}/campaigns/{campaign_id}","method":"put","label":"Update Campaign","operationId":"put_campaign"},{"tags":["Assets"],"path":"/adAccounts/{ad_account_id}/assets/fullmix","method":"post","label":"Get Fullmix Upload Url","operationId":"post_get_fullmix_upload_url"},{"tags":["Assets"],"path":"/adAccounts/{ad_account_id}/assets/audio/{asset_id}","method":"get","label":"Get Audio Asset","operationId":"get_audio_asset"},{"tags":["Assets"],"path":"/adAccounts/{ad_account_id}/assets/video","method":"get","label":"Get Video Assets","operationId":"get_video_assets"},{"tags":["Assets"],"path":"/adAccounts/{ad_account_id}/assets/video","method":"post","label":"Get Video Upload Url","operationId":"post_get_video_upload_url"},{"tags":["Assets"],"path":"/adAccounts/{ad_account_id}/assets/image","method":"get","label":"Get Image Assets","operationId":"get_image_assets"},{"tags":["Assets"],"path":"/adAccounts/{ad_account_id}/assets/image","method":"post","label":"Get Image Upload Url","operationId":"post_get_image_upload_url"},{"tags":["Assets"],"path":"/adAccounts/{ad_account_id}/assets/audio","method":"get","label":"Get Audio Assets","operationId":"get_audio_assets"},{"tags":["Assets"],"path":"/adAccounts/{ad_account_id}/assets/image/{image_id}","method":"get","label":"Get Image Asset","operationId":"get_image_asset"},{"tags":["Assets"],"path":"/adAccounts/{ad_account_id}/assets/video/{video_id}","method":"get","label":"Get Video Asset","operationId":"get_video_asset"},{"tags":["Reports"],"path":"/report","method":"post","label":"Create Report","operationId":"get_report"},{"tags":["Reports"],"path":"/adAccounts/{ad_account_id}/report","method":"post","label":"Create Report by Ad Account","operationId":"post_report"},{"tags":["Targets"],"path":"/targets/artists","method":"get","label":"Get Artist Targets","operationId":"get_artists"},{"tags":["Targets"],"path":"/targets/artist","method":"get","label":"Search Artist Targets","operationId":"get_targets_artist"},{"tags":["Targets"],"path":"/targets/genres","method":"get","label":"Get Genre Targets","operationId":"get_genres"},{"tags":["Targets"],"path":"/targets/genre","method":"get","label":"Search Genre Targets","operationId":"get_targets_genre"},{"tags":["Targets"],"path":"/targets/geos","method":"get","label":"Search Geo Targets","operationId":"get_geos"},{"tags":["Targets"],"path":"/targets/geo","method":"get","label":"Get Geo Targets","operationId":"get_targets_geo"},{"tags":["Targets"],"path":"/targets/playlists","method":"get","label":"Get Playlist Targets","operationId":"get_playlists"},{"tags":["Targets"],"path":"/targets/playlist","method":"get","label":"Search Playlist Targets","operationId":"get_targets_playlist"},{"tags":["Ad Sets"],"path":"/adSets","method":"post","label":"Get Ad Sets","operationId":"get_all_ad_sets"},{"tags":["Ad Sets"],"path":"/adSetlinks","method":"post","label":"Get Ad Set Links","operationId":"get_all_ad_set_links"},{"tags":["Ads"],"path":"/ads","method":"post","label":"Get Ads","operationId":"get_all_ads"},{"tags":["Estimate"],"path":"/adAccounts/{ad_account_id}/estimate/cost","method":"post","label":"Get Cost Estimate","operationId":"get_cost_estimate"},{"tags":["Ad Sets"],"path":"/adAccounts/{ad_account_id}/adSets","method":"get","label":"Get Ad Sets by Ad Account","operationId":"get_ad_sets"},{"tags":["Ad Sets"],"path":"/adAccounts/{ad_account_id}/campaigns/{campaign_id}/adSets","method":"get","label":"Get Ad Sets by Campaign","operationId":"get_ad_sets_by_campaign"},{"tags":["Ad Sets"],"path":"/adAccounts/{ad_account_id}/campaigns/{campaign_id}/adSets","method":"post","label":"Create Ad Set","operationId":"post_ad_set"},{"tags":["Ad Sets"],"path":"/adAccounts/{ad_account_id}/adSetLink/{ad_set_link_id}/status/{status}","method":"put","label":"Update Ad Set Link Status","operationId":"update_ad_set_link_status"},{"tags":["Ad Sets"],"path":"/adAccounts/{ad_account_id}/adSets/{ad_set_id}/status/{status}","method":"put","label":"Update Ad Set Status","operationId":"update_ad_set_status"},{"tags":["Ad Sets"],"path":"/adAccounts/{ad_account_id}/adSets/{ad_set_id}/serving","method":"get","label":"Get Ad Set Serving Status","operationId":"get_ad_set_serving_status"},{"tags":["Ad Sets"],"path":"/adAccounts/{ad_account_id}/adSets/{ad_set_id}","method":"get","label":"Get Ad Set","operationId":"get_ad_set"},{"tags":["Ad Sets"],"path":"/adAccounts/{ad_account_id}/adSets/{ad_set_id}","method":"put","label":"Update Ad Set","operationId":"put_ad_set"},{"tags":["Ads"],"path":"/adAccounts/{ad_account_id}/ads","method":"get","label":"Get Ads by Ad Account","operationId":"get_ads"},{"tags":["Ads"],"path":"/adAccounts/{ad_account_id}/ads","method":"post","label":"Create Ad","operationId":"post_ad"},{"tags":["Ads"],"path":"/adAccounts/{ad_account_id}/ads/{ad_id}","method":"get","label":"Get Ad","operationId":"get_ad"},{"tags":["Ads"],"path":"/adAccounts/{ad_account_id}/ads/{ad_id}","method":"put","label":"Update Ad","operationId":"put_ad"}],"v1.1":[{"tags":["Ad Accounts"],"path":"/currentUser/adAccounts","method":"get","label":"Get Ad Accounts","operationId":"get_adAccounts"},{"tags":["Advertiser"],"path":"/advertisers","method":"post","label":"Get Advertisers","operationId":"get_all_advertisers"},{"tags":["Campaigns"],"path":"/campaigns","method":"post","label":"Get Campaigns","operationId":"get_all_campaigns"},{"tags":["Flights"],"path":"/flights","method":"post","label":"Get Flights","operationId":"get_all_flights"},{"tags":["Flights"],"path":"/flightlinks","method":"post","label":"Get Flight Links","operationId":"get_all_flight_links"},{"tags":["Creatives"],"path":"/creatives","method":"post","label":"Get Creatives","operationId":"get_all_creatives"},{"tags":["Advertiser"],"path":"/adAccounts/{ad_account_id}/advertisers","method":"get","label":"Get Advertisers by Ad Account","operationId":"get_advertisers"},{"tags":["Advertiser"],"path":"/adAccounts/{ad_account_id}/advertisers","method":"post","label":"Create Advertiser","operationId":"post_advertiser"},{"tags":["Advertiser"],"path":"/adAccounts/{ad_account_id}/advertisers/{advertiser_id}","method":"get","label":"Get Advertiser","operationId":"get_advertiser"},{"tags":["Advertiser"],"path":"/adAccounts/{ad_account_id}/advertisers/{advertiser_id}","method":"put","label":"Update Advertiser","operationId":"put_advertiser"},{"tags":["Campaigns"],"path":"/adAccounts/{ad_account_id}/campaigns","method":"get","label":"Get Campaigns by Ad Account","operationId":"get_campaigns"},{"tags":["Campaigns"],"path":"/adAccounts/{ad_account_id}/campaigns","method":"post","label":"Create Campaign","operationId":"post_campaign"},{"tags":["Campaigns"],"path":"/adAccounts/{ad_account_id}/campaigns/{campaign_id}/status/{status}","method":"put","label":"Update Campaign Status","operationId":"update_campaign_status"},{"tags":["Campaigns"],"path":"/adAccounts/{ad_account_id}/campaigns/{campaign_id}","method":"get","label":"Get Campaign","operationId":"get_campaign"},{"tags":["Campaigns"],"path":"/adAccounts/{ad_account_id}/campaigns/{campaign_id}","method":"put","label":"Update Campaign","operationId":"put_campaign"},{"tags":["Flights"],"path":"/adAccounts/{ad_account_id}/flights","method":"get","label":"Get Flights","operationId":"get_flights"},{"tags":["Flights"],"path":"/adAccounts/{ad_account_id}/campaigns/{campaign_id}/flights","method":"get","label":"Get Flights for Campaign","operationId":"get_flights_by_campaign"},{"tags":["Flights"],"path":"/adAccounts/{ad_account_id}/campaigns/{campaign_id}/flights","method":"post","label":"Create Flight","operationId":"post_flight"},{"tags":["Flights"],"path":"/adAccounts/{ad_account_id}/flightLink/{flight_link_id}/status/{status}","method":"put","label":"Update Flight Link Status","operationId":"update_flight_link_status"},{"tags":["Flights"],"path":"/adAccounts/{ad_account_id}/flights/{flight_id}/status/{status}","method":"put","label":"Update Flight Status","operationId":"update_flight_status"},{"tags":["Flights"],"path":"/adAccounts/{ad_account_id}/flights/{flight_id}/serving","method":"get","label":"Get Flight Serving Status","operationId":"get_flight_serving_status"},{"tags":["Flights"],"path":"/adAccounts/{ad_account_id}/flights/{flight_id}","method":"get","label":"Get Flight","operationId":"get_flight"},{"tags":["Flights"],"path":"/adAccounts/{ad_account_id}/flights/{flight_id}","method":"put","label":"Update Flight","operationId":"put_flight"},{"tags":["Creatives"],"path":"/adAccounts/{ad_account_id}/creatives","method":"get","label":"Get Creatives","operationId":"get_creatives"},{"tags":["Creatives"],"path":"/adAccounts/{ad_account_id}/creatives","method":"post","label":"Create Creative","operationId":"post_creative"},{"tags":["Creatives"],"path":"/adAccounts/{ad_account_id}/creatives/{creative_id}","method":"get","label":"Get Creative","operationId":"get_creative"},{"tags":["Creatives"],"path":"/adAccounts/{ad_account_id}/creatives/{creative_id}","method":"put","label":"Update Creative","operationId":"put_creative"},{"tags":["Assets"],"path":"/adAccounts/{ad_account_id}/assets/fullmix","method":"post","label":"Get Fullmix Upload Url","operationId":"post_get_fullmix_upload_url"},{"tags":["Assets"],"path":"/adAccounts/{ad_account_id}/assets/audio/{asset_id}","method":"get","label":"Get Audio Asset","operationId":"get_audio_asset"},{"tags":["Assets"],"path":"/adAccounts/{ad_account_id}/assets/video","method":"get","label":"Get Video Assets","operationId":"get_video_assets"},{"tags":["Assets"],"path":"/adAccounts/{ad_account_id}/assets/video","method":"post","label":"Get Video Upload Url","operationId":"post_get_video_upload_url"},{"tags":["Assets"],"path":"/adAccounts/{ad_account_id}/assets/image","method":"get","label":"Get Image Assets","operationId":"get_image_assets"},{"tags":["Assets"],"path":"/adAccounts/{ad_account_id}/assets/image","method":"post","label":"Get Image Upload Url","operationId":"post_get_image_upload_url"},{"tags":["Assets"],"path":"/adAccounts/{ad_account_id}/assets/audio","method":"get","label":"Get Audio Assets","operationId":"get_audio_assets"},{"tags":["Assets"],"path":"/adAccounts/{ad_account_id}/assets/image/{image_id}","method":"get","label":"Get Image Asset","operationId":"get_image_asset"},{"tags":["Assets"],"path":"/adAccounts/{ad_account_id}/assets/video/{video_id}","method":"get","label":"Get Video Asset","operationId":"get_video_asset"},{"tags":["Reports"],"path":"/report","method":"post","label":"Create Report","operationId":"get_report"},{"tags":["Reports"],"path":"/adAccounts/{ad_account_id}/report","method":"post","label":"Create Report by Ad Account","operationId":"post_report"},{"tags":["Audience Sizer"],"path":"/estimate","method":"post","label":"Get Audience estimate for a given set of targeting","operationId":"post_estimate"},{"tags":["Targets"],"path":"/targets/artists","method":"get","label":"Get Artist Targets","operationId":"get_artists"},{"tags":["Targets"],"path":"/targets/artist","method":"get","label":"Search Artist Targets","operationId":"get_targets_artist"},{"tags":["Targets"],"path":"/targets/genres","method":"get","label":"Get Genre Targets","operationId":"get_genres"},{"tags":["Targets"],"path":"/targets/genre","method":"get","label":"Search Genre Targets","operationId":"get_targets_genre"},{"tags":["Targets"],"path":"/targets/geos","method":"get","label":"Search Geo Targets","operationId":"get_geos"},{"tags":["Targets"],"path":"/targets/geo","method":"get","label":"Get Geo Targets","operationId":"get_targets_geo"},{"tags":["Targets"],"path":"/targets/playlists","method":"get","label":"Get Playlist Targets","operationId":"get_playlists"},{"tags":["Targets"],"path":"/targets/playlist","method":"get","label":"Search Playlist Targets","operationId":"get_targets_playlist"}],"v1.0":[{"tags":["Ad Accounts"],"path":"/currentUser/adAccounts","method":"get","label":"Get Ad Accounts","operationId":"get_adAccounts"},{"tags":["Advertiser"],"path":"/advertisers","method":"post","label":"Get Advertisers","operationId":"get_all_advertisers"},{"tags":["Campaigns"],"path":"/campaigns","method":"post","label":"Get Campaigns","operationId":"get_all_campaigns"},{"tags":["Flights"],"path":"/flights","method":"post","label":"Get Flights","operationId":"get_all_flights"},{"tags":["Flights"],"path":"/flightlinks","method":"post","label":"Get Flight Links","operationId":"get_all_flight_links"},{"tags":["Creatives"],"path":"/creatives","method":"post","label":"Get Creatives","operationId":"get_all_creatives"},{"tags":["Advertiser"],"path":"/adAccounts/{ad_account_id}/advertisers","method":"get","label":"Get Advertisers by Ad Account","operationId":"get_advertisers"},{"tags":["Advertiser"],"path":"/adAccounts/{ad_account_id}/advertisers","method":"post","label":"Create Advertiser","operationId":"post_advertiser"},{"tags":["Advertiser"],"path":"/adAccounts/{ad_account_id}/advertisers/{advertiser_id}","method":"get","label":"Get Advertiser","operationId":"get_advertiser"},{"tags":["Advertiser"],"path":"/adAccounts/{ad_account_id}/advertisers/{advertiser_id}","method":"put","label":"Update Advertiser","operationId":"put_advertiser"},{"tags":["Campaigns"],"path":"/adAccounts/{ad_account_id}/campaigns","method":"get","label":"Get Campaigns by Ad Account","operationId":"get_campaigns"},{"tags":["Campaigns"],"path":"/adAccounts/{ad_account_id}/campaigns","method":"post","label":"Create Campaign","operationId":"post_campaign"},{"tags":["Campaigns"],"path":"/adAccounts/{ad_account_id}/campaigns/{campaign_id}/status/{status}","method":"put","label":"Update Campaign Status","operationId":"update_campaign_status"},{"tags":["Campaigns"],"path":"/adAccounts/{ad_account_id}/campaigns/{campaign_id}","method":"get","label":"Get Campaign","operationId":"get_campaign"},{"tags":["Campaigns"],"path":"/adAccounts/{ad_account_id}/campaigns/{campaign_id}","method":"put","label":"Update Campaign","operationId":"put_campaign"},{"tags":["Flights"],"path":"/adAccounts/{ad_account_id}/flights","method":"get","label":"Get Flights","operationId":"get_flights"},{"tags":["Flights"],"path":"/adAccounts/{ad_account_id}/campaigns/{campaign_id}/flights","method":"get","label":"Get Flights for Campaign","operationId":"get_flights_by_campaign"},{"tags":["Flights"],"path":"/adAccounts/{ad_account_id}/campaigns/{campaign_id}/flights","method":"post","label":"Create Flight","operationId":"post_flight"},{"tags":["Flights"],"path":"/adAccounts/{ad_account_id}/flightLink/{flight_link_id}/status/{status}","method":"put","label":"Update Flight Link Status","operationId":"update_flight_link_status"},{"tags":["Flights"],"path":"/adAccounts/{ad_account_id}/flights/{flight_id}/status/{status}","method":"put","label":"Update Flight Status","operationId":"update_flight_status"},{"tags":["Flights"],"path":"/adAccounts/{ad_account_id}/flights/{flight_id}/serving","method":"get","label":"Get Flight Serving Status","operationId":"get_flight_serving_status"},{"tags":["Flights"],"path":"/adAccounts/{ad_account_id}/flights/{flight_id}","method":"get","label":"Get Flight","operationId":"get_flight"},{"tags":["Flights"],"path":"/adAccounts/{ad_account_id}/flights/{flight_id}","method":"put","label":"Update Flight","operationId":"put_flight"},{"tags":["Creatives"],"path":"/adAccounts/{ad_account_id}/creatives","method":"get","label":"Get Creatives","operationId":"get_creatives"},{"tags":["Creatives"],"path":"/adAccounts/{ad_account_id}/creatives","method":"post","label":"Create Creative","operationId":"post_creative"},{"tags":["Creatives"],"path":"/adAccounts/{ad_account_id}/creatives/{creative_id}","method":"get","label":"Get Creative","operationId":"get_creative"},{"tags":["Creatives"],"path":"/adAccounts/{ad_account_id}/creatives/{creative_id}","method":"put","label":"Update Creative","operationId":"put_creative"},{"tags":["Assets"],"path":"/adAccounts/{ad_account_id}/assets/fullmix","method":"post","label":"Get Fullmix Upload Url","operationId":"post_get_fullmix_upload_url"},{"tags":["Assets"],"path":"/adAccounts/{ad_account_id}/assets/audio/{asset_id}","method":"get","label":"Get Audio Asset","operationId":"get_audio_asset"},{"tags":["Assets"],"path":"/adAccounts/{ad_account_id}/assets/video","method":"get","label":"Get Video Assets","operationId":"get_video_assets"},{"tags":["Assets"],"path":"/adAccounts/{ad_account_id}/assets/video","method":"post","label":"Get Video Upload Url","operationId":"post_get_video_upload_url"},{"tags":["Assets"],"path":"/adAccounts/{ad_account_id}/assets/image","method":"get","label":"Get Image Assets","operationId":"get_image_assets"},{"tags":["Assets"],"path":"/adAccounts/{ad_account_id}/assets/image","method":"post","label":"Get Image Upload Url","operationId":"post_get_image_upload_url"},{"tags":["Assets"],"path":"/adAccounts/{ad_account_id}/assets/audio","method":"get","label":"Get Audio Assets","operationId":"get_audio_assets"},{"tags":["Assets"],"path":"/adAccounts/{ad_account_id}/assets/image/{image_id}","method":"get","label":"Get Image Asset","operationId":"get_image_asset"},{"tags":["Assets"],"path":"/adAccounts/{ad_account_id}/assets/video/{video_id}","method":"get","label":"Get Video Asset","operationId":"get_video_asset"},{"tags":["Reports"],"path":"/report","method":"post","label":"Create Report","operationId":"get_report"},{"tags":["Reports"],"path":"/adAccounts/{ad_account_id}/report","method":"post","label":"Create Report by Ad Account","operationId":"post_report"},{"tags":["Audience Sizer"],"path":"/estimate","method":"post","label":"Get Audience estimate for a given set of targeting","operationId":"post_estimate"},{"tags":["Targets"],"path":"/targets/artists","method":"get","label":"Get Artist Targets","operationId":"get_artists"},{"tags":["Targets"],"path":"/targets/artist","method":"get","label":"Search Artist Targets","operationId":"get_targets_artist"},{"tags":["Targets"],"path":"/targets/genres","method":"get","label":"Get Genre Targets","operationId":"get_genres"},{"tags":["Targets"],"path":"/targets/genre","method":"get","label":"Search Genre Targets","operationId":"get_targets_genre"},{"tags":["Targets"],"path":"/targets/geos","method":"get","label":"Get Geo Targets","operationId":"get_geos"},{"tags":["Targets"],"path":"/targets/geo","method":"get","label":"Get Geo Targets","operationId":"get_targets_geo"},{"tags":["Targets"],"path":"/targets/playlists","method":"get","label":"Get Playlist Targets","operationId":"get_playlists"},{"tags":["Targets"],"path":"/targets/playlist","method":"get","label":"Search Playlist Targets","operationId":"get_targets_playlist"}]},"padded":false,"mobileNavInitOpen":true},"__N_SSG":true},"page":"/documentation/ads-api","query":{},"buildId":"-HJZ5KOqYIqcU_symK61O","assetPrefix":"https://developer-assets.spotifycdn.com","isFallback":false,"gsp":true,"appGip":true,"scriptLoader":[]}</script></body></html>

Pages: 1 2 3 4 5 6 7 8 9 10