> ## 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.

# The review page

> Where everything an agent proposes waits for a person: one page per agent connection, one Upload button for owners and admins, live updates, owner-only items, cancel, and expiry.

Agents don't create or change ads from chat. Everything an agent proposes goes to one
review page. A workspace owner or admin opens the page, checks it, and selects
**Upload**. DATALYR then creates or changes it all, one item at a time.

```text theme={null}
https://www.datalyr.com/review/<id>
```

The agent sends you this link as `review_url`. You can also find every open review
under **Settings → Ad publishing → Open reviews**.

## Who sees the page

| Who | Can |
| - | - |
| Not signed in | Is sent to the DATALYR sign-in, then back to the page |
| Not a member of the workspace | Nothing. The page shows not found. |
| A member or viewer of the workspace | Look at everything. The button reads **Owner or admin uploads**. |
| An admin | Upload everything except owner-only items |
| The owner | Upload everything |

The page uses the same sign-in as the app. It opens outside the app's sidebar.

## One page per agent connection

| Connection | Its review page |
| - | - |
| A person over MCP | One page per person per AI app. Claude and ChatGPT get separate pages. |
| An API key | One page per key |

The agent adds to its open page until the page closes. It can start a separate page, for
example for another launch or client. See [Review options](/agent-ads/tools#review-options).

| Limit | Value |
| - | - |
| Items on one page | 200 |
| Open pages per connection | 3 |
| Open pages per workspace | 20 |

## What the page shows

Items are grouped campaign, then ad set, then ads. Tabs at the top split them into
**Overview**, **Ads**, **Ad sets**, **Campaigns** and **Changes**.

| Item | Shows |
| - | - |
| Campaign | Objective, budget, bid strategy |
| Ad set or ad group | Goal and pixel event, attribution, placements, targeting, budget, schedule |
| Ad | Name, format, identity, text, link with tracking, call to action, enhancements, and on Meta every placement |
| Change | What changes, on which object, and the effect, for example the new daily spend |

For Meta ads, the page draws every placement. Open **All placements** on an ad to see
them. Next to the review's name, the header shows how long the page stays open. Next to
**Upload** it shows the ad account and about how long the upload takes.

## Upload

<Steps>
  <Step title="Check every item">
    Open each tab and read the settings and the placements.
  </Step>

  <Step title="Select Upload">
    The button reads **Upload N items**. Admins see `+N for the owner` when owner-only items wait.
  </Step>

  <Step title="Read the confirmation">
    It names the ad account and counts what goes up: campaigns, ad sets, ads and each kind of change. It says that new campaigns, ad sets and ads are created paused, warns when a turn-on starts spending or a delete can't be undone, and gives about how long the upload takes.
  </Step>

  <Step title="Confirm">
    Select **Upload N items** in the confirmation. **Cancel** closes it without uploading.
  </Step>
</Steps>

Upload sends exactly the version on your screen. If the agent changed the page after you
opened it, nothing uploads and you see:
`The agent changed this review since you opened it. Look again, then upload.`

When the upload creates campaigns, ad sets or ads on a platform that is off for agents
under **Platforms**, it turns that platform on. Changes and new content never turn a
platform on.

## What happens during the upload

| Rule | Detail |
| - | - |
| Order | Campaigns first, then their ad sets, then their ads |
| One at a time | One item at a time per ad account |
| Pace | Set by Meta's rate limits for the ad account. On Meta's limited (development) access level: about 5 minutes after each ad item or new content, 15 seconds after a campaign, ad set or change. DATALYR reads the usage Meta reports on every call and waits longer when the account is busy. |
| Paused | Every new campaign, ad set and ad is created paused |
| Checked again | Before each item, DATALYR checks that agent ads are on, the ad account can take changes, and the person who uploaded still has the role. Turn-ons and raises also need live ads on and must fit the spend limits. |
| New parents | An ad set proposed under a new campaign is checked against the campaign that was actually created. If it came out different, the ad set ends `stale`. |
| Platform throttling | DATALYR waits as long as Meta says access takes to come back, at least 2, then 4, then 8 minutes, and tries again. Nothing else on that ad account starts meanwhile. After 4 tries the item fails. |

The button shows progress, for example **Uploading 3 of 8**. Each item then shows
**Uploaded, paused** with an **Ads Manager** link, or the reason it didn't upload.

| Item result | Meaning | What to do |
| - | - | - |
| Uploaded | Created or changed | Nothing |
| Failed | The platform refused it | Read the reason, then ask the agent to fix it |
| `Changed since review: ask the agent to propose it again.` | Something it depends on changed after you reviewed it | Ask the agent to propose it again |
| `Not uploaded.` | Stop agent ads, a switched-off platform, live ads off, a spend limit, a role, or a parent that didn't upload | Read the reason. Fix it, then ask the agent to propose it again. |
| `The platform didn't answer: check Ads Manager before uploading it again.` | DATALYR can't tell whether it happened. Anything created is paused. | Check Ads Manager first |
| `Stopped.` | Stop agent ads was pressed | Nothing |

## Cancel an upload

While an upload runs, owners and admins see **Cancel upload**.

| Item | After Cancel upload |
| - | - |
| Not started | Goes back to waiting on the page. You can upload it again later. |
| Uploading now | Finishes |
| Already uploaded | Stays, paused |

## Owner-only items

Admins can upload everything else. These items wait for the workspace owner:

| Item | Why |
| - | - |
| Turning campaigns, ad sets or ads on | It starts spend |
| Raising a budget on something that spends | It adds spend |
| Deleting | It can't be undone |
| Changes to objects a person made | Only Publish live allows them |
| New content for a running ad | It goes live once the platform approves it |

When an admin uploads, owner-only items stay on the page for the owner. The owner opens
the same page and selects **Upload**.

Turn-ons and raises upload only while live ads are on for the ad account and inside the
spend limits. Otherwise the item ends `Not uploaded.` with the reason. It doesn't become an
approval link. See [Turn ads on within spend limits](/agent-ads/live-ads-and-spend-limits).

## Change something

You don't edit on the page. Tell the agent in chat.

| You say | The agent | The page |
| - | - | - |
| "Make the headline on 2B shorter." | Proposes the item again, replacing the old one | Marks it **Updated** |
| "Drop the third angle." | Calls `remove_review_item` | Removes it and everything proposed under it |
| "Change the campaign budget." | Proposes the campaign again | Removes the ad sets and ads proposed under the old campaign. The agent proposes them again. |

The page refreshes on its own when the agent adds or changes items, and as the upload
moves on. It checks every 3 seconds during an upload and every 10 seconds otherwise.

## How long the page stays open

| What | Expires |
| - | - |
| The page | 24 hours after its last change |
| Each item | 24 hours after it was proposed, so you never upload day-old checks |
| A TikTok ad group | Earlier: 10 hours after its start time. TikTok refuses a start time that is too far in the past. |

An expired item leaves the page with everything proposed under it. Items already queued
or uploading never expire. To bring an expired item back, ask the agent to propose it again.

## Stop agent ads

[Stop agent ads](/agent-ads/stop-and-alerts) applies at once, without the review page.
It also cancels every item still waiting or queued on every review page in its scope.

## Verify

1. Ask the agent for a paused ad.
2. Open the `review_url` it sends.
3. Confirm the ad, its settings and its placements are on the page.
4. Select **Upload**.
5. Select **Upload 1 item** in the confirmation.
6. Confirm the item shows **Uploaded, paused** with an **Ads Manager** link.
7. Open **Settings → Ad publishing → Activity**.
8. Confirm the `Created 1 paused ad` entry.

## Next

* [How agents publish](/agent-ads/how-publishing-works): what the agent gets back for each proposal.
* [Access levels and who uploads](/agent-ads/access-and-approvals): which connection can propose what.
* [Agent ad tools](/agent-ads/tools): `get_review_session`, `remove_review_item` and the `review` input.


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