OpenAPI Specification
openapi: 3.0.3
info:
title: Brave Ads campaigns videos 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: videos
description: Video search endpoints
paths:
/videos/search:
get:
operationId: videoSearch
summary: Video Search
description: Search for videos from the Brave independent index.
tags:
- videos
parameters:
- name: q
in: query
required: true
description: Video search query string.
schema:
type: string
example: machine learning tutorial
- name: country
in: query
required: false
description: 2-character country code for geographic targeting.
schema:
type: string
example: US
- name: search_lang
in: query
required: false
description: ISO 639-1 language code for content language.
schema:
type: string
example: en
- name: count
in: query
required: false
description: Number of results per page. Max 50, default 20.
schema:
type: integer
minimum: 1
maximum: 50
default: 20
- name: offset
in: query
required: false
description: Pagination offset (0-based). Maximum is 9.
schema:
type: integer
minimum: 0
maximum: 9
default: 0
- name: safesearch
in: query
required: false
description: Content filtering level.
schema:
type: string
enum:
- false
- moderate
- strict
default: moderate
- name: freshness
in: query
required: false
description: Date freshness filter (pd, pw, pm, py, or custom range).
schema:
type: string
example: pw
- name: spellcheck
in: query
required: false
description: Enable autocorrection. Default true.
schema:
type: boolean
default: true
responses:
'200':
description: Successful video search response
content:
application/json:
schema:
$ref: '#/components/schemas/VideoSearchResponse'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'429':
$ref: '#/components/responses/TooManyRequests'
components:
schemas:
QueryInfo:
type: object
description: Information about the search query.
properties:
original:
type: string
description: The original search query as submitted.
more_results_available:
type: boolean
description: Indicates whether additional result pages are available.
VideoSearchResponse:
type: object
description: Response from the video search endpoint.
properties:
type:
type: string
example: videos
query:
$ref: '#/components/schemas/QueryInfo'
results:
type: array
items:
$ref: '#/components/schemas/VideoResult'
VideoResult:
type: object
description: A single video search result.
properties:
title:
type: string
description: Title of the video.
url:
type: string
format: uri
description: URL to the video page.
description:
type: string
description: Description of the video content.
thumbnail:
type: object
properties:
url:
type: string
format: uri
description: URL to video thumbnail image.
duration:
type: string
description: Duration of the video.
publisher:
type: string
description: Publisher or channel name.
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.
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'
Forbidden:
description: Forbidden — API key does not have access to this endpoint.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
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/