Profound OpenAI Ads API
The OpenAI Ads API from Profound — 1 operation(s) for openai ads.
The OpenAI Ads API from Profound — 1 operation(s) for openai ads.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
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.curl "https://apis.io/api/v1/apis/profound-openai-ads-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
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: 3.2.0
info:
title: External OpenAI Ads API
version: 6551bd49db665ffb7f80780b3e150b8e8b780cc3
servers:
- url: https://api.tryprofound.com
description: Production Server
tags:
- name: OpenAI Ads
paths:
/v1/ads/openai-ads/ad-account/insights:
get:
tags:
- OpenAI Ads
summary: Get Account Insights
description: 'Get ad account insights for the organization''s OpenAI Ads partner brand.
`aggregation_level=campaign` returns one row per campaign (with `campaign_id`
/ `campaign_name` and all metrics), so every campaign''s insights come back in
a single call; `time_granularity=daily` gives per-day rows (e.g. daily spend).'
operationId: get_account_insights_v1_ads_openai_ads_ad_account_insights_get
security:
- APIKeyHeader: []
- BearerAuth: []
parameters:
- name: organization_id
in: query
required: false
schema:
anyOf:
- type: string
format: uuid
- type: 'null'
description: Organization scope for API keys that can access multiple organizations.
title: Organization Id
description: Organization scope for API keys that can access multiple organizations.
- name: aggregation_level
in: query
required: false
schema:
anyOf:
- enum:
- ad_account
- campaign
- ad_group
- ad
type: string
- type: 'null'
description: Row entity for the insights breakdown. `campaign` returns one row per campaign.
title: Aggregation Level
description: Row entity for the insights breakdown. `campaign` returns one row per campaign.
- name: time_granularity
in: query
required: false
schema:
anyOf:
- enum:
- hourly
- daily
- monthly
- none
type: string
- type: 'null'
description: Time bucket for the rows; `none` or omitted returns totals over the whole range.
title: Time Granularity
description: Time bucket for the rows; `none` or omitted returns totals over the whole range.
- name: time_ranges[]
in: query
required: false
schema:
anyOf:
- type: array
items:
type: string
- type: 'null'
description: 'Time ranges as JSON objects, e.g. `{"type": "date_range", "since": "2026-07-01", "until": "2026-07-18"}`.'
title: Time Ranges[]
description: 'Time ranges as JSON objects, e.g. `{"type": "date_range", "since": "2026-07-01", "until": "2026-07-18"}`.'
- name: limit
in: query
required: false
schema:
anyOf:
- type: integer
maximum: 2000
minimum: 1
- type: 'null'
description: Maximum rows to return.
title: Limit
description: Maximum rows to return.
- name: after
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Return items after this ID (forward pagination).
title: After
description: Return items after this ID (forward pagination).
- name: before
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Return items before this ID (backward pagination).
title: Before
description: Return items before this ID (backward pagination).
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/InsightsResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
components:
schemas:
ValidationError:
properties:
loc:
items:
anyOf:
- type: string
- type: integer
type: array
title: Location
msg:
type: string
title: Message
type:
type: string
title: Error Type
input:
title: Input
ctx:
type: object
title: Context
type: object
required:
- loc
- msg
- type
title: ValidationError
InsightRow:
properties:
id:
type: string
title: Id
description: Row ID.
start_time:
anyOf:
- type: integer
- type: 'null'
title: Start Time
description: Bucket start (unix seconds).
end_time:
anyOf:
- type: integer
- type: 'null'
title: End Time
description: Bucket end (unix seconds).
readable_time:
anyOf:
- type: string
- type: 'null'
title: Readable Time
description: Human-readable time bucket.
timezone:
anyOf:
- type: string
- type: 'null'
title: Timezone
description: Timezone of the time bucket.
campaign_id:
anyOf:
- type: string
- type: 'null'
title: Campaign Id
description: Campaign ID for campaign-level rows.
campaign_name:
anyOf:
- type: string
- type: 'null'
title: Campaign Name
description: Campaign name for campaign-level rows.
ad_group_id:
anyOf:
- type: string
- type: 'null'
title: Ad Group Id
description: Ad group ID for ad_group-level rows.
ad_group_name:
anyOf:
- type: string
- type: 'null'
title: Ad Group Name
description: Ad group name for ad_group-level rows.
ad_id:
anyOf:
- type: string
- type: 'null'
title: Ad Id
description: Ad ID for ad-level rows.
ad_name:
anyOf:
- type: string
- type: 'null'
title: Ad Name
description: Ad name for ad-level rows.
impressions:
anyOf:
- type: integer
- type: 'null'
title: Impressions
description: Impressions.
clicks:
anyOf:
- type: integer
- type: 'null'
title: Clicks
description: Clicks.
spend:
anyOf:
- type: number
- type: 'null'
title: Spend
description: Spend in the ad account's currency units.
ctr:
anyOf:
- type: number
- type: 'null'
title: Ctr
description: Click-through rate.
cpc:
anyOf:
- type: number
- type: 'null'
title: Cpc
description: Cost per click.
cpm:
anyOf:
- type: number
- type: 'null'
title: Cpm
description: Cost per thousand impressions.
type: object
required:
- id
title: InsightRow
description: 'One insights row; the entity it describes follows `aggregation_level`.
Time bounds are present when a `time_granularity` is requested (one row per
time bucket); the entity id/name fields (`campaign_*`, `ad_group_*`, `ad_*`)
are present when rows are broken down by that entity.'
HTTPValidationError:
properties:
detail:
items:
$ref: '#/components/schemas/ValidationError'
type: array
title: Detail
type: object
title: HTTPValidationError
InsightsResponse:
properties:
data:
items:
$ref: '#/components/schemas/InsightRow'
type: array
title: Data
description: Insight rows.
count:
anyOf:
- type: integer
- type: 'null'
title: Count
description: Total row count, when reported upstream.
first_id:
anyOf:
- type: string
- type: 'null'
title: First Id
description: ID of the first item; pass as `before` to page back.
last_id:
anyOf:
- type: string
- type: 'null'
title: Last Id
description: ID of the last item; pass as `after` to page forward.
has_more:
type: boolean
title: Has More
description: Whether more items are available.
default: false
additionalProperties: false
type: object
required:
- data
title: InsightsResponse
description: Cursor-paginated insights, mirroring the OpenAI Ads insights envelope.
securitySchemes:
APIKeyHeader:
type: apiKey
in: header
name: X-API-Key
BearerAuth:
type: http
scheme: bearer