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/