# Manage a Page



This document shows you how to perform the following tasks for a Facebook Page:

* Get a list of pages that you can perform a task on including:
    * Specific tasks you can perform on each Page
    * Page access tokens for each Page that you can use to test API calls
* Get and update details about a Page
* Get and update settings for a Page
* Get notifications about suggested changes Meta will be implementing on a Page
    * Accept or reject these suggested changes
* Get reviews for a Page
* Block a person from a Page

## Before you start

This guide assumes you have read the [Pages API Overview](https://developers.facebook.com/documentation/pages-api/overview).

For a person who can perform tasks on the page, you will need to implement Facebook Login for Business to ask for the following permissions and receive a User or Page access token:

* `pages_manage_engagement`
* `pages_manage_metadata`
* `pages_manage_posts`  
* `pages_read_engagement`
* `pages_read_user_engagement`
* `pages_show_list`
* `publish_video` permission, if you are publishing a video to the Page

If using a business system user in your API requests, the `business_management` permission is required.

Your app user must be able to perform the `CREATE_CONTENT`, `MANAGE`, and/or `MODERATE` tasks on the Page in the API requests.

### Best practices

When testing an API call, you can include the `access_token` parameter set to your access token. However, when making secure calls from your app, use the [access token class.](https://developers.facebook.com/documentation/facebook-login/guides/access-tokens#portabletokens)

*Example requests are formatted for readability. Replace **bold, italics values**, such as **page_id**, with your values.*

## Pages, tasks, and tokens

A single API call can give you a lot of information for Pages on which you can perform a task.

### Get your Pages

To get a list of all Pages on which you can perform tasks, the tasks you can perform on each page, and a short-lived Page access token for each Page, send a `GET` request to `/user_id/accounts` endpoint using a User access token.

#### Example request

```curl
curl -i -X GET
     "https://graph.facebook.com/user_id/accounts"
```

On success, your app will receive a JSON response with an array of Page objects. Each Page object contains:

* The name for the Page
* The ID for the Page
* The Page category, category name and ID
* A short-lived Page access token
* All tasks the user can perform on the Page

#### Example response

```json
{
  "data": [
    {
      "access_token": "{facebook-for-developers-page-access-token}",
      "category": "Internet Company",
      "category_list": [
        {
          "id": "2256",
          "name": "Internet Company"
        }
      ],
      "name": "Facebook for Developers",
      "id": "{facebook-for-developers-page-id}",
      "tasks": [
        "ANALYZE",
        "ADVERTISE",
        "MODERATE",
        "CREATE_CONTENT"
      ]
    },
    {
      "access_token": "{my-outlandish-stories-page-access-token}",
      "category": "Blogger",
      "category_list": [
        {
          "id": "361282040719868",
          "name": "Blogger"
        }
      ],
      "name": "My Outlandish Stories",
      "id": "{my-outlandish-stories-page-id}",
      "tasks": [
        "ANALYZE",
        "ADVERTISE",
        "MODERATE",
        "CREATE_CONTENT",
        "MANAGE"
      ]
    },
...
  ]
}
```

### Get tasks for others

If you can perform the `MANAGE` task on the Page, you can get a list of other people who can perform tasks on that Page including the tasks each person can perform.

To get a list of people and the tasks they can perform on the Page, send a `GET` request to the `/page_id/roles` endpoint.

#### Example request

```curl
curl -i -X GET "https://graph.facebook.com/page_id/roles"
```

On success, your app receives a JSON response with the person's name, their Page-scoped ID, and tasks each person can perform on a Page.

#### Example response

```json
{
  "data": [
    {
      "name": "Person One",
      "id": "page_scoped_id_for_one"
        "tasks": [
          "ANALYZE"
        ]
    },
    {
      "name": "Person Two",
      "id": "page_scoped_id_for_two",
      "tasks": [
        "ANALYZE",
        "ADVERTISE",
        "MODERATE",
        "CREATE_CONTENT",
        "MANAGE"
      ]
    },
...
  ],
}
```

## Page details

If you can perform the `MANAGE` task on the Page, you can use a Page access token or if your app has been approved for the Page Public Content Access feature, you can use a User access token, to view details for a Page such as about, email, hours of operation, etc.

### Get details

To get details about a Page, send a `GET` request to the `/page_id` endpoint with the `fields` parameter set to the Page details you would like to view.

**Note:** You can use the `/pages/search` endpoint to find Page IDs when using the Page Public Content Access feature.

#### Example request

```curl
curl -i -X GET "https://graph.facebook.com/page_id\
    ?fields=about,attire,bio,location,parking,hours,emails,website"
```

On success, your app receives a JSON response with value for the fields you requested.  If a field is not returned in the response, the Page does not have this value set. For example, if the Page has not set the `attire` field, this field will not be returned in the response.

### Update details

If you can perform the `MANAGE` task on the Page, you can use a Page access token to send a `POST` request to the `/page_id` endpoint with the parameters that you want to update, such as the `about` parameter.

#### Example request

```curl
curl -i -X POST "https://graph.facebook.com/v25.0/page_id" \
     -H "Content-Type: application/json" \
     -d '{
           "about":"This is an awesome cafe located downtown!",
         }'
```

On success, your app will receive a JSON response with `success` set to `true`.

### Meta proposed changes

On occassion, Meta will propose changes to the details for your Page, such as fixing a typo, or updating the categories on your Page to help people better find your Page. In order to get these notifications, you must be subscribed to the `page_upcoming_change` and/or the `page_change_proposal` webhook.

Once you receive the notification, you can do one of the following:

* Do nothing and the changes will take affect at the time designated in the notification
* Actively accept the changes and the changes will take affect immediately
* Actively reject the changes and no changes will be made

#### Accept or reject a proposed change

To actively accept or reject a proposed change, send a `POST` request to the `/page_change_proposal_id` endpoint with the `accept` field set to `true` to accept the change or `false` to reject it.  The `page_change_proposal_id` is the `proposal.id` value you received in the `page_upcoming_change` webhook notification or `value.id` value you received in the `page_change_proposal` webhook notification.

```
curl -i -X POST "https://graph.facebook.com/v25.0/page_change_proposal_id" \
     -H "Content-Type: application/json" \
     -d '{
           "accept":"true",
         }'
```

On success, your app receives a JSON response with `success` set to `true`.

## Page settings {#update_settings}

If you can perform the `MANAGE` task on the Page, you can use a Page access token to send a `GET` request to the `/page_id/settings` endpoint to get a list of all the settings for that Page.

#### Example request

```curl
curl -i -X GET "https://graph.facebook.com/v25.0/page_id/settings"
```

On success, your app will receive a JSON response with an array of objects where each object is the `setting` set to a Page setting and the value, either `true` or `false`.

#### Example response

```json
{
  "data": [
    {
      "setting": "USERS_CAN_POST",
      "value": false
    },
    {
      "setting": "USERS_CAN_MESSAGE",
      "value": true
    },
    {
      "setting": "USERS_CAN_POST_PHOTOS",
      "value": true
    },
    ...
  ]
}
```

### Update a setting

To update the settings for a Page, send a `POST` request to the `/page_id/settings` endpoint with the `option` parameter set to the setting you want to update.

#### Example request

```
curl -i -X POST "https://graph.facebook.com/v25.0/page_id/settings" \
     -H "Content-Type: application/json" \
     -d '{
           "option":{"USERS_CAN_MESSAGE": "true"},
         }'
```

On success, your app receives a JSON response with `success` set to `true`.

## Get reviews

You can get reviews for a Page, including the name of the reviewer, their Page-scoped ID, whether it was a positive or negative recommendation, and the review text, send a `GET` request to the `/page_id/ratings` endpoint.

#### Example request

```curl
curl -i -X GET "https://graph.facebook.com/page_id/ratings"
```

On success, your app receives a JSON array with review objects. Each object contains:

* `created_time` set to the time the review was created,
* `recommendation_type` set to `positive` or `negative`
* `review_text` set to the content for the review
* a `reviewer` object with the `name` and `id` for the person who wrote that review

```
{
  "data": [
    {
      "created_time": "unixtimestamp",
      "recommendation_type": "positive",
      "review_text": "I love this page!",
      "reviewer": {
        "name": "Person One",
        "id": "psid_for_one"
      }
    },
    {
      "created_time": "unixtimestamp",
      "recommendation_type": "positive",
      "review_text": "This page is wonderful!",
      "reviewer": {
        "name": "Person Two",
        "id": "psid_for_two"
      }
    },
...
  ]
}
```

## Block a person

To block a person from commenting on a Page, send a `POST` request to the `/page_id/blocked` endpoint with the `user` parameter set to Page-scoped ID for the person you want to block.

#### Example request

```curl
curl -i -X POST "https://graph.facebook.com/v25.0/page_id/blocked"
     -H "Content-Type: application/json" \
     -d '{
           "user":"psid_to_block",
         }'
```

On success, your app receives a JSON response with the Page-scoped ID set to `true`.

```
{
 "psid_to_block": true
}
```

## Next steps

Learn how to [publish links, photos, and videos to your Page](https://developers.facebook.com/documentation/pages-api/posts).

## See also

- [Meta Webhooks for Pages](https://developers.facebook.com/docs/graph-api/webhooks/getting-started/webhooks-for-pages)

- [Meta Business Help Center – Business System User](https://www.facebook.com/business/help/327596604689624)

#### References

- [Page Reference](https://developers.facebook.com/docs/graph-api/reference/page)

- [Page Blocked Reference](https://developers.facebook.com/docs/graph-api/reference/page/blocked)

- [Page Feed Reference](https://developers.facebook.com/docs/graph-api/reference/page/feed)

- [Page Post Reference](https://developers.facebook.com/docs/graph-api/reference/page-post)

- [Page Settings](https://developers.facebook.com/docs/graph-api/reference/page/settings)

- [Page Upcoming Change Reference](https://developers.facebook.com/docs/graph-api/reference/page-upcoming-change)

- [Permissions Reference](https://developers.facebook.com/docs/permissions)

- [User Accounts Reference](https://developers.facebook.com/docs/graph-api/reference/user/accounts)