---
title: "Ask the Google Ads assistant"
method: POST
path: "/api/apps/{app_id}/google-ads/troubleshoot/ask"
---

# Ask the Google Ads assistant

`POST /api/apps/{app_id}/google-ads/troubleshoot/ask`

<Info>This API is in beta. Endpoints, fields, and behavior may still change, so avoid depending on it in production.</Info>

Answers a plain-language question about the app's Google Ads campaigns.

The answer is prose written for a person, three to five sentences with no markdown, so read it or show it to someone rather than parsing it. The assistant is a language model with no access to the account's numbers, so it gives general advice shaped by your question rather than findings from your data. Read the reporting endpoints such as [Get Google Ads performance dashboard](/api-reference/get-google-ads-performance-dashboard) for the actual figures.

Pass earlier turns in `history` to ask a follow-up. Only the last ten turns reach the model, and anything before that is dropped with nothing in the response saying so, so keep a long conversation summarized on your side.

<Warning>An empty `reply` means the model returned nothing, and it comes back under a 200 exactly like a real answer. There is no field that distinguishes the two, so check for an empty string and retry rather than treating it as the assistant having nothing to say.</Warning>

This endpoint is limited to 20 requests a minute per app, shared with the other Google Ads endpoints that run a language model.

<Note>This endpoint accepts a personal API key. Workspace API keys are not authorized for it and are rejected with a 403.</Note>

## Path parameters

- `app_id` string, required — ID of the app whose Google Ads campaigns to manage.

## Request body

- object
  - `question` string, required — What you want to ask about the app's Google Ads campaigns, in plain language.
  - `campaign_id` string — A campaign ID to mention in the question. It is passed to the model as text for context only, so the assistant does not read the campaign's data from it.
  - `history` object[] — Earlier turns of the conversation, oldest first. Only the last ten are used.
    - `role` string, required — Who said it. Use `user` for your own turns and `assistant` for the replies. Any value other than `user` is treated as the assistant.
    - `content` string, required — What was said in that turn.

## Response `200`

The assistant's answer.

- TroubleshootReply — The assistant's answer.
  - `reply` string, required — The answer, as three to five sentences of plain prose with no markdown and no code blocks. It is written for a person to read, so do not parse it. An empty string means the model returned nothing, which you cannot tell apart from a genuinely empty answer, so treat it as a failed call and retry.

## Other responses

- `401` — Missing or invalid credentials.
- `403` — You don't have access to this app, the app does not exist, or you used a workspace API key. A missing app and an app you cannot reach are deliberately the same answer.
- `422` — Validation Error
- `429` — The app has used up its 20 language-model requests a minute. Retry later.

---

[API](https://skmtc.dev/base44/apis/base44-app-management-api.md) · [All operations](https://skmtc.dev/base44/apis/base44-app-management-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/base44/base44-app-management-api/revisions/173e4e9c63c2/schema)
