Skip to content
Fresh 2026

Photo

Represents an individual photo on Facebook.

Reading

This represents a Photo on Facebook.

Permissions

  • Any valid access token can read photos on a public Page.

  • A page access token can read all photos posted to or posted by that Page.

  • The current user's photos can be read if the user has granted the user_photos or user_posts permission.

  • A user access token may read a photo that the current user is tagged in if they have granted the user_photos or user_posts permission. However, in some cases the photo's owner's privacy settings may not allow your application to access it.

  • A User access token for an Admin of a Group can read Group-owned Photos.

  • A User access token for an Admin of an Event can read Event-owned Photos if required after April 30, 2018.

New Page Experience

This endpoint is supported for New Page Experience.

Feature Permissions

NameDescription
Page Public Content AccessThis feature permission may be required.

Example

HTTPPHP SDKJavaScript SDKAndroid SDKiOS SDK Graph API Explorer

GET /v25.0/{photo-id} 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(
    '/{photo-id}',
    '{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(
    "/{photo-id}",
    function (response) {
      if (response && !response.error) {
        /* handle the result */
      }
    }
);
/* make the API call */
new GraphRequest(
    AccessToken.getCurrentAccessToken(),
    "/{photo-id}",
    null,
    HttpMethod.GET,
    new GraphRequest.Callback() {
        public void onCompleted(GraphResponse response) {
            /* handle the result */
        }
    }
).executeAsync();
/* make the API call */
FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc]\
                               initWithGraphPath:@"/{photo-id}"\
                                      parameters:params\
                                      HTTPMethod:@"GET"];
[request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection,\
                                      id result,\
                                      NSError *error) {\
    // Handle the result\
}];

If you want to learn how to use the Graph API, read our Using Graph API guide.

Parameters

This endpoint doesn't have any parameters.

Fields

FieldDescription
id<br>numeric stringThe photo ID
alt_text<br>stringAccessible alternative description for an image
alt_text_custom<br>stringUser provided accessible alternative description for an image
backdated_time<br>datetimeA user-specified time for when this object was created
backdated_time_granularity<br>enumHow accurate the backdated time is
can_backdate<br>boolIndicates whether the viewer can backdate the photo
can_delete<br>boolIndicates whether the viewer can delete the photo
can_tag<br>boolIndicates whether the viewer can tag the photo
created_time<br>datetimeThe time this photo was published<br>Default
event<br>EventIf this object has a place, the event associated with the place
from<br>User|PageThe profile (user or page) that uploaded this photo
height<br>unsigned int32The height of this photo in pixels
icon<br>stringThe icon that Facebook displays when photos are published to News Feed
images<br>list<PlatformImageSource>The different stored representations of the photo. Can vary in number based upon the size of the original photo.
link<br>stringA link to the photo on Facebook
name<br>stringThe user-provided caption given to this photo. Corresponds to caption when creating photos<br>Default
name_tags<br>list<EntityAtTextRange>An array containing an array of objects mentioned in the name field which contain the id, name, and type of each object as well as the offset and length which can be used to match it up with its corresponding string in the name field
page_story_id<br>stringID of the page story this corresponds to. May not be on all photos. Applies only to published photos
place<br>PlacePlace info
position<br>unsigned int32Deprecated. Returns 0<br>Deprecated
source<br>stringDeprecated. Use images instead<br>Deprecated
target<br>ProfileThe target this photo is published to
updated_time<br>datetimeThe last time the photo was updated
webp_images<br>list<PlatformImageSource>The different stored representations of the photo in webp format. Can vary in number based upon the size of the original photo.
width<br>unsigned int32The width of this photo in pixels

Edges

EdgeDescription
insights<br>Edge<InsightsResult>Insights data
likes<br>Edge<Profile>People who like this
picture<br>Edge<ProfilePictureSource>Link to the 100px wide representation of this photo
sponsor_tags<br>Edge<Page>Sponsor pages tagged in the photo.

Error Codes

ErrorDescription
100Invalid parameter
80001There have been too many calls to this Page account. Wait a bit and try again. For more info, please refer to https://developers.facebook.com/docs/graph-api/overview/rate-limiting.
200Permissions error
368The action attempted has been deemed abusive or is otherwise disallowed
190Invalid OAuth 2.0 Access Token
104Incorrect signature
459The session is invalid because the user has been checkpointed

Creating

Animated photos are not supported, and a photo must be less than 10MB in size.

Note: the post_id value is not returned for photos added to Albums.

You can make a POST request to photos edge from the following paths:

  • /{page_id}/photos

When posting to this edge, a Photo will be created.

Parameters

ParameterDescription
aid<br>stringLegacy album ID. Deprecated
allow_spherical_photo<br>booleanDefault value: false<br>Indicates that we should allow this photo to be treated as a spherical photo. This will not change the behavior unless the server is able to interpret the photo as spherical, such as via Photosphere XMP metadata. Regular non-spherical photos will still be treated as regular photos even if this parameter is true.
alt_text_custom<br>stringAccessible alternative description for an image
android_key_hash<br>stringAndroid key hash
application_id<br>non-empty stringiTunes App ID. This is used by the native Share dialog that's part of iOS
attempt<br>int64Default value: 0<br>Number of attempts that have been made to upload this photo
audience_exp<br>booleanDefault value: false<br>Audience exp
backdated_time<br>datetimeA user-specified creation time for this photo
backdated_time_granularity<br>enum{year, month, day, hour, min, none}Default value: none<br>Use only the part of the backdated_time parameter to the specified granularity
caption<br>UTF-8 stringThe description of the photo<br>Supports Emoji
composer_session_id<br>stringComposer session ID
direct_share_status<br>int64The status to allow sponsor directly boost the post.
feed_targeting<br>feed targetObject that controls News Feed targeting for this post. Anyone in these groups will be more likely to see this post. People not in these groups will be less likely to see this post, but may still see it anyway. Any of the targeting fields shown here can be used, but none are required. feed_targeting applies to Pages only.
geo_locations<br>Object
countries<br>list<string>
regions<br>list<Object>
key<br>int64
cities<br>list<Object>
key<br>int64
zips<br>list<Object>
key<br>string
locales<br>list<string>Values for targeted locales. Use type of adlocale to find Targeting Options and use the returned key to specify.
age_min<br>int64Must be 13 or higher. Default is 0.
age_max<br>int64Maximum age.
genders<br>list<int64>Target specific genders. 1 targets all male viewers and 2 females. Default is to target both.
college_years<br>list<int64>Array of integers. Represent graduation years from college.
education_statuses<br>list<int64>Array of integers which represent current educational status. Use 1 for high school, 2 for undergraduate, and 3 for alum (or localized equivalents).
interested_in<br>list<int64>Deprecated. Please see the Graph API Changelog for more information.<br>Deprecated
relationship_statuses<br>list<int64>Array 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.
interests<br>list<int64>One or more IDs of pages to target fans of pages.Use type of page to get possible IDs as find Targeting Options and use the returned id to specify.
filter_type<br>int64Default value: -1<br>Unused?
full_res_is_coming_later<br>booleanDefault value: false<br>Full res is coming later
initial_view_heading_override_degrees<br>int64Manually specify the initial view heading in degrees from 0 to 360. This overrides any value present in the photo embedded metadata or provided in the spherical_metadata parameter
initial_view_pitch_override_degrees<br>int64Manually specify the initial view pitch in degrees from -90 to 90. This overrides any value present in the photo embedded metadata or provided in the spherical_metadata parameter
initial_view_vertical_fov_override_degrees<br>int64Manually specify the initial view vertical FOV in degrees from 60 to 120. This overrides any value present in the photo embedded metadata or provided in the spherical_metadata parameter
ios_bundle_id<br>stringiOS Bundle ID
is_explicit_location<br>booleanIs this an explicit location?
is_explicit_place<br>booleanIf set to true, the tag is a place, not a person
location_source_id<br>numeric string or integerID of a page or a page set that provides location informationto enable Local Extensions
manual_privacy<br>booleanDefault value: false<br>Manual privacy
message<br>stringDeprecated. Please use the caption param instead.
name<br>stringDeprecated. Please use the caption param instead.
nectar_module<br>stringNectar module. Internal apps only
no_story<br>booleanIf set to true, this will suppress the News Feed story that is automatically generated on a profile when people upload a photo using your app. Useful for adding old photos where you may not want to generate a story
offline_id<br>int64Default value: 0<br>Offline ID
og_action_type_id<br>numeric string or integerThe Open Graph action type
og_icon_id<br>numeric string or integerThe Open Graph icon
og_object_id<br>OG object ID or URL stringThe Open Graph object ID
og_phrase<br>stringThe Open Graph phrase
og_set_profile_badge<br>booleanDefault value: false<br>Flag to set if the post should create a profile badge
og_suggestion_mechanism<br>stringThe Open Graph suggestion
place<br>place tagPage ID of a place associated with the photo
privacy<br>Privacy ParameterDetermines the privacy settings of the photo. If not supplied, this defaults to the privacy level granted to the app in the Login dialog. This field cannot be used to set a more open privacy setting than the one granted
profile_id<br>intDeprecated. Use target_id instead<br>Deprecated
provenance_info<br>JSON objectprovenance_info
is_gen_ai<br>booleanis_gen_ai<br>Required
provenance_type<br>enum {C2PA, IPTC, EXPLICIT, INVISIBLE_WATERMARK, C2PA_METADATA_EDITED, IPTC_METADATA_EDITED, EXPLICIT_IMAGINE, EXPLICIT_IMAGINE_ME, EXPLICIT_RESTYLE, EXPLICIT_ANIMATE, EXPLICIT_FACE_SWAP, EXPLICIT_WARDROBE, EXPLICIT_DROP_IN}provenance_type<br>Required
source<br>stringsource
proxied_app_id<br>numeric string or integerProxied app ID
published<br>booleanDefault value: true<br>Set to false if you don't want the photo to be published immediately
qn<br>stringPhotos waterfall ID
scheduled_publish_time<br>int64Time at which an unpublished post should be published (Unix timestamp). Applies to Pages only
spherical_metadata<br>JSON objectA set of params describing an uploaded spherical photo. This field is not required; if it is not present we will try to generate spherical metadata from the metadata embedded in the image. If it is present, it takes precedence over any embedded metadata. Please click to the left to expand this list and see more information on each parameter. See also the Google Photo Sphere spec for more info on the meaning of the params: https://developers.google.com/streetview/spherical-metadata
ProjectionType<br>stringAccepted values include equirectangular (full spherical photo),<br>cylindrical (panorama), and cubestrip (also known as cubemap, e.g.<br>for synthetic or rendered content; stacked vertically with 6 faces).<br>Required
CroppedAreaImageWidthPixels<br>int64--- In equirectangular projection: As described in Google Photo Sphere<br>XMP Metadata spec.<br>--- In cylindrical projection: Very similar to equirectangular.<br>This value should be equal to the actual width of the image, and<br>together with FullPanoWidthPixels, it describes the horizontal FOV<br>of content of the image: HorizontalFOV = 360 *<br>CroppedAreaImageWidthPixels / FullPanoWidthPixels.<br>--- In cubestrip projection: This has no relationship to the pixel<br>dimensions of the image. It is simply a representation of the<br>horizontal FOV of the content of the image.<br>HorizontalFOV = CroppedAreaImageWidthPixels / PixelsPerDegree,<br>where PixelsPerDegree is defined by FullPanoWidthPixels.<br>Required
CroppedAreaImageHeightPixels<br>int64--- In equirectangular projection: As described in Google Photo Sphere<br>XMP Metadata spec.<br>--- In cylindrical projection: This value will NOT be equal to<br>the actual height of the image. Instead, together with<br>FullPanoHeightPixels, it describes the vertical FOV of the image:<br>VerticalFOV = 180 * CroppedAreaImageHeightPixels /<br>FullPanoHeightPixels. In other words, this value is equal to the<br>CroppedAreaImageHeightPixels value that this image would have, if it<br>were projected into equirectangular format while maintaining the<br>same FullPanoWidthPixels.<br>--- In cubestrip projection: This has no relationship to the pixel<br>dimensions of the image. It is simply a representation of the<br>vertical FOV of the content of the image.<br>VerticalFOV = CroppedAreaImageHeightPixels / PixelsPerDegree,<br>where PixelsPerDegree is defined by FullPanoWidthPixels.<br>Required
FullPanoWidthPixels<br>int64--- In equirectangular projection: As described in Google Photo Sphere<br>XMP Metadata spec.<br>--- In cylindrical projection: Very similar to<br>equirectangular. This value defines a ratio of horizontal pixels to<br>degrees in the space of the image, and in general the pixel to degree<br>ratio in the scope of the metadata object. Concretely, PixelsPerDegree =<br>FullPanoWidthPixels / 360. This is also equivalent to the<br>circumference of the cylinder used to model this projection.<br>--- In cubestrip projection: This value has<br>no relationship to the pixel dimensions of the image. It only defines<br>the pixel to degree ratio in the scope of the metadata object. It<br>represents the number of pixels in 360 degrees, so pixels per degree<br>is then given by: PixelsPerDegree = FullPanoWidthPixels / 360. As an<br>example, if FullPanoWidthPixels were chosen to be 3600, we would have<br>PixelsPerDegree = 3600 / 360 = 10. An image with a vertical field of<br>view of 65 degrees would then have a CroppedAreaImageHeightPixels value<br>of 65 * 10 = 650.<br>Required
FullPanoHeightPixels<br>int64--- In equirectangular projection: As described in Google Photo Sphere<br>XMP Metadata spec.<br>--- In cylindrical projection: This value is equal<br>to the FullPanoHeightPixels value that this image would have, if it<br>were projected into equirectangular format while maintaining the<br>same FullPanoWidthPixels. It is always equal to<br>FullPanoWidthPixels / 2.<br>--- In cubestrip projection: This value has<br>no relationship to the pixel dimensions of the image. It is a second,<br>redundant representation of PixelsPerDegree.<br>FullPanoHeightPixels = 180 * PixelsPerDegree. It must be consistent<br>with FullPanoWidthPixels:<br>FullPanoHeightPixels = FullPanoWidthPixels / 2.<br>Required
CroppedAreaLeftPixels<br>int64Default value: 0<br>--- In equirectangular projection: As described in Google Photo Sphere<br>XMP Metadata spec.<br>--- In cylindrical projection: This value is equal<br>to the CroppedAreaLeftPixels value that this image would have, if it<br>were projected into equirectangular format while maintaining the<br>same FullPanoWidthPixels. It is just a representation of the same<br>angular offset that it represents in equirectangular projection in the<br>Google Photo Sphere spec.<br>Concretely, AngularOffsetFromLeftDegrees = CroppedAreaLeftPixels /<br>PixelsPerDegree, where PixelsPerDegree is defined by<br>FullPanoWidthPixels.<br>--- In cubestrip projection: This value has<br>no relationship to the pixel dimensions of the image. It is just a<br>representation of the same angular offset that it represents in<br>equirectangular projection in the Google Photo Sphere spec.<br>AngularOffsetFromLeftDegrees = CroppedAreaLeftPixels / PixelsPerDegree,<br>where PixelsPerDegree is defined by FullPanoWidthPixels.
CroppedAreaTopPixels<br>int64Default value: 0<br>--- In equirectangular projection: As described in Google Photo Sphere<br>XMP Metadata spec.<br>--- In cylindrical projection: This value is equal<br>to the CroppedAreaTopPixels value that this image would have, if it<br>were projected into equirectangular format while maintaining the<br>same FullPanoWidthPixels. It is just a representation of the same<br>angular offset that it represents in equirectangular projection in the<br>Google Photo Sphere spec.<br>Concretely, AngularOffsetFromTopDegrees = CroppedAreaTopPixels /<br>PixelsPerDegree, where PixelsPerDegree is defined by<br>FullPanoWidthPixels.<br>--- In cubestrip projection: This value has<br>no relationship to the pixel dimensions of the image. It is just a<br>representation of the same angular offset that it represents in<br>equirectangular projection in the Google Photo Sphere spec.<br>AngularOffsetFromTopDegrees = CroppedAreaTopPixels / PixelsPerDegree,<br>where PixelsPerDegree is defined by FullPanoWidthPixels.
PoseHeadingDegrees<br>float
PosePitchDegrees<br>float
PoseRollDegrees<br>float
InitialViewHeadingDegrees<br>float
InitialViewPitchDegrees<br>float
InitialViewRollDegrees<br>floatThis is not currently supported
InitialViewVerticalFOVDegrees<br>floatThis is deprecated. Please use InitialVerticalFOVDegrees.
InitialVerticalFOVDegrees<br>floatYou can set the intial vertical FOV of the image. You can set either<br>this field or InitialHorizontalFOVDegrees.
InitialHorizontalFOVDegrees<br>floatYou can set the intial horizontal FOV of the image. You can set either<br>this field or InitialVerticalFOVDegrees.
PreProcessCropLeftPixels<br>int64
PreProcessCropRightPixels<br>int64
sponsor_id<br>numeric string or integerFacebook Page id that is tagged as sponsor in the photo post
sponsor_relationship<br>int64Sponsor Relationship, such as Presented By or Paid PartnershipWith
tags<br>list<Object>Default value: Vec<br>Tags on this photo
x<br>floatThe x-axis offset for the tag
y<br>floatThe y-axis offset for the tag
tag_uid<br>intThe user_id of the tagged person
tag_text<br>stringText associated with the tag
target_id<br>intDon't use this. Specifying a target_id allows you to post the photo to an object that's not the user in the access token. It only works when posting directly to the /photos endpoint. Instead of using this parameter you should be using the edge on an object directly, like /page/photos.
targeting<br>targetAllows you to target posts to specific audiences. Applies to Pages only
geo_locations<br>Object
countries<br>list<string>
regions<br>list<Object>
key<br>int64
cities<br>list<Object>
key<br>int64
zips<br>list<Object>
key<br>string
locales<br>list<string>
excluded_countries<br>list<string>
excluded_regions<br>list<int64>
excluded_cities<br>list<int64>
excluded_zipcodes<br>list<string>
timezones<br>list<int64>
age_min<br>enum {13, 15, 18, 21, 25}
temporary<br>booleanDefault value: false<br>This is a temporary photo. published must be false, and you can't set scheduled_publish_time
time_since_original_post<br>int64Same as backdated_time but with a time delta instead of absolute time
uid<br>intDeprecated
unpublished_content_type<br>enum {SCHEDULED, SCHEDULED_RECURRING, DRAFT, PUBLISH_PENDING, ADS_POST, INLINE_CREATED, PUBLISHED, REVIEWABLE_BRANDED_CONTENT}Content type of the unpublished content type
url<br>URLThe URL of a photo that is already uploaded to the Internet. You must specify this or a file attachment
user_selected_tags<br>booleanDefault value: false<br>User selected tags
vault_image_id<br>numeric string or integerA vault image ID to use for a photo. You can use only one of url, a file attachment, vault_image_id, or sync_object_uuid

Return Type

This endpoint supports read-after-write and will read the node represented by id in the return type.

Struct {

id: numeric string,

post_id: string,

}

Error Codes

ErrorDescription
368The action attempted has been deemed abusive or is otherwise disallowed
324Missing or invalid image file
200Permissions error
190Invalid OAuth 2.0 Access Token
100Invalid parameter
240Desktop applications cannot call this function for other users
283That action requires the extended permission pages_read_engagement and/or pages_read_user_content and/or pages_manage_ads and/or pages_manage_metadata

You can make a POST request to photos edge from the following paths:

  • /{album_id}/photos

When posting to this edge, a Photo will be created.

Parameters

ParameterDescription
aid<br>stringLegacy album ID. Deprecated
allow_spherical_photo<br>booleanDefault value: false<br>Indicates that we should allow this photo to be treated as a spherical photo. This will not change the behavior unless the server is able to interpret the photo as spherical, such as via Photosphere XMP metadata. Regular non-spherical photos will still be treated as regular photos even if this parameter is true.
alt_text_custom<br>stringAccessible alternative description for an image
android_key_hash<br>stringAndroid key hash
application_id<br>non-empty stringiTunes App ID. This is used by the native Share dialog that's part of iOS
attempt<br>int64Default value: 0<br>Number of attempts that have been made to upload this photo
audience_exp<br>booleanDefault value: false<br>Audience exp
backdated_time<br>datetime/timestampA user-specified creation time for this photo
backdated_time_granularity<br>enum{year, month, day, hour, min, none}Default value: none<br>Use only the part of the backdated_time parameter to the specified granularity
caption<br>stringThe description of the photo
composer_session_id<br>stringComposer session ID
direct_share_status<br>int64The status to allow sponsor directly boost the post.
feed_targeting<br>feed targetObject that controls News Feed targeting for this post. Anyone in these groups will be more likely to see this post. People not in these groups will be less likely to see this post, but may still see it anyway. Any of the targeting fields shown here can be used, but none are required. feed_targeting applies to Pages only.
geo_locations<br>Object
countries<br>list<string>
regions<br>list<Object>
key<br>int64
cities<br>list<Object>
key<br>int64
zips<br>list<Object>
key<br>string
locales<br>list<string>Values for targeted locales. Use type of adlocale to find Targeting Options and use the returned key to specify.
age_min<br>int64Must be 13 or higher. Default is 0.
age_max<br>int64Maximum age.
genders<br>list<int64>Target specific genders. 1 targets all male viewers and 2 females. Default is to target both.
college_years<br>list<int64>Array of integers. Represent graduation years from college.
education_statuses<br>list<int64>Array of integers which represent current educational status. Use 1 for high school, 2 for undergraduate, and 3 for alum (or localized equivalents).
interested_in<br>list<int64>Deprecated. Please see the Graph API Changelog for more information.<br>Deprecated
relationship_statuses<br>list<int64>Array 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.
interests<br>list<int64>One or more IDs of pages to target fans of pages.Use type of page to get possible IDs as find Targeting Options and use the returned id to specify.
filter_type<br>int64Default value: -1<br>Unused?
full_res_is_coming_later<br>booleanDefault value: false<br>Full res is coming later
initial_view_heading_override_degrees<br>int64Manually specify the initial view heading in degrees from 0 to 360. This overrides any value present in the photo embedded metadata or provided in the spherical_metadata parameter
initial_view_pitch_override_degrees<br>int64Manually specify the initial view pitch in degrees from -90 to 90. This overrides any value present in the photo embedded metadata or provided in the spherical_metadata parameter
initial_view_vertical_fov_override_degrees<br>int64Manually specify the initial view vertical FOV in degrees from 60 to 120. This overrides any value present in the photo embedded metadata or provided in the spherical_metadata parameter
ios_bundle_id<br>stringiOS Bundle ID
is_explicit_location<br>booleanIs this an explicit location?
is_explicit_place<br>booleanIf set to true, the tag is a place, not a person
manual_privacy<br>booleanDefault value: false<br>Manual privacy
message<br>stringDeprecated. Please use the caption param instead.
name<br>stringDeprecated. Please use the caption param instead.
no_story<br>booleanIf set to true, this will suppress the News Feed story that is automatically generated on a profile when people upload a photo using your app. Useful for adding old photos where you may not want to generate a story
offline_id<br>int64Default value: 0<br>Offline ID
og_action_type_id<br>numeric stringThe Open Graph action type
og_icon_id<br>numeric stringThe Open Graph icon
og_object_id<br>OG object ID or URL stringThe Open Graph object ID
og_phrase<br>stringThe Open Graph phrase
og_set_profile_badge<br>booleanDefault value: false<br>Flag to set if the post should create a profile badge
og_suggestion_mechanism<br>stringThe Open Graph suggestion
place<br>place tagPage ID of a place associated with the photo
privacy<br>Privacy ParameterDetermines the privacy settings of the photo. If not supplied, this defaults to the privacy level granted to the app in the Login dialog. This field cannot be used to set a more open privacy setting than the one granted
profile_id<br>intDeprecated. Use target_id instead<br>Deprecated
provenance_info<br>JSON objectprovenance_info
is_gen_ai<br>booleanis_gen_ai<br>Required
provenance_type<br>enum {C2PA, IPTC, EXPLICIT, INVISIBLE_WATERMARK, C2PA_METADATA_EDITED, IPTC_METADATA_EDITED, EXPLICIT_IMAGINE, EXPLICIT_IMAGINE_ME, EXPLICIT_RESTYLE, EXPLICIT_ANIMATE, EXPLICIT_FACE_SWAP, EXPLICIT_WARDROBE, EXPLICIT_DROP_IN}provenance_type<br>Required
source<br>stringsource
proxied_app_id<br>numeric string or integerProxied app ID
published<br>booleanDefault value: true<br>Set to false if you don't want the photo to be published immediately
qn<br>stringPhotos waterfall ID
spherical_metadata<br>JSON objectA set of params describing an uploaded spherical photo. This field is not required; if it is not present we will try to generate spherical metadata from the metadata embedded in the image. If it is present, it takes precedence over any embedded metadata. Please click to the left to expand this list and see more information on each parameter. See also the Google Photo Sphere spec for more info on the meaning of the params: https://developers.google.com/streetview/spherical-metadata
ProjectionType<br>stringAccepted values include equirectangular (full spherical photo),<br>cylindrical (panorama), and cubestrip (also known as cubemap, e.g.<br>for synthetic or rendered content; stacked vertically with 6 faces).<br>Required
CroppedAreaImageWidthPixels<br>int64--- In equirectangular projection: As described in Google Photo Sphere<br>XMP Metadata spec.<br>--- In cylindrical projection: Very similar to equirectangular.<br>This value should be equal to the actual width of the image, and<br>together with FullPanoWidthPixels, it describes the horizontal FOV<br>of content of the image: HorizontalFOV = 360 *<br>CroppedAreaImageWidthPixels / FullPanoWidthPixels.<br>--- In cubestrip projection: This has no relationship to the pixel<br>dimensions of the image. It is simply a representation of the<br>horizontal FOV of the content of the image.<br>HorizontalFOV = CroppedAreaImageWidthPixels / PixelsPerDegree,<br>where PixelsPerDegree is defined by FullPanoWidthPixels.<br>Required
CroppedAreaImageHeightPixels<br>int64--- In equirectangular projection: As described in Google Photo Sphere<br>XMP Metadata spec.<br>--- In cylindrical projection: This value will NOT be equal to<br>the actual height of the image. Instead, together with<br>FullPanoHeightPixels, it describes the vertical FOV of the image:<br>VerticalFOV = 180 * CroppedAreaImageHeightPixels /<br>FullPanoHeightPixels. In other words, this value is equal to the<br>CroppedAreaImageHeightPixels value that this image would have, if it<br>were projected into equirectangular format while maintaining the<br>same FullPanoWidthPixels.<br>--- In cubestrip projection: This has no relationship to the pixel<br>dimensions of the image. It is simply a representation of the<br>vertical FOV of the content of the image.<br>VerticalFOV = CroppedAreaImageHeightPixels / PixelsPerDegree,<br>where PixelsPerDegree is defined by FullPanoWidthPixels.<br>Required
FullPanoWidthPixels<br>int64--- In equirectangular projection: As described in Google Photo Sphere<br>XMP Metadata spec.<br>--- In cylindrical projection: Very similar to<br>equirectangular. This value defines a ratio of horizontal pixels to<br>degrees in the space of the image, and in general the pixel to degree<br>ratio in the scope of the metadata object. Concretely, PixelsPerDegree =<br>FullPanoWidthPixels / 360. This is also equivalent to the<br>circumference of the cylinder used to model this projection.<br>--- In cubestrip projection: This value has<br>no relationship to the pixel dimensions of the image. It only defines<br>the pixel to degree ratio in the scope of the metadata object. It<br>represents the number of pixels in 360 degrees, so pixels per degree<br>is then given by: PixelsPerDegree = FullPanoWidthPixels / 360. As an<br>example, if FullPanoWidthPixels were chosen to be 3600, we would have<br>PixelsPerDegree = 3600 / 360 = 10. An image with a vertical field of<br>view of 65 degrees would then have a CroppedAreaImageHeightPixels value<br>of 65 * 10 = 650.<br>Required
FullPanoHeightPixels<br>int64--- In equirectangular projection: As described in Google Photo Sphere<br>XMP Metadata spec.<br>--- In cylindrical projection: This value is equal<br>to the FullPanoHeightPixels value that this image would have, if it<br>were projected into equirectangular format while maintaining the<br>same FullPanoWidthPixels. It is always equal to<br>FullPanoWidthPixels / 2.<br>--- In cubestrip projection: This value has<br>no relationship to the pixel dimensions of the image. It is a second,<br>redundant representation of PixelsPerDegree.<br>FullPanoHeightPixels = 180 * PixelsPerDegree. It must be consistent<br>with FullPanoWidthPixels:<br>FullPanoHeightPixels = FullPanoWidthPixels / 2.<br>Required
CroppedAreaLeftPixels<br>int64Default value: 0<br>--- In equirectangular projection: As described in Google Photo Sphere<br>XMP Metadata spec.<br>--- In cylindrical projection: This value is equal<br>to the CroppedAreaLeftPixels value that this image would have, if it<br>were projected into equirectangular format while maintaining the<br>same FullPanoWidthPixels. It is just a representation of the same<br>angular offset that it represents in equirectangular projection in the<br>Google Photo Sphere spec.<br>Concretely, AngularOffsetFromLeftDegrees = CroppedAreaLeftPixels /<br>PixelsPerDegree, where PixelsPerDegree is defined by<br>FullPanoWidthPixels.<br>--- In cubestrip projection: This value has<br>no relationship to the pixel dimensions of the image. It is just a<br>representation of the same angular offset that it represents in<br>equirectangular projection in the Google Photo Sphere spec.<br>AngularOffsetFromLeftDegrees = CroppedAreaLeftPixels / PixelsPerDegree,<br>where PixelsPerDegree is defined by FullPanoWidthPixels.
CroppedAreaTopPixels<br>int64Default value: 0<br>--- In equirectangular projection: As described in Google Photo Sphere<br>XMP Metadata spec.<br>--- In cylindrical projection: This value is equal<br>to the CroppedAreaTopPixels value that this image would have, if it<br>were projected into equirectangular format while maintaining the<br>same FullPanoWidthPixels. It is just a representation of the same<br>angular offset that it represents in equirectangular projection in the<br>Google Photo Sphere spec.<br>Concretely, AngularOffsetFromTopDegrees = CroppedAreaTopPixels /<br>PixelsPerDegree, where PixelsPerDegree is defined by<br>FullPanoWidthPixels.<br>--- In cubestrip projection: This value has<br>no relationship to the pixel dimensions of the image. It is just a<br>representation of the same angular offset that it represents in<br>equirectangular projection in the Google Photo Sphere spec.<br>AngularOffsetFromTopDegrees = CroppedAreaTopPixels / PixelsPerDegree,<br>where PixelsPerDegree is defined by FullPanoWidthPixels.
PoseHeadingDegrees<br>float
PosePitchDegrees<br>float
PoseRollDegrees<br>float
InitialViewHeadingDegrees<br>float
InitialViewPitchDegrees<br>float
InitialViewRollDegrees<br>floatThis is not currently supported
InitialViewVerticalFOVDegrees<br>floatThis is deprecated. Please use InitialVerticalFOVDegrees.
InitialVerticalFOVDegrees<br>floatYou can set the intial vertical FOV of the image. You can set either<br>this field or InitialHorizontalFOVDegrees.
InitialHorizontalFOVDegrees<br>floatYou can set the intial horizontal FOV of the image. You can set either<br>this field or InitialVerticalFOVDegrees.
PreProcessCropLeftPixels<br>int64
PreProcessCropRightPixels<br>int64
sponsor_id<br>numeric string or integerFacebook Page id that is tagged as sponsor in the photo post
sponsor_relationship<br>int64Sponsor Relationship, such as Presented By or Paid PartnershipWith
tags<br>list<Object>Tags on this photo
x<br>floatThe x-axis offset for the tag
y<br>floatThe y-axis offset for the tag
tag_uid<br>intThe user_id of the tagged person
tag_text<br>stringText associated with the tag
target_id<br>intDon't use this. Specifying a target_id allows you to post the photo to an object that's not the user in the access token. It only works when posting directly to the /photos endpoint. Instead of using this parameter you should be using the edge on an object directly, like /page/photos.
targeting<br>targetAllows you to target posts to specific audiences. Applies to Pages only
geo_locations<br>Object
countries<br>list<string>
regions<br>list<Object>
key<br>int64
cities<br>list<Object>
key<br>int64
zips<br>list<Object>
key<br>string
locales<br>list<string>
excluded_countries<br>list<string>
excluded_regions<br>list<int64>
excluded_cities<br>list<int64>
excluded_zipcodes<br>list<string>
timezones<br>list<int64>
age_min<br>enum {13, 15, 18, 21, 25}
time_since_original_post<br>int64Same as backdated_time but with a time delta instead of absolute time
uid<br>intDeprecated
unpublished_content_type<br>enum {SCHEDULED, SCHEDULED_RECURRING, DRAFT, PUBLISH_PENDING, ADS_POST, INLINE_CREATED, PUBLISHED, REVIEWABLE_BRANDED_CONTENT}Content type of the unpublished content type
url<br>stringThe URL of a photo that is already uploaded to the Internet. You must specify this or a file attachment
user_selected_tags<br>booleanDefault value: false<br>User selected tags
vault_image_id<br>numeric string or integerA vault image ID to use for a photo. You can use only one of url, a file attachment, vault_image_id, or sync_object_uuid

Return Type

This endpoint supports read-after-write and will read the node represented by id in the return type.

Struct {

id: numeric string,

post_id: token with structure: Post ID,

}

Error Codes

ErrorDescription
190Invalid OAuth 2.0 Access Token
368The action attempted has been deemed abusive or is otherwise disallowed
200Permissions error
100Invalid parameter
220Album or albums not visible
324Missing or invalid image file

Updating

You can't perform this operation on this endpoint.

Deleting

An app can delete any photos it published, or a page-management app can delete a Photo published to a page that the app manages.

Permissions

  • To delete a User's photo, a User access token with publish_actions permission is required.

  • To delete a Page's photo a Page access token and publish_pages permission is required.

  • To delete a User's photo on a Page a Page access token is required.

You can delete a Photo by making a DELETE request to /{photo_id}.

Parameters

This endpoint doesn't have any parameters.

Return Type

Struct {

success: bool,

}

Error Codes

ErrorDescription
100Invalid parameter
190Invalid OAuth 2.0 Access Token
368The action attempted has been deemed abusive or is otherwise disallowed
200Permissions error