Brave reporting API

Campaign performance reporting endpoints

OpenAPI Specification

brave-reporting-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Brave Ads campaigns reporting API
  description: 'API for managing and reporting on Brave Ads campaigns. Enables advertisers to retrieve campaign details and performance data for privacy-preserving native browser ads and search ads. Supports customizable reporting dimensions and metrics including impressions, clicks, spend, and conversion tracking. Authentication uses API keys generated from the Brave Ads dashboard.

    '
  version: 3.0.0
  contact:
    name: Brave Ads
    url: https://brave.com/brave-ads/
    email: adsales@brave.com
  termsOfService: https://brave.com/terms-of-use/
servers:
- url: https://ads-serve.brave.com
  description: Brave Ads API
security:
- ApiKeyAuth: []
tags:
- name: reporting
  description: Campaign performance reporting endpoints
paths:
  /v3/report/campaign/csv/{campaignId}:
    get:
      operationId: getCampaignReport
      summary: Get Campaign Performance Report
      description: 'Retrieve customizable performance report data for a specific campaign in CSV format. Supports filtering by date range, granularity, and selection of dimensions and metrics including impressions, clicks, spend, and conversions.

        '
      tags:
      - reporting
      parameters:
      - name: campaignId
        in: path
        required: true
        description: The unique identifier of the campaign to report on.
        schema:
          type: string
          example: camp_abc123
      - name: startDate
        in: query
        required: false
        description: Report start date in YYYY-MM-DD format.
        schema:
          type: string
          format: date
          example: '2026-01-01'
      - name: endDate
        in: query
        required: false
        description: Report end date in YYYY-MM-DD format.
        schema:
          type: string
          format: date
          example: '2026-01-31'
      - name: granularity
        in: query
        required: false
        description: Time granularity for report rows.
        schema:
          type: string
          enum:
          - daily
          - weekly
          - monthly
          - total
          default: daily
      - name: dimensions
        in: query
        required: false
        description: 'Comma-separated list of dimensions to include in the report. Options include campaign, ad_set, ad, country, platform, channel.

          '
        schema:
          type: string
          example: campaign,country
      - name: metrics
        in: query
        required: false
        description: 'Comma-separated list of metrics to include. Options include impressions, clicks, spend, ctr, cpc, conversions, conversion_value.

          '
        schema:
          type: string
          example: impressions,clicks,spend,ctr
      responses:
        '200':
          description: Successful campaign report response in CSV format
          content:
            text/csv:
              schema:
                type: string
                description: CSV-formatted campaign performance data.
              example: 'date,campaign_id,campaign_name,impressions,clicks,spend,ctr

                2026-01-01,camp_abc123,Q4 Brand Awareness,10523,312,15.60,2.96%

                2026-01-02,camp_abc123,Q4 Brand Awareness,11045,298,14.90,2.70%

                '
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
components:
  responses:
    Unauthorized:
      description: Unauthorized — missing or invalid API key.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    TooManyRequests:
      description: Too Many Requests — rate limit exceeded.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    BadRequest:
      description: Bad request — missing or invalid parameters.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    NotFound:
      description: Not Found — the requested campaign does not exist.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    Forbidden:
      description: Forbidden — API key does not have access to this resource.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
  schemas:
    ErrorResponse:
      type: object
      description: API error response.
      properties:
        error:
          type: object
          properties:
            code:
              type: string
              description: Error code.
            message:
              type: string
              description: Human-readable error message.
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: X-Api-Key
      description: 'API key generated from the Brave Ads dashboard at https://ads.brave.com.

        '
externalDocs:
  description: Brave Ads API Documentation
  url: https://ads-help.brave.com/campaign-performance/API/