---
title: "Connect an OpenAI Ads account"
method: POST
path: "/v1/connect/openai-ads/credentials"
tags: ["Connect"]
---

# Connect an OpenAI Ads account

`POST /v1/connect/openai-ads/credentials`

Connect an OpenAI Ads account using an API key from ChatGPT Ads Manager.

The key grants full campaign write access on OpenAI's side (OpenAI does
not offer a read-only key scope). Zernio uses it to read ads and
performance, and to create and manage campaigns you set up through
Zernio (create, status, budget, and cancel). Campaigns created
directly in ChatGPT Ads Manager can still be managed there.

## Request body

- object
  - `apiKey` string, required — API key from ChatGPT Ads Manager (Settings). Grants full read/write access on OpenAI's side; Zernio only ever reads with it.
  - `profileId` string, required — Your Zernio profile ID
  - `state` string — Optional state passthrough for the connect flow.
  - `redirectUri` string, uri — Optional URL to redirect to after successful connection

## Response `200`

OpenAI Ads connected successfully

- object
  - `accountId` string
  - `adAccountName` string
  - `redirectUrl` string

## Other responses

- `400` — Invalid request
- `401` — Unauthorized, or the API key could not read an OpenAI ad account (code invalid_credentials).
- `403` — Ads add-on required.

---

[API](https://skmtc.net/zernio/apis/zernio-api.md) · [All operations](https://skmtc.net/zernio/apis/zernio-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/zernio/zernio-api/versions/51932b099b2f/schema)
