Skip to content
Fresh 2026

Page Feed

Use this endpoint to get and publish to a Page. The Page Feed encompasses any interactions with a Facebook Page including: posts and links published by this Page, visitors to this Page, and public posts in which the Page has been tagged.

See Also

  • The /{page-post-id} endpoint allows you to update a specific Page post.
  • The /{page-id}/tagged endpoint to only retrieve public posts in which the Page has been tagged.

Reading

The posts of a Facebook Page.

New Page Experience

This API is supported for New Page Experience.

Requirements

The person requesting the access token must be able to perform one of the following tasks on the Page:

  • CREATE_CONTENT-Publish content as the Page on the Page

  • MANAGE-Assign and manage Page tasks

  • MODERATE

    • Respond to comments on Page posts as the Page
    • Delete comments on Page posts
    • If an Instagram account is connected to the Page, publish content to Instagram from Facebook, respond to and delete comments, send Direct messages, sync business contact info, and create ads.

And have granted the app the following permissions are required:

  • The pages_read_engagement permission

  • The pages_read_user_content permission

If you do not own or manage the Page, you will need:

  • The Page Public Content Access Feature

When using the Page Public Content Access feature, use a system user access token to avoid rate limiting issues.

Sample Request

HTTPPHP SDKJavaScript SDKAndroid SDKiOS SDK Graph API Explorer

GET /v25.0/{page-id}/feed HTTP/1.1
Host: graph.facebook.com
/* PHP SDK v5.0.0 */
/* make the API call */
try {
  // Returns a `Facebook\FacebookResponse` object
  $response = $fb->get(
    '/{page-id}/feed',
    '{access-token}'
  );
} catch(Facebook\Exceptions\FacebookResponseException $e) {
  echo 'Graph returned an error: ' . $e->getMessage();
  exit;
} catch(Facebook\Exceptions\FacebookSDKException $e) {
  echo 'Facebook SDK returned an error: ' . $e->getMessage();
  exit;
}
$graphNode = $response->getGraphNode();
/* handle the result */
/* make the API call */
FB.api(
    "/{page-id}/feed",
    function (response) {
      if (response && !response.error) {
        /* handle the result */
      }
    }
);
/* make the API call */
new GraphRequest(
    AccessToken.getCurrentAccessToken(),
    "/{page-id}/feed",
    null,
    HttpMethod.GET,
    new GraphRequest.Callback() {
        public void onCompleted(GraphResponse response) {
            /* handle the result */
        }
    }
).executeAsync();
/* make the API call */
FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc]\
                               initWithGraphPath:@"/{page-id}/feed"\
                                      parameters:params\
                                      HTTPMethod:@"GET"];
[request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection,\
                                      id result,\
                                      NSError *error) {\
    // Handle the result\
}];

Sample JSON Response

json
{
  "data": [\
    {\
      "created_time": "2019-05-17T16:24:04+0000",\
      "message": "Become a Facebook developer!",\
      "id": "{page-id}_2191966997525824"\
    },\
    {\
      "created_time": "2019-02-26T21:35:42+0000",\
      "message": "Hello world!",\
      "id": "{page-id}_2072371269485398"\
    },\
...\
    {\
      "created_time": "2018-01-26T20:57:22+0000",\
      "message": "Friday Funday!",\
      "id": "{page-id}_1569752556413941"\
    }\
  ],
  "paging": {
    "cursors": {
      "before": "Q2c4U1pXNT...",
      "after": "Q2c4U1pXNT..."
    },
    "next": "https://graph.facebook.com/vX.X/{page-id}/feed?access_token={your-page-access-token}&pretty=0&limit=25&after=Q2c4U1pXNT..."
  }
}

Limitations

  • Expired Posts-If a Post has expired, you will no longer be able to view the content using the Graph API.

  • Maximum Posts

    • The API will return approximately 600 ranked, published posts per year.

    • You can only read a maximum of 100 feed posts with the limit field. If you try to read more than that you will get an error message to not exceed 100.

  • Message CTA - Posts with message CTAs cannot be accessed using another Page's access token since Pages cannot message other Pages.

  • Publicly Identifiable Information - User information will not be in included in responses unless you make the request with a Page access token.

  • Published Posts-Published and unpublished posts will be returned when querying the <code v-pre>/{page-id}/feed</code> endpoint. Use the 'is_published` field to return only published posts.

  • Shared Posts - A Page post which shares a post from another Page or person may not be visible if the original post isn't visible with the access token used.

  • Tagged Posts - When you use /{page-id}/tagged to show the posts that tagged this Page, the results include posts from other Pages only if those Pages are authentic.

  • User Agents - The available user agents allowed for these Graph API calls are subject to change without notice. If you are experiencing issues, you may want to change to a newer version of your particular user agent.

  • Video Posts - To get a list of video posts, the person making the request must be an admin of the Page.

  • Reels To get a list of Reels published to your Page, use the Page VideoReels edge.

Limitation: All posts (published and unpublished) will be pulled in the feed endpoint. The only difference is unpublished posts will not be listed in the physical feed. However, there is an is_published field that can be added to the /feed endpoint to let developers know whether the post listed in the /feed endpoint is published or not

Fields

NameTypeDescription
idstringThe ID of the post.
actionsobjectAction links on the post, Comment, Like, Share.
admin_creatorobjectThe admin creator of a Page post. If the Page has only one admin, no data is returned. Requires a Page Access Token and the business_management permission.
idintID of the person, app or business.
namestringName of the person, app or business.
allowed_advertising_objectsstringThe only objectives under which this post can be advertised.
applicationobjectInformation about the app that published this post.
attachmentsobjectAny attachments that are associated with the story. See the story attachment node reference for attachments fields.
backdated_timefloatThe backdated time for backdate post. For a regular post, this field is set to null.
call_to_actionobjectThe call to action type used in any Page posts for mobile app engagement ads.
contextobjectThe call to action type used in any Page posts for mobile app engagement ads.
can_reply_privatelybooleanWhether the Page viewer can send a private reply to this Post. Requires the read_page_mailboxes permission.
child_attachmentsobjectSub-shares of a multi-link share post.
created_timefloatThe time the post was initially published. For a post about a life event, this is the date and time of the life event.
feed_targetingobjectObject that controls Feed Targeting for this post. Anyone in these groups are more likely to see this post, others are less likely, but may still see it anyway. Any of the targeting fields shown here can be used, none are required (applies to Pages only).
age_maxintMaximum age
age_minintMust be 13 or higher. Default is 0
citiesintValues of targeting cities. Use type of adcity to find Targeting Options and use the returned key to specify.
college_yearsintArray of integers for graduation year from college.
countriesstringValues of targeting countries. You can specify up to 25 countries. Use ISO 3166 format codes.
education_statusesintArray of integers for targeting based on education level. Use 1 for high school, 2 for undergraduate, and 3 for alum (or localized equivalents).
gendersintTarget specific genders. 1 targets all male viewers and 2 females. Default is to target both.
interested_in <br>Deprecated.intIndicates targeting based on the 'interested in' field of the User profile. You can specify an integer of 1 to indicate male, 2 indicates female. Default is all types. Please note 'interested in' targeting is not available in most European countries and Canada due to local laws.
interestsintOne or more IDs of pages to target fans of pages. Use type of page to get possible IDs as Targeting Options and use the returned id to specify.
localesintTargeted locales. Use type of adlocale to find Targeting Options and use the returned key to specify.
regionsarrayValues of targeting regions. Use type of adregion to find Targeting Options and use the returned key to specify.
relationship_statusesintArray of integers for targeting based on relationship status. Use 1 for single, 2 for 'in a relationship', 3 for married, and 4 for engaged. Default is all types.
fromobjectThe name and id of the Page, group, or event that created the post. If you read this field with a User access token, it returns only the current User.
full_picturestringURL to a full-sized version of the Photo published in the Post or scraped from a link in the Post. If the photo's largest dimension exceeds 720 pixels, it is resized, with the largest dimension set to 720.
iconstringA link to an icon representing the type of this post.
instagram_eligibilityenum{}Whether the post can be promoted on Instagram. It returns the enum eligible if it can be promoted. Otherwise it returns an enum for why it cannot be promoted:
- ineligible_caption_mentions_not_allowed<br>- ineligible_caption_too_long<br>- ineligible_media_aspect_ratio<br>- ineligible_media_dimension<br>- ineligible_media_square_aspect_ratio<br>- ineligible_media_square_dimension<br>- ineligible_post_type<br>- ineligible_unknown_error<br>- ineligible_video_length
is_eligible_for_promotion
is_expired
is_hidden
is_instagram_eligible
is_popular
is_published
is_spherical
message
message_tags
length
id
name
offset
type
parent_id
permalink_url
place
privacy
allow
deny
description
friends
- ALL_FRIENDS<br>- FRIENDS_OF_FRIENDS<br>- SOME_FRIENDS
value
- ALL_FRIENDS<br>- CUSTOM<br>- EVERYONE<br>- FRIENDS_OF_FRIENDS<br>- SELF
promotable_id
properties
name
text
href
sheduled_publish_time
shares
status_type
- added_photos<br>- added_video<br>- app_created_story<br>- approved_friend<br>- created_event<br>- created_group<br>- created_note<br>- mobile_status_update<br>- published_story<br>- shared_story<br>- tagged_in_photo<br>- wall_post
story
story_tags
subscribed
targeting
countries
locales
regions
cities
to
updated_time
video_buying_eligibility

Promotable IDs

When finding posts that can be boosted, the promotable_id must be used to create ads. In most cases, this id will be identical to the post_id. However, this is not always the case. Note: once a post is boosted, you must have access to the connected ad account in order to edit the post.

Example Request

cURLAndroid SDKObjective-CJava SDKPHP SDK

sh
curl -i -X GET \
 "https://graph.facebook.com/{your-page-id}/feed
    ?fields=is_eligible_for_promotion,promotable_id
        &access_token={your-page-access-token}"
java
GraphRequest request = GraphRequest.newGraphPathRequest(
  accessToken,
  "/{your-page-id}/feed",
  new GraphRequest.Callback() {
    @Override
    public void onCompleted(GraphResponse response) {
      // Insert your code here
    }
});

Bundle parameters = new Bundle();
parameters.putString("fields", "is_eligible_for_promotion,promotable_id");
request.setParameters(parameters);
request.executeAsync();
m
FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc]\
    initWithGraphPath:@"/{your-page-id}/feed"\
           parameters:@{ @"fields": @"is_eligible_for_promotion,promotable_id",}\
           HTTPMethod:@"GET"];
[request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) {\
    // Insert your code here\
}];
java
FB.api(
  '/{your-page-id}/feed',
  'GET',
  {"fields":"is_eligible_for_promotion,promotable_id"},
  function(response) {
      // Insert your code here
  }
);
cpp
try {
  // Returns a `FacebookFacebookResponse` object
  $response = $fb->get(
    '/{your-page-id}/feed?fields=is_eligible_for_promotion,promotable_id',
    '{access-token}'
  );
} catch(FacebookExceptionsFacebookResponseException $e) {
  echo 'Graph returned an error: ' . $e->getMessage();
  exit;
} catch(FacebookExceptionsFacebookSDKException $e) {
  echo 'Facebook SDK returned an error: ' . $e->getMessage();
  exit;
}
$graphNode = $response->getGraphNode();

Example Response

json
{
  "data": \
    {\
      "is_eligible_for_promotion": true,\
      "promotable_id": "1353269864728879_1943344825721377",\
      "id": "1353269864728879_1943344825721377"\
    },\
    {\
      "is_eligible_for_promotion": true,\
      "promotable_id": "1353269864728879_1943313139057879",\
      "id": "1353269864728879_1943378089051384"\
    },\
    {\
      "is_eligible_for_promotion": false,\
      "promotable_id": "1353269864728879_1942095249179668",\
      "id": "1353269864728879_1942095249179668"\
    },\
...\
```\
\
Please visit our [help center to learn why a post may not be boosted.\
\
Please visit our Post Reference doc for all available post fields.\
\
## Publishing\
\
You can publish to Pages by using this edge. Either <code v-pre>link</code> or <code v-pre>message</code> must be supplied.\
\
### New Page Experience\
\
This API is supported for New Page Experience.\
\
### Requirements\
\
If you can perform the <code v-pre>CREATE_CONTENT</code> task, you will need:\
\
- A Page access token\
\
- The <code v-pre>pages_manage_posts</code> permission\
\
- The <code v-pre>pages_read_engagement</code> permission\
\
- The <code v-pre>pages_show_list</code> permission\
\
\
Posts will appear in the voice of the Page.\
\
### Permissions\
\
- A Page access token requested by someone who can perform the\
\
<code v-pre>CREATE_CONTENT</code> task\
\
on the Page being queried\
\
- The <code v-pre>pages_manage_posts</code> permission\
\
\
**Note:** If the viewer or app cannot see the url of <code v-pre>link</code>, the post will fail.\
\
HTTPPHP SDKJavaScript SDKAndroid SDKiOS SDK\
\
```\
POST /v25.0/{page-id}/feed HTTP/1.1\
Host: graph.facebook.com\
\
message=This+is+a+test+message\
```\
\
```\
/* PHP SDK v5.0.0 */\
/* make the API call */\
try {\
  // Returns a `Facebook\FacebookResponse` object\
  $response = $fb->post(\
    '/{page-id}/feed',\
    array (\
      'message' => 'This is a test message',\
    ),\
    '{access-token}'\
  );\
} catch(Facebook\Exceptions\FacebookResponseException $e) {\
  echo 'Graph returned an error: ' . $e->getMessage();\
  exit;\
} catch(Facebook\Exceptions\FacebookSDKException $e) {\
  echo 'Facebook SDK returned an error: ' . $e->getMessage();\
  exit;\
}\
$graphNode = $response->getGraphNode();\
/* handle the result */\
```\
\
```\
/* make the API call */\
FB.api(\
    "/{page-id}/feed",\
    "POST",\
    {\
        "message": "This is a test message"\
    },\
    function (response) {\
      if (response && !response.error) {\
        /* handle the result */\
      }\
    }\
);\
```\
\
```\
Bundle params = new Bundle();\
params.putString("message", "This is a test message");\
/* make the API call */\
new GraphRequest(\
    AccessToken.getCurrentAccessToken(),\
    "/{page-id}/feed",\
    params,\
    HttpMethod.POST,\
    new GraphRequest.Callback() {\
        public void onCompleted(GraphResponse response) {\
            /* handle the result */\
        }\
    }\
).executeAsync();\
```\
\
```\
NSDictionary *params = @{\
  @"message": @"This is a test message",\
};\
/* make the API call */\
FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc]\
                               initWithGraphPath:@"/{page-id}/feed"\
                                      parameters:params\
                                      HTTPMethod:@"POST"];\
[request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection,\
                                      id result,\
                                      NSError *error) {\
    // Handle the result\
}];\
```\
\
### Response\
\
```code\
{"id":"post-id"}\
```\
\
This endpoint supports read-after-write and can immediately return any fields returned by read operations.\
\
#### Graph Explorer Tool Example\
\
Test in the Graph Explorer Tool using <code v-pre>POST {page-id}/feed</code>:\
\
\
### Fields\
\
| Name | Type | Description |\
| --- | --- | --- |\
| <code v-pre>actions</code> | <code v-pre>array</code> | The action links attached to the post. |\
| <code v-pre>link</code> | <code v-pre>string</code> | The URL of the action link itself. |\
| <code v-pre>name</code> | <code v-pre>string</code> | The name or label of the action link. |\
| <code v-pre>backdated_time</code> | <code v-pre>float</code> | Specifies a time in the past to backdate this post to. |\
| <code v-pre>backdated_time_granularity</code> | <code v-pre>enum{year, month, day, hour, minute}</code> | Controls the display of how a backdated post appears. For example, if you pick <code v-pre>month</code> posts will be displayed as <code v-pre>2 months ago</code> instead of an exact date. |\
| <code v-pre>child_attachments</code> | object | Use to specify multiple links in the post. Minimum 2 and maximum of 5 objects. If you set&lt;br&gt;<code v-pre>multi_share_optimized</code>&lt;br&gt;to true, you can upload a maximum of 10 objects but Facebook will display the top 5. |\
| <code v-pre>description</code> | <code v-pre>string</code> | Used to show either a price, discount or website domain. If not specified, the content of the linked page will be extracted and used. This field will typically be truncated after 30 characters. |\
| <code v-pre>image_hash</code> | <code v-pre>string</code> | Hash of a preview image associated with the link from your ad image library (1:1 aspect ratio and a minimum of 458 x 458 px for best display). Either <code v-pre>picture</code> or <code v-pre>image_hash</code> must be specified. |\
| <code v-pre>link</code> | <code v-pre>string</code> | The URL of a link to attach to the post. This field is required. |\
| <code v-pre>name</code> | <code v-pre>string</code> | The title of the link preview. If not specified, the title of the linked page will be used. This field will typically be truncated after 35 characters. It is recommended to set a unique <code v-pre>name</code>, as Facebook interfaces show actions reported on the <code v-pre>name</code> field. |\
| <code v-pre>picture</code> | <code v-pre>string</code> | A URL that determines the preview image associated with the link (1:1 aspect ratio and a minimum of 458 x 458 px for best display). Either <code v-pre>picture</code> or <code v-pre>image_hash</code> must be specified. |\
| <code v-pre>feed_targeting</code> | <code v-pre>object</code> | Object that controls Feed Targeting for this content. Anyone in these groups will be more likely to see this content, those not will be less likely, but may still see it anyway. Any of the targeting fields shown here can be used, none are required. |\
| <code v-pre>age_max</code> | <code v-pre>int</code> | Maximum age. Must be 65 or lower. |\
| <code v-pre>age_min</code> | <code v-pre>int</code> | Must be 13 or higher. Default is 0. |\
| <code v-pre>college_years</code> | <code v-pre>int[]</code> | Array of integers for graduation year from college. |\
| <code v-pre>education_statuses</code> | <code v-pre>int[]</code> | Array of integers for targeting based on education level. Use <code v-pre>1</code> for high school, <code v-pre>2</code> for undergraduate, and <code v-pre>3</code> for alum (or localized equivalents). |\
| <code v-pre>genders</code> | <code v-pre>list&lt;unsigned int32&gt;</code> | Target specific genders. <code v-pre>1</code> targets all male viewers and <code v-pre>2</code> females. Default is to target both. |\
| <code v-pre>geo_locations</code> | <code v-pre>object</code> | This object allows you to specify a number of different geographic locations. Please see our targeting guide for information on this object. |\
| <code v-pre>interests</code> | <code v-pre>int[]</code> | One or more IDs to target fans. Use <code v-pre>type=audienceinterest</code> to get possible IDs as Targeting Options and use the returned id to specify. |\
| <code v-pre>locales</code> | <code v-pre>int</code> | Targeted locales. Use <code v-pre>type</code> of <code v-pre>adlocale</code> to find Targeting Options and use the returned <code v-pre>key</code> to specify. |\
| <code v-pre>relationship_statuses</code> | <code v-pre>list&lt;unsigned int32&gt;</code> | Array of integers for targeting based on relationship status. Use <code v-pre>1</code> for single, <code v-pre>2</code> for 'in a relationship', <code v-pre>3</code> for married, and <code v-pre>4</code> for engaged. Default is all types. |\
| <code v-pre>link</code> | <code v-pre>string</code> | The URL of a link to attach to the post. Either <code v-pre>link</code> or <code v-pre>message</code> must be supplied. Additional fields associated with <code v-pre>link</code> are shown below. See the Custom Links Section for restrictions. |\
| <code v-pre>description</code> | <code v-pre>string</code> | Overwrites the description in the link preview |\
| <code v-pre>name</code> | <code v-pre>string</code> | Overwrites the title of the link preview. |\
| <code v-pre>picture</code> | <code v-pre>string</code> | Determines the preview image associated with the link. |\
| <code v-pre>thumbnail</code> | <code v-pre>file</code> | Preview image associated with the link uploaded by you. |\
| <code v-pre>message</code> | <code v-pre>string</code> | The main body of the post. The message can contain mentions of Facebook Pages, <code v-pre>@[page-id]</code>. |\
| <code v-pre>multi_share_end_card</code> | <code v-pre>Boolean</code> | If set to <code v-pre>false</code>, does not display the end card of a carousel link post when <code v-pre>child_attachments</code> is used. Default is <code v-pre>true</code>. |\
| <code v-pre>multi_share_optimized</code> | <code v-pre>Boolean</code> | If set to <code v-pre>true</code> and only when the post is used in an ad, Facebook will automatically select the order of links in <code v-pre>child_attachments</code>. Otherwise, the original ordering of <code v-pre>child_attachments</code> is preserved. Default value is true. |\
| <code v-pre>object_attachment</code> | <code v-pre>string</code> | Facebook ID for an existing picture in the person's photo albums to use as the thumbnail image. They must be the owner of the photo, and the photo cannot be part of a message attachment. |\
| <code v-pre>place</code> | <code v-pre>string</code> | Page ID of a location associated with this post. |\
| <code v-pre>published</code> | <code v-pre>Boolean</code> | Whether a story is shown about this newly published object. Default is <code v-pre>true</code> which means the story is displayed in Feed. This field is <code v-pre>not</code> supported when actions parameter is specified. Unpublished posts can be used in ads. |\
| <code v-pre>scheduled_publish_time</code> | <code v-pre>timestamp</code> | UNIX timestamp indicating when post should go live. Must be date between 10 minutes and 75 days from the time of the API request. |\
| <code v-pre>tags</code> | <code v-pre>csv[string]</code> | Comma-separated list of user IDs of people tagged in this post. You cannot specify this field without also specifying a <code v-pre>place</code>. |\
| <code v-pre>targeting</code> | <code v-pre>object</code> | Object that limits the audience for this content. Anyone not in these demographics will not be able to view this content. This will not override any Page-level demographic restrictions that may be in place. |\
| <code v-pre>age_min</code> | <code v-pre>int</code> | Value can be 13, 15, 18, 21, or 25. |\
| <code v-pre>geo_locations</code> | <code v-pre>object</code> | This object allows you to specify a number of different geographic locations. Please see our targeting guide for information on this object. |\
\
### Add a Feeling or Activity to a Page Post\
\
Add a feeling or activity and an icon to a page post. <code v-pre>og_action_type_id</code> and <code v-pre>og_object_id</code> are required when posting a feeling or activity. <code v-pre>og_icon_id</code> is optional however if not used an icon will be automatically supplied based on the <code v-pre>og_object_id</code>.\
\
#### Fields\
\
| Name | Description |\
| --- | --- |\
| <code v-pre>og_action_type_id</code> | An action, i.e., _feeling_, _watching_, etc. |\
| <code v-pre>og_icon_id</code> | An icon perhaps representing the action type, i.e., a smiley face, a movie icon, etc. |\
| <code v-pre>og_object_id</code> | The target of the action, i.e., _happy_, _movie_, etc. This can be a predefined object or any <code v-pre>page_id</code>. |\
\
#### Example Post\
\
HTTPPHP SDKJavaScript SDKAndroid SDKiOS SDK\
\
```\
POST /v25.0/page-id/feed HTTP/1.1\
Host: graph.facebook.com\
\
message=This+is+a+test+activity&og_action_type_id=383634835006146&og_object_id=136050896551329&og_icon_id=609297155780549\
```\
\
```\
/* PHP SDK v5.0.0 */\
/* make the API call */\
try {\
  // Returns a `Facebook\FacebookResponse` object\
  $response = $fb->post(\
    '/page-id/feed',\
    array (\
      'message' => 'This is a test activity',\
      'og_action_type_id' => '383634835006146',\
      'og_object_id' => '136050896551329',\
      'og_icon_id' => '609297155780549',\
    ),\
    '{access-token}'\
  );\
} catch(Facebook\Exceptions\FacebookResponseException $e) {\
  echo 'Graph returned an error: ' . $e->getMessage();\
  exit;\
} catch(Facebook\Exceptions\FacebookSDKException $e) {\
  echo 'Facebook SDK returned an error: ' . $e->getMessage();\
  exit;\
}\
$graphNode = $response->getGraphNode();\
/* handle the result */\
```\
\
```\
/* make the API call */\
FB.api(\
    "/page-id/feed",\
    "POST",\
    {\
        "message": "This is a test activity",\
        "og_action_type_id": "383634835006146",\
        "og_object_id": "136050896551329",\
        "og_icon_id": "609297155780549"\
    },\
    function (response) {\
      if (response && !response.error) {\
        /* handle the result */\
      }\
    }\
);\
```\
\
```\
Bundle params = new Bundle();\
params.putString("message", "This is a test activity");\
params.putString("og_action_type_id", "383634835006146");\
params.putString("og_object_id", "136050896551329");\
params.putString("og_icon_id", "609297155780549");\
/* make the API call */\
new GraphRequest(\
    AccessToken.getCurrentAccessToken(),\
    "/page-id/feed",\
    params,\
    HttpMethod.POST,\
    new GraphRequest.Callback() {\
        public void onCompleted(GraphResponse response) {\
            /* handle the result */\
        }\
    }\
).executeAsync();\
```\
\
```\
NSDictionary *params = @{\
  @"message": @"This is a test activity",\
  @"og_action_type_id": @"383634835006146",\
  @"og_object_id": @"136050896551329",\
  @"og_icon_id": @"609297155780549",\
};\
/* make the API call */\
FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc]\
                               initWithGraphPath:@"/page-id/feed"\
                                      parameters:params\
                                      HTTPMethod:@"POST"];\
[request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection,\
                                      id result,\
                                      NSError *error) {\
    // Handle the result\
}];\
```\
\
The response will be the <code v-pre>post_id</code>.\
\
### Unpublished Page Posts\
\
We support the following types of Unpublished Page Posts:\
\
| Post Type | Description |\
| --- | --- |\
| Link | A link Page post is most effective for sharing links to your website. Allows for optional replacement of image and extra text.&lt;br&gt;Note: A Youtube video link will be a link Page post. |\
| Photo | A photo Page post with a text description and an optional link as part of the description. |\
| Post | A Page post with a text description. |\
| Video | A video Page post with optional text description. |\
\
Unpublished Page posts are treated the same as published Page posts except that they do not appear in <code v-pre>/feed</code>.\
\
To see a list of unpublished Page posts, query the <code v-pre>is_published</code> field.\
\
cURLAndroid SDKObjective-CJava SDKPHP SDK\
\
```sh\
curl -i -X GET \\
 "https://graph.facebook.com/{page-id}/feed\
 ?fields=is_published\
 &access_token={your-page-access-token}"\
```\
\
```java\
GraphRequest request = GraphRequest.newGraphPathRequest(\
  accessToken,\
  "/{page-id}/feed",\
  new GraphRequest.Callback() {\
    @Override\
    public void onCompleted(GraphResponse response) {\
      // Insert your code here\
    }\
});\
\
Bundle parameters = new Bundle();\
parameters.putString("fields", "is_published");\
request.setParameters(parameters);\
request.executeAsync();\
```\
\
```m\
FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc]\
    initWithGraphPath:@"/{page-id}/feed"\
           parameters:@{ @"fields": @"is_published",}\
           HTTPMethod:@"GET"];\
[request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) {\
    // Insert your code here\
}];\
```\
\
```java\
FB.api(\
  '/{page-id}/feed',\
  'GET',\
  {"fields":"is_published"},\
  function(response) {\
      // Insert your code here\
  }\
);\
```\
\
```cpp\
try {\
  // Returns a `FacebookFacebookResponse` object\
  $response = $fb->get(\
    '/{page-id}/feed?fields=is_published',\
    '{access-token}'\
  );\
} catch(FacebookExceptionsFacebookResponseException $e) {\
  echo 'Graph returned an error: ' . $e->getMessage();\
  exit;\
} catch(FacebookExceptionsFacebookSDKException $e) {\
  echo 'Facebook SDK returned an error: ' . $e->getMessage();\
  exit;\
}\
$graphNode = $response->getGraphNode();\
```\
\
To view a post on Facebook.com, you can navigate to https://www.facebook.com/&#123;post-id&#125; for most post types, or retrieve the <code v-pre>actions</code> field of the post, which contains the URL at which a User can like or comment on the post.\
\
### Page Post call\_to\_action\
\
You can enhance your link Page posts with call to action buttons.\
The following <code v-pre>call_to_action</code> field can be added to new link Page Posts.\
\
| Name | Type | Description |\
| --- | --- | --- |\
| <code v-pre>call_to_action</code> | <code v-pre>object</code> | Object that specifies a Call to Action button. This should be the action you want people to take when they see your post. Clicking on this button will take people to the link you specify. |\
| <code v-pre>type</code> | <code v-pre>string</code> | Determines the call to action button text. One of allowed values:&lt;br&gt;<code v-pre>BOOK_TRAVEL</code>. Call to action shows up as Book Now.&lt;br&gt;<code v-pre>BUY_NOW</code>. Call to action shows up as Buy Now. Only used for desktop app ads for virtual goods.&lt;br&gt;<code v-pre>CALL_NOW</code>. Call to action shows up as Call Now. Only used for local awareness ads.&lt;br&gt;<code v-pre>DOWNLOAD</code>. Call to action shows up as Download.&lt;br&gt;<code v-pre>GET_DIRECTIONS</code>. Call to action shows up as Get Directions. Must specify coordinates on the <code v-pre>link</code> field. Only used for local awareness ads.&lt;br&gt;<code v-pre>GET_QUOTE</code>. Call to action shows up as Get Quote for lead generation.&lt;br&gt;<code v-pre>INSTALL_APP</code>. Call to action shows up as Install Now.&lt;br&gt;<code v-pre>INSTALL_MOBILE_APP</code>. Call to action shows up as Install Now. Only used for mobile app ads.&lt;br&gt;<code v-pre>LEARN_MORE</code>. Call to action shows up as Learn More.&lt;br&gt;<code v-pre>LIKE_PAGE</code>. Call to action shows up as Like Page. Only used for ads in Page Likes objective.&lt;br&gt;<code v-pre>LISTEN_MUSIC</code>. Call to action shows up as Listen Music.&lt;br&gt;<code v-pre>MESSAGE_PAGE</code>. Call to action shows up as Send Message. Only used for local awareness ads.&lt;br&gt;<code v-pre>NO_BUTTON</code>. No call to action shows up.&lt;br&gt;<code v-pre>OPEN_LINK</code>. Call to action shows up as Open Link. Only used for ads in Website Clicks objective.&lt;br&gt;<code v-pre>PLAY_GAME</code>. Call to action shows up as Play Game. Only used for desktop app ads.&lt;br&gt;<code v-pre>SHOP_NOW</code>. Call to action shows up as Shop Now. Only used for ads in Website Conversions objective.&lt;br&gt;<code v-pre>SIGN_UP</code>. Call to action shows up as Sign Up.&lt;br&gt;<code v-pre>SUBSCRIBE</code>. Call to action shows up as Subscribe for lead generation.&lt;br&gt;<code v-pre>USE_APP</code>. Call to action shows up as Use App.&lt;br&gt;<code v-pre>USE_MOBILE_APP</code>. Only used for mobile app ads.&lt;br&gt;<code v-pre>WATCH_MORE</code>. Call to action shows up as Watch More.&lt;br&gt;<code v-pre>WATCH_VIDEO</code>. Call to action shows up as Watch Video. |\
\
### Custom Link Page Post Image\
\
Post a link to a Page with a customized link image. The story's attachment renders an image retrieved from the link. Currently it is possible to override that image by providing an optional <code v-pre>picture</code> parameter with a URL to a new image. The <code v-pre>thumbnail</code> parameter offers similar functionality with the key difference being that the parameter accepts a local image file which is uploaded to Facebook in the API call.\
\
#### Permissions\
\
- A Page access token is required.\
- The link must be owned by the posting Page.\
\
To verify link ownership, check the <code v-pre>ownership_permissions{can_customize_link_posts}</code> field on the <code v-pre>URL</code> node. You must call this endpoint before posting new links. Without this step, custom link Page posts will not work for un-scraped links. See our Link Ownership Guide for more information. For versions 2.10 and lower, <code v-pre>picture</code>, <code v-pre>name</code>, <code v-pre>thumbnail</code>, and <code v-pre>description</code> are deprecated. <code v-pre>caption</code> is deprecated for all versions.\
\
| Parameters | Type | Description |\
| --- | --- | --- |\
| <code v-pre>description</code> | string | The description of the link (appears beneath the link caption). If not specified, this field is automatically populated by information scraped from the link, typically the title of the page. |\
| <code v-pre>name</code> | string | The name of the link attachment. This field is automatically populated by information scraped from the link. |\
| <code v-pre>picture</code> | string | URL for the image. Image is sourced from the URL supplied in <code v-pre>picture</code> |\
| <code v-pre>thumbnail</code> | file | Image file to be uploaded. Accepts <code v-pre>.jpg</code><code v-pre>.jpeg</code><code v-pre>.gif</code> or <code v-pre>.png</code>. Image is sourced from the file uploaded in <code v-pre>thumbnail</code> |\
\
#### Limitations\
\
- The <code v-pre>thumbnail</code> parameter is only available for link posts on Facebook Pages.\
\
- The <code v-pre>thumbnail</code> parameter takes higher precedence over the <code v-pre>picture</code> parameter. If both are supplied the <code v-pre>picture</code> parameter is unused.\
\
- The <code v-pre>thumbnail</code> parameter accepts images with extension <code v-pre>.jpg</code><code v-pre>.jpeg</code><code v-pre>.gif</code> or <code v-pre>.png</code>.\
\
- The <code v-pre>thumbnail</code> parameter is not supported in batch requests.\
\
\
### Posting a Link to a Page\
\
Post a link to a Page by sending a POST request to the <code v-pre>/page/feed</code> edge. Set the <code v-pre>publish</code> parameter to <code v-pre>1</code> to publish the post immediately or to <code v-pre>0</code> to create an unpublished post to be published later.\
\
#### Sample Request\
\
cURLAndroid SDKObjective-CJava SDKPHP SDK\
\
```sh\
curl -i -X POST "https://graph.facebook.com/{your-page-id}/feed\
  ?message=Become%20a%20Facebook%20developer!\
  &link=https%3A%2F%2Fdevelopers.facebook.com\
  &published=1\
  &access_token={your-page-access-token}"\
```\
\
```java\
GraphRequest request = GraphRequest.newPostRequest(\
  accessToken,\
  "/{your-page-id}/feed",\
  new JSONObject("{\"message\":\"Become a Facebook developer!\",\"link\":\"https://developers.facebook.com\",\"published\":\"1\"}"),\
  new GraphRequest.Callback() {\
    @Override\
    public void onCompleted(GraphResponse response) {\
      // Insert your code here\
    }\
});\
request.executeAsync();\
```\
\
```m\
FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc]\
    initWithGraphPath:@"/{your-page-id}/feed"\
           parameters:@{ @"message": @"Become a Facebook developer!",@"link": @"https://developers.facebook.com",@"published": @"1",}\
           HTTPMethod:@"POST"];\
[request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) {\
    // Insert your code here\
}];\
```\
\
```java\
FB.api(\
  '/{your-page-id}/feed',\
  'POST',\
  {"message":"Become a Facebook developer!","link":"https://developers.facebook.com","published":"1"},\
  function(response) {\
      // Insert your code here\
  }\
);\
```\
\
```cpp\
try {\
  // Returns a `FacebookFacebookResponse` object\
  $response = $fb->post(\
    '/{your-page-id}/feed',\
    array (\
      'message' => 'Become a Facebook developer!',\
      'link' => 'https://developers.facebook.com',\
      'published' => '1'\
    ),\
    '{access-token}'\
  );\
} catch(FacebookExceptionsFacebookResponseException $e) {\
  echo 'Graph returned an error: ' . $e->getMessage();\
  exit;\
} catch(FacebookExceptionsFacebookSDKException $e) {\
  echo 'Facebook SDK returned an error: ' . $e->getMessage();\
  exit;\
}\
$graphNode = $response->getGraphNode();\
```\
\
#### Sample Response\
\
```code\
{"id":"{post-id}"}\
```\
\
### Link Page Post with Call to Action\
\
The <code v-pre>call_to_action</code> field specifies the appropriate action and relevant link. This link should be the same as the <code v-pre>link</code> parameter of the Page Post. In this call, <code v-pre>title</code>, <code v-pre>description</code>, <code v-pre>caption</code> and <code v-pre>picture</code> are optional, and when not provided, Facebook will read the equivalent properties from the link's Open Graph meta data. If the linked web page does not have Open Graph meta data, Facebook will try to guess these properties by scraping the web page's content.\
\
#### Sample Request\
\
cURLAndroid SDKObjective-CJava SDKPHP SDK\
\
```sh\
curl -i -X POST "https://graph.facebook.com/{your-page-id}/feed\
  ?message=Become a Facebook developer!\
  &link=https://developers.facebook.com\
  &call_to_action={"type":"SIGN_UP","value":{"link":"https://developers.facebook.com"}}\
  &published=1\
  &access_token={your-page-access-token}"\
```\
\
```java\
GraphRequest request = GraphRequest.newPostRequest(\
  accessToken,\
  "/{your-page-id}/feed",\
  new JSONObject("{\"message\":\"Become a Facebook developer!\",\"link\":\"https://developers.facebook.com\",\"published\":\"1\",\"call_to_action\":\"{\\\"type\\\":\\\"SIGN_UP\\\",\\\"value\\\":{\\\"link\\\":\\\"https://developers.facebook.com\\\"}}\"}"),\
  new GraphRequest.Callback() {\
    @Override\
    public void onCompleted(GraphResponse response) {\
      // Insert your code here\
    }\
});\
request.executeAsync();\
```\
\
```m\
FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc]\
    initWithGraphPath:@"/{your-page-id}/feed"\
           parameters:@{ @"message": @"Become a Facebook developer!",@"link": @"https://developers.facebook.com",@"published": @"1",@"call_to_action": @"{"type":"SIGN_UP","value":{"link":"https://developers.facebook.com"}}",}\
           HTTPMethod:@"POST"];\
[request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) {\
    // Insert your code here\
}];\
```\
\
```java\
FB.api(\
  '/{your-page-id}/feed',\
  'POST',\
  {"message":"Become a Facebook developer!","link":"https://developers.facebook.com","published":"1","call_to_action":"{\"type\":\"SIGN_UP\",\"value\":{\"link\":\"https://developers.facebook.com\"}}"},\
  function(response) {\
      // Insert your code here\
  }\
);\
```\
\
```cpp\
try {\
  // Returns a `FacebookFacebookResponse` object\
  $response = $fb->post(\
    '/{your-page-id}/feed',\
    array (\
      'message' => 'Become a Facebook developer!',\
      'link' => 'https://developers.facebook.com',\
      'published' => '1',\
      'call_to_action' => '{"type":"SIGN_UP","value":{"link":"https://developers.facebook.com"}}'\
    ),\
    '{access-token}'\
  );\
} catch(FacebookExceptionsFacebookResponseException $e) {\
  echo 'Graph returned an error: ' . $e->getMessage();\
  exit;\
} catch(FacebookExceptionsFacebookSDKException $e) {\
  echo 'Facebook SDK returned an error: ' . $e->getMessage();\
  exit;\
}\
$graphNode = $response->getGraphNode();\
```\
\
#### Sample Response\
\
```code\
{"id":"{post-id}"}\
```\
\
### Link Post with Custom Uploaded Image\
\
#### Using a local file:\
\
```code\
curl -F 'link=http://www.example.com' \\
     -F 'thumbnail=@/local/path/to/file/on/hard/drive/image.jpg' \\
     -F 'access_token=page-access-token'\\
  https://graph.facebook.com/v2.11/page-id/feed\
```\
\
Return Value\
\
```code\
{"id":"post-id"}\
```\
\
#### Using an Image via URL:\
\
```code\
curl -F 'link=http://www.example.com' \\
     -F 'picture=https://www.example.com/path/to/image.jpg' \\
     -F 'access_token=page-access-token'\\
  https://graph.facebook.com/v2.11/page-id/feed\
```\
\
Return Value\
\
```code\
{"id":"post-id>"}\
```\
\
### Photo Page Post\
\
Please visit our Photo Node Reference for more information.\
\
### Video Page Post\
\
Please visit our Page Video Reference for more information.\
\
### Page Post Insights\
\
Please visit our Page Post Insights Reference for more information.\
\
## Updating\
\
You can't update using this edge, however you can update posts using the <code v-pre>/{post-id}</code> node.\
\
## Deleting\
\
You can't delete using this edge, however you can delete posts using the <code v-pre>/{post-id}</code> node.\
\
On This Page\
\
Page Feed\
\
Reading\
\
New Page Experience\
\
Requirements\
\
Limitations\
\
Fields\
\
Promotable IDs\
\
Publishing\
\
New Page Experience\
\
Requirements\
\
Response\
\
Fields\
\
Add a Feeling or Activity to a Page Post\
\
Updating\
\
Deleting