Doordash Ad Groups API

The Ad Groups API from Doordash — 2 operation(s) for ad groups.

Operations 4

Each operation below carries the questions people ask an LLM about it and the instructions they give an agent to run it. Generated by API Evangelist overlay

POST /ads/api/v1/{campaignType}/adGroups Create a new ad group in a campaign · Create ad group #
Ask an LLM
“What do I need to set up a new ad group, such as dates and manual targets?”
“Can a new ad group target specific businesses or dayparts?”
Tell an agent
Create an ad group named {name} in campaign {campaignId} for {campaignType} from {startDate} to {endDate}.
Add a new {campaignType} ad group called {name} to campaign {campaignId}.
PUT /ads/api/v1/{campaignType}/adGroups Update an ad group's bids, dates or status · Update ad group #
Ask an LLM
“How do I pause an ad group that is already live?”
“Can I change the end date or automatic bid of an existing ad group?”
Tell an agent
Pause ad group {adGroupId} in campaign {campaignId} for {campaignType}.
Rename existing ad group {adGroupId} in campaign {campaignId} ({campaignType}) to {name}.
GET /ads/api/v1/{campaignType}/adGroups List ad groups in my campaigns · Get ad groups #
Ask an LLM
“Which ad groups are running under my sponsored product campaigns?”
“Can I filter the ad group list down to specific campaign IDs?”
Tell an agent
List ad groups for {campaignType} campaigns.
List the ad groups in campaign {campaignIds} for {campaignType}.
GET /ads/api/v1/{campaignType}/adGroups/{adGroupId} Get one ad group by its ID · Get ad group by ID #
Ask an LLM
“What are the settings of one specific ad group?”
“How do I look up a single ad group's targeting and bid details by its ID?”
Tell an agent
Show ad group {adGroupId} for {campaignType}.
Get the bidding and targeting of ad group {adGroupId} ({campaignType}).

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/doordash-ad-groups-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

doordash-ad-groups-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  version: 1.0.29
  title: DoorDash Ads Ad Groups API
  description: DoorDash Ads API for Sponsored Products for campaign management and reporting operations.
servers:
- url: https://openapi.doordash.com
security:
- Ads API Key Authentication: []
tags:
- name: Ad Groups
paths:
  /ads/api/v1/{campaignType}/adGroups:
    post:
      tags:
      - Ad Groups
      operationId: createAdGroup
      summary: Create ad group
      description: Create a single ad group.
      parameters:
      - $ref: '#/components/parameters/campaignType'
      requestBody:
        description: An ad group to create.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateAdGroupRequest'
      responses:
        '200':
          description: Success.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdGroupResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
    put:
      tags:
      - Ad Groups
      operationId: updateAdGroup
      summary: Update ad group
      description: Update a single ad group.
      parameters:
      - $ref: '#/components/parameters/campaignType'
      requestBody:
        description: A partial ad group object used to update an existing ad group.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateAdGroupRequest'
      responses:
        '200':
          description: Success.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdGroupResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
    get:
      tags:
      - Ad Groups
      operationId: getAdGroups
      summary: Get ad groups
      description: Get a list of ad groups, optionally filtered by campaign IDs and/or ad group IDs.
      parameters:
      - $ref: '#/components/parameters/campaignType'
      - $ref: '#/components/parameters/startIndex'
      - $ref: '#/components/parameters/count'
      - name: campaignIdFilter
        in: query
        description: A comma-delimited list of campaign identifiers. At least one of campaignIdFilter and adGroupIdFilter is required.
        required: false
        schema:
          type: string
      - name: adGroupIdFilter
        in: query
        description: A comma-delimited list of ad group identifiers. At least one of campaignIdFilter and adGroupIdFilter is required.
        required: false
        schema:
          type: string
      responses:
        '200':
          description: Success.
          content:
            application/json:
              schema:
                type: object
                required:
                - adGroups
                properties:
                  adGroups:
                    description: List of ad groups.
                    type: array
                    items:
                      $ref: '#/components/schemas/AdGroupResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /ads/api/v1/{campaignType}/adGroups/{adGroupId}:
    get:
      tags:
      - Ad Groups
      operationId: getAdGroupById
      summary: Get ad group by ID
      description: Get a single ad group by the provided identifier.
      parameters:
      - $ref: '#/components/parameters/campaignType'
      - name: adGroupId
        in: path
        description: The identifier of an existing ad group.
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdGroupResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
components:
  schemas:
    DayOfWeek:
      type: string
      enum:
      - MONDAY
      - TUESDAY
      - WEDNESDAY
      - THURSDAY
      - FRIDAY
      - SATURDAY
      - SUNDAY
      - UNSPECIFIED
    Placement:
      required:
      - type
      properties:
        type:
          description: Specifies an ad group surface
          type: string
          enum:
          - SEARCH
          - CATEGORIES
          - COLLECTION
          - DOUBLEDASH
    TargetingAction:
      type: string
      enum:
      - LAPSED
      - INCLUDE_ANY
      - EXCLUDE_ANY
    Name:
      description: Resource name.
      type: string
    BehavioralTargetResponse:
      required:
      - action
      - resources
      properties:
        action:
          $ref: '#/components/schemas/TargetingAction'
        resources:
          type: object
          properties:
            type:
              $ref: '#/components/schemas/ResourceType'
            objects:
              type: array
              items:
                type: object
                properties:
                  id:
                    type: string
                  name:
                    type: string
                  status:
                    type: string
                    enum:
                    - INELIGIBLE
    ManualTargetRead:
      required:
      - bid
      - placement
      properties:
        bid:
          allOf:
          - $ref: '#/components/schemas/BidRead'
          - type: object
            description: Bid for a specific ad group placement type
        placement:
          $ref: '#/components/schemas/Placement'
    ManualTargetWrite:
      required:
      - bid
      - placement
      properties:
        bid:
          allOf:
          - $ref: '#/components/schemas/BidWrite'
          - type: object
            description: Bid for a specific ad group placement type
        placement:
          $ref: '#/components/schemas/Placement'
    Daypart:
      type: object
      properties:
        startTimeOfDayOfWeek:
          $ref: '#/components/schemas/TimeOfDayOfWeek'
        endTimeOfDayOfWeek:
          $ref: '#/components/schemas/TimeOfDayOfWeek'
    CampaignId:
      description: Unique campaign identifier.
      type: string
    BehavioralTargetWrite:
      required:
      - action
      - resources
      properties:
        action:
          $ref: '#/components/schemas/TargetingAction'
        resources:
          type: object
          properties:
            type:
              $ref: '#/components/schemas/ResourceType'
            ids:
              type: array
              items:
                type: number
    AdGroupId:
      description: Unique ad group identifier.
      type: string
    TimeOfDay:
      type: object
      properties:
        hours:
          type: number
        minutes:
          type: number
        seconds:
          type: number
        nanos:
          type: number
    KeywordsBiddingWrite:
      required:
      - bid
      - placement
      - targetKeywords
      properties:
        bid:
          allOf:
          - $ref: '#/components/schemas/BidWrite'
          - type: object
            description: Bid for list of keywords under a specific ad group placement type. Zero unit amount will be excluded keywords.
        placement:
          $ref: '#/components/schemas/Placement'
        targetKeywords:
          type: array
          minItems: 1
          maxItems: 40
          items:
            type: string
    BidType:
      type: string
      enum:
      - AUTOMATED
      - MANUAL
      description: '**Sponsored Products US market only.**

        Configure the AUTOMATED BidType to enable a new bidding strategy: Automatic Bidding. This strategy automatically sets and adjusts your bids in real-time to maximize clicks at the lowest cost.


        When choosing Automatic Bidding with the AUTOMATED BidType, manualTargets must be set. Bid in manualTargets is not required.


        All ad groups within the same campaign must use the same BidType. Specifying different BidTypes is not allowed.

        '
    Code:
      description: An enumerated success or error code for machine use.
      type: string
    BidMinRoas:
      minimum: 0.1
      exclusiveMinimum: false
      maximum: 6
      exclusiveMaximum: false
      type: double
      example: 2
      description: 'Specify the BidMinRoas value when configuring the Automatic Bidding strategy.


        Choose a minimum ROAS that aligns with your campaign goals. If not specified, a default minimum guardrail of 2.0x will be applied.


        All ad groups within the same campaign must use the same bidMinRoas. Although bidMinRoas is set at the ad group level, it is applied at the campaign level — updating bidMinRoas on any ad group will set the same value across all ad groups within the campaign.

        '
    ResourceType:
      type: string
      enum:
      - L1_BRAND
      - L1_CATEGORY
      - L2_CATEGORY
    Error:
      properties:
        code:
          description: An enumerated error for machine use.
          type: string
          readOnly: true
        details:
          description: A human-readable description of the error.
          type: string
          readOnly: true
    InterestTarget:
      type: object
      required:
      - labels
      - type
      properties:
        labels:
          type: array
          items:
            type: string
        type:
          type: string
          enum:
          - DISH
    StatusDescription:
      description: Description of the resource is in current state.
      type: string
    CodeDescription:
      description: A human-readable description of the code.
      type: string
    BidWrite:
      required:
      - price
      properties:
        price:
          description: Integer representing a monetary value in cents.
          properties:
            unitAmount:
              description: Integer representing a monetary value in cents.
              type: number
    AutomaticBidRequest:
      allOf:
      - $ref: '#/components/schemas/BidWrite'
      - type: object
        description: 'Bid for all ad group placement types. Either automaticBid OR manualTargets must be set.


          Bid unitAmount range per advertiser country code is outlined in the following table. Ranges are presented as ''Minimum-Maximum''.


          | Country code (currency) | Minimum-Maximum |

          |-------------------|-----------------|

          | US (USD) | 80-10,000 |

          | CA (CAD) | 80-10,000 |

          | AU (AUD) | 80-10,000 |

          '
    StatusRead:
      description: Current resource state.
      type: string
      enum:
      - INCOMPLETE
      - IN_REVIEW
      - SCHEDULED
      - ACTIVE
      - PAUSED
      - ENDED
      - DRAFT
      - REJECTED
      - CANCELLED
    AdGroupResponse:
      required:
      - campaignId
      - adGroupId
      - name
      - status
      - statusDescription
      - startDate
      - endDate
      properties:
        campaignId:
          $ref: '#/components/schemas/CampaignId'
        adGroupId:
          $ref: '#/components/schemas/AdGroupId'
        name:
          $ref: '#/components/schemas/Name'
        status:
          $ref: '#/components/schemas/StatusRead'
        statusDescription:
          $ref: '#/components/schemas/StatusDescription'
        startDate:
          $ref: '#/components/schemas/StartDate'
        endDate:
          $ref: '#/components/schemas/EndDate'
        automaticBid:
          allOf:
          - $ref: '#/components/schemas/BidRead'
          - type: object
            description: Bid for all ad group placement types
        code:
          $ref: '#/components/schemas/Code'
        codeDescription:
          $ref: '#/components/schemas/CodeDescription'
        manualTargets:
          type: array
          items:
            $ref: '#/components/schemas/ManualTargetRead'
        keywordsBidding:
          type: array
          items:
            $ref: '#/components/schemas/KeywordsBiddingRead'
        targetBusinessIds:
          $ref: '#/components/schemas/TargetBusinessIds'
        behavioralTargets:
          type: array
          items:
            $ref: '#/components/schemas/BehavioralTargetResponse'
        dayparts:
          type: array
          items:
            $ref: '#/components/schemas/Daypart'
        bidType:
          $ref: '#/components/schemas/BidType'
        bidMinRoas:
          $ref: '#/components/schemas/BidMinRoas'
        interestTargets:
          type: array
          items:
            $ref: '#/components/schemas/InterestTarget'
    UpdateAdGroupRequest:
      description: '**[Beta]** Sponsored Products and Sponsored Brand ad groups support stacked targeting. You can combine multiple targeting features in the same request when those targeting features are enabled for the advertiser and country. Sponsored Products supports dayparting (`dayparts`), merchant targeting (`targetBusinessIds`), behavioral targeting (`behavioralTargets`), interest targeting (`interestTargets`), and keyword targeting (`keywordsBidding`). Sponsored Brand supports dayparting (`dayparts`), merchant targeting (`targetBusinessIds`), behavioral targeting (`behavioralTargets`), and interest targeting (`interestTargets`). Existing campaign type, bid configuration, advertiser, and country validation still applies.

        '
      required:
      - campaignId
      - adGroupId
      properties:
        campaignId:
          $ref: '#/components/schemas/CampaignId'
        adGroupId:
          $ref: '#/components/schemas/AdGroupId'
        name:
          $ref: '#/components/schemas/Name'
        status:
          $ref: '#/components/schemas/StatusWrite'
        startDate:
          $ref: '#/components/schemas/StartDate'
        endDate:
          $ref: '#/components/schemas/EndDate'
        automaticBid:
          $ref: '#/components/schemas/AutomaticBidRequest'
        manualTargets:
          $ref: '#/components/schemas/ManualTargetsRequest'
        keywordsBidding:
          $ref: '#/components/schemas/KeywordsBiddingRequest'
        targetBusinessIds:
          $ref: '#/components/schemas/TargetBusinessIds'
        behavioralTargets:
          $ref: '#/components/schemas/BehavioralTargetsRequest'
        dayparts:
          description: '**[Beta]** Custom schedule for when people see this ad group campaign.

            '
          type: array
          items:
            $ref: '#/components/schemas/Daypart'
        bidType:
          $ref: '#/components/schemas/BidType'
        bidMinRoas:
          $ref: '#/components/schemas/BidMinRoas'
        interestTargets:
          type: array
          items:
            $ref: '#/components/schemas/InterestTarget'
    CreateAdGroupRequest:
      description: '**[Beta]** Sponsored Products and Sponsored Brand ad groups support stacked targeting. You can combine multiple targeting features in the same request when those targeting features are enabled for the advertiser and country. Sponsored Products supports dayparting (`dayparts`), merchant targeting (`targetBusinessIds`), behavioral targeting (`behavioralTargets`), interest targeting (`interestTargets`), and keyword targeting (`keywordsBidding`). Sponsored Brand supports dayparting (`dayparts`), merchant targeting (`targetBusinessIds`), behavioral targeting (`behavioralTargets`), and interest targeting (`interestTargets`). Existing campaign type, bid configuration, advertiser, and country validation still applies.

        '
      required:
      - campaignId
      - name
      - startDate
      - endDate
      - automaticBid
      - manualTargets
      properties:
        campaignId:
          $ref: '#/components/schemas/CampaignId'
        name:
          $ref: '#/components/schemas/Name'
        startDate:
          $ref: '#/components/schemas/StartDate'
        endDate:
          $ref: '#/components/schemas/EndDate'
        automaticBid:
          $ref: '#/components/schemas/AutomaticBidRequest'
        manualTargets:
          $ref: '#/components/schemas/ManualTargetsRequest'
        targetBusinessIds:
          $ref: '#/components/schemas/TargetBusinessIds'
        behavioralTargets:
          $ref: '#/components/schemas/BehavioralTargetsRequest'
        dayparts:
          description: '**[Beta]** Configure custom schedule for when people see this ad group campaign.

            '
          type: array
          items:
            $ref: '#/components/schemas/Daypart'
        bidType:
          $ref: '#/components/schemas/BidType'
        bidMinRoas:
          $ref: '#/components/schemas/BidMinRoas'
        interestTargets:
          type: array
          items:
            $ref: '#/components/schemas/InterestTarget'
        keywordsBidding:
          $ref: '#/components/schemas/KeywordsBiddingRequest'
    TimeOfDayOfWeek:
      type: object
      properties:
        dayOfWeek:
          $ref: '#/components/schemas/DayOfWeek'
        timeOfDay:
          $ref: '#/components/schemas/TimeOfDay'
    KeywordsBiddingRead:
      required:
      - bid
      - placement
      - targetKeywords
      properties:
        bid:
          allOf:
          - $ref: '#/components/schemas/BidRead'
          - type: object
            description: Bid for list of keywords under a specific ad group placement type. Zero unit amount will be excluded keywords.
        placement:
          $ref: '#/components/schemas/Placement'
        targetKeywords:
          type: array
          minItems: 1
          maxItems: 40
          items:
            type: string
    EndDate:
      description: End date for the resource to stop running. The format of the date is yyyy-MM-dd HH:mm:ss.
      type: string
      example: '2025-12-01 00:00:00'
    BidRead:
      required:
      - price
      properties:
        price:
          $ref: '#/components/schemas/MonetaryFieldsExtended'
    ManualTargetsRequest:
      type: array
      items:
        $ref: '#/components/schemas/ManualTargetWrite'
      description: "**Sponsored Products only.** Bid for specific ad group placement types. Either automaticBid OR manualTargets must be set. \n\nSupported ad group placement type combinations are represented in the following table.\n\n| Valid combinations |\n|-------------------|\n| CATEGORIES, COLLECTION, SEARCH, and DOUBLEDASH |\n| CATEGORIES, COLLECTION, and SEARCH |\n| DOUBLEDASH only |\n\nBid unitAmount range per advertiser country code per placement type is outlined in the following table. Ranges are presented as 'Minimum-Maximum'.\n\n| Placement type | US (USD) | CA (CAD) | AU (AUD) |\n|-------------------|-------------------|-------------------|-------------------|\n| CATEGORIES | 40-10,000 | 30-10,000 | 40-10,000 |\n| COLLECTION | 30-10,000 | 40-10,000 | 50-10,000 |\n| SEARCH | 60-10,000 | 40-10,000 | 50-10,000 |\n| DOUBLEDASH | 80-10,000 | 80-10,000 | 80-10,000 |\n"
    KeywordsBiddingRequest:
      description: '**Sponsored Products only.** Keyword search bidding configuration to customize the audience of this ad group campaign.

        '
      type: array
      items:
        $ref: '#/components/schemas/KeywordsBiddingWrite'
    TargetBusinessIds:
      type: array
      items:
        type: string
      description: 'Business IDs for merchant targeting (domestic, non-alcohol only).

        '
    StartDate:
      description: Start date for the resource to go live. The format of the date is yyyy-MM-dd HH:mm:ss.
      type: string
      example: '2025-11-01 00:00:00'
    StatusWrite:
      description: Current resource state.
      type: string
      enum:
      - ACTIVE
      - PAUSED
      - ENDED
    BehavioralTargetsRequest:
      type: array
      items:
        $ref: '#/components/schemas/BehavioralTargetWrite'
      description: 'Behavioral targeting configuration to customize the audience of this ad group campaign.

        '
    MonetaryFieldsExtended:
      required:
      - unitAmount
      - currency
      - displayString
      - decimalPlaces
      - symbol
      - symbolPlacement
      - sign
      properties:
        unitAmount:
          description: Integer representing a monetary value in cents.
          type: number
        currency:
          description: Monetary value currency
          type: string
          enum:
          - USD
        displayString:
          description: Monetary value formatted for display
          type: string
        decimalPlaces:
          description: Monetary value currency decimal places
          type: number
        symbol:
          description: Monetary value symbol
          type: string
        symbolPlacement:
          description: Monetary value symbol placement
          type: string
          enum:
          - left
          - right
        sign:
          description: True indicates the monetary value is positive. False indicates the monetary value is negative.
          type: boolean
  responses:
    InternalServerError:
      description: One or more query parameters contained an invalid value.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Forbidden:
      description: Forbidden.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Unauthorized:
      description: Unauthorized.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    NotFound:
      description: The requested resource was not found.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    BadRequest:
      description: Bad request.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  parameters:
    startIndex:
      name: startIndex
      in: query
      description: 0-indexed record offset for the result set. Defaults to 0.
      schema:
        type: number
        default: 0
    campaignType:
      name: campaignType
      in: path
      description: Indicates campaign type. 'sp' for Sponsored Products or 'sb' for Sponsored Brand
      required: true
      schema:
        type: string
    count:
      name: count
      in: query
      description: Number of records to include in the paged response.
      required: false
      schema:
        type: number
  securitySchemes:
    Ads_API_Key_Authentication:
      type: apiKey
      scheme: bearer
      in: header
      name: Authorization
      description: We will be using stateful token based API keys to authenticate clients, passed in the 'Authorization' header as 'Bearer {API_KEY}'.