---
title: "Assign a user to a Page"
method: POST
path: "/v1/ads/page-users"
tags: ["Ad Accounts"]
---

# Assign a user to a Page

`POST /v1/ads/page-users`

Gives a person of the portfolio tasks on a Page the portfolio owns or was granted as a
partner. Meta does not assign partner admins automatically, so after an owner shares a
Page the partner calls this for the people whose tokens will advertise for it.
`ADVERTISE` is what ad creation needs. Assigning an already assigned user replaces
their task set.

## Request body

- object
  - `accountId` string, required — Zernio SocialAccount id used to resolve the Meta token.
  - `pageId` string, required — Facebook Page id.
  - `businessId` string, required — Business portfolio the user belongs to.
  - `userId` string, required — Business-scoped user id from GET /v1/ads/businesses/users.
  - `tasks` string[], required

## Response `201`

User assigned

- object
  - `pageId` string
  - `businessId` string
  - `user` object
    - `id` string
    - `tasks` string[]

## Other responses

- `400` — Invalid input, or Meta rejected the request
- `401` — Unauthorized
- `403` — Meta refused: the token lacks business_management or business admin access.
- `404` — Account not found, or Meta could not load the user or Page.
- `409` — The account exists but is inactive or needs reconnection. Reconnect it, then read GET /v1/accounts for its current account ID before retrying. Code: ads_connection_required.
- `429` — The connected account's upstream platform quota is exhausted. Reddit rate-limits per connected Reddit user (1000 requests per 10-minute window), and that budget is shared by every operation using that account. Retry after the window resets rather than retrying immediately; repeated calls while exhausted do not succeed and keep the budget spent. Google Ads: writes and reports run on one developer token shared by every Google Ads account on Zernio. The token holds Standard access (no daily operations cap), so this only happens when Google throttles the token or your ad account. The envelope has `code: rate_limited`, `platform: google`, `details.quotaScope: DEVELOPER` (`ACCOUNT` when it is your own ad account's quota), `details.resetsAt` (ISO instant when Google accepts requests again) and `Retry-After` counting down to it. Retrying earlier cannot succeed.
- `501` — Only supported on Meta (facebook/instagram)

## Changes

- **2026-09-29** `698a0d89ab62` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/zernio/apis/zernio-api/changes/v1/ads/page-users/post.md)

---

[API](https://skmtc.dev/zernio/apis/zernio-api.md) · [All operations](https://skmtc.dev/zernio/apis/zernio-api/llms.txt) · [OpenAPI document](https://skmtc.dev/zernio/apis/zernio-api/revisions/69bbe3da3a18?raw)
