> ## Documentation Index
> Fetch the complete documentation index at: https://docs.datalyr.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Troubleshoot agent ads

> Symptom, cause and fix for agent ads: reconnects, publishing switched off, approvals, spend limits, refused confirm tokens, unknown outcomes, Meta's edit limit and rejected ads.

Find the message your agent relayed, then apply the fix.

## Connection and access

| Symptom | Cause | Fix |
| - | - | - |
| `list_ad_accounts` shows `action: reconnect` | The platform was connected before agent ads, or the connection expired. | Select **Reconnect** for the platform in **Sources**. |
| `action: connect` | The platform isn't connected. | Connect it in **Sources** and select the ad account. |
| `That ad account isn't this workspace's selected account` | The agent used another account. Agents work in the one selected account per platform. | Select the account in **Sources**, or ask the agent to use `list_ad_accounts`. |
| `This connection can only read ads` | You are a member, or the connection holds no ads level. | Connect as an owner or admin, and keep an ads row on the consent page. |
| `403` with `insufficient_scope` | The connection or key lacks the ads level the tool needs. | Reconnect with the right level, or ask the owner for a key with it. |

## Publishing switched off

| Symptom | Cause | Fix |
| - | - | - |
| `Agents are switched off for Meta in Settings → Ad publishing` | The platform switch is off under **Platforms**. | An owner or admin turns it on. |
| `Agents were stopped for this account after 3 rejected ads in 24 hours` | The rejected-ads pause stopped the account. | Read the reasons in **Activity**, fix the cause, and select **Turn back on**. |
| `Publishing to TikTok is switched off by DATALYR right now` | DATALYR has paused that platform for everyone. | Wait, and work in Ads Manager meanwhile. |

## Approvals and limits

| Symptom | Cause | Fix |
| - | - | - |
| The yes returns `approval_required` | The level, the role, live ads or a limit doesn't allow it directly. | Open `approval_url` as the right person. See [Who approves](/agent-ads/access-and-approvals#who-approves). |
| An admin can't select **Approve** | Turning on, raising budgets, new content for running ads and deletes are the owner's. | Send the link to the owner. |
| `This request has expired` | The approval link is older than 24 hours. | Ask the agent to preview again. |
| `too_many_pending` | 50 requests are already waiting. | Approve or deny some under **Settings → Ad publishing**. |
| `Over a limit:` in the preview | The new spend passes a spend limit. | The owner approves it, or raises the limit. |
| `limit_reached` after the yes | Another turn-on used the room since the preview. | Preview again. The yes then goes to the owner. |
| `No exchange rate from … to …` | DATALYR can't convert the account's currency to check the limits. | The owner approves it. |

## Confirm tokens and outcomes

| Symptom | Cause | Fix |
| - | - | - |
| `The preview expired (30 minutes). Preview again.` | The token is older than 30 minutes. | Ask the agent to preview again. |
| `confirm_token_invalid` saying something changed | The request, a status, a budget, your access, the live switch or a limit changed. | Preview again and read the new summary. |
| `That confirm token was already used` | Tokens work once. | Preview again. |
| `operation_id … was already used for other changes` | The agent reused an id for a different request. | Ask it to use a new `operation_id`. |
| Status `unknown` | The platform didn't answer, so DATALYR can't tell whether it happened. Anything created is paused. | Check Ads Manager (Meta label `datalyr-agent`, TikTok and Google names ending ` · dl-`) and `get_ad_status` before any retry. |
| `in_progress` | The same request is still running. | Wait, then check with `get_ad_status`. |

## Platform messages

| Symptom | Cause | Fix |
| - | - | - |
| A Meta edit fails on a rate limit | Meta allows one edit per ad every 30 seconds. DATALYR already waited once. | Wait a minute, then preview again. |
| `Still uploading this video to TikTok` | Large videos upload to TikTok in parts. | Preview again in a minute. The upload continues where it stopped. |
| `Ads shown in the EU must name who benefits and who pays` | The Meta ad account has no beneficiary and payer. | Set them in Meta Ads Manager's ad account settings, then preview again. |
| `can_add_ads: false` on an ad set | The ad set's type isn't available to agents. `blocked_reason` says which. | Pick another ad set, or ask the agent to create one. |
| An ad comes back `rejected` | The platform's review refused it. The reason is in `get_ad_status` and **Activity**. | Fix the content with `update_ad_content` on Meta, or create a new ad. Three rejections in 24 hours stop agents on that account. |

## Next

* [How agents publish](/agent-ads/how-publishing-works): statuses and results.
* [Stop agent ads and alerts](/agent-ads/stop-and-alerts): the rejected-ads pause and emails.
* [Access levels and approvals](/agent-ads/access-and-approvals): who approves what.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.