---
title: "POST /v1/photoSequence"
method: POST
path: "/v1/photoSequence"
tags: ["photoSequence"]
---

# POST /v1/photoSequence

`POST /v1/photoSequence`

After the client finishes uploading the PhotoSequence with the returned UploadRef, CreatePhotoSequence extracts a sequence of 360 photos from a video or Extensible Device Metadata (XDM, http://www.xdm.org/) to be published to Street View on Google Maps. `CreatePhotoSequence` returns an Operation, with the PhotoSequence Id set in the `Operation.name` field. This method returns the following error codes: * google.rpc.Code.INVALID_ARGUMENT if the request is malformed. * google.rpc.Code.NOT_FOUND if the upload reference does not exist.

## Query parameters

- `inputType` 'INPUT_TYPE_UNSPECIFIED' | 'VIDEO' | 'XDM'

## Request body

- PhotoSequence — A sequence of 360 photos along with metadata.
  - `gpsSource` 'PHOTO_SEQUENCE' | 'CAMERA_MOTION_METADATA_TRACK' — Input only. If both raw_gps_timeline and the Camera Motion Metadata Track (CAMM) contain GPS measurements, indicate which takes precedence.
  - `uploadReference` UploadRef — Upload reference for media files.
    - `uploadUrl` string — An upload reference should be unique for each user. It follows the form: "https://streetviewpublish.googleapis.com/media/user/{account_id}/photo/{upload_reference}"
  - `uploadTime` string, google-datetime — Output only. The time this photo sequence was created in uSV Store service.
  - `failureDetails` ProcessingFailureDetails — Additional details to accompany the ProcessingFailureReason enum. This message is always expected to be used in conjunction with ProcessingFailureReason, and the oneof value set in this message should match the FailureReason.
    - `insufficientGpsDetails` InsufficientGpsFailureDetails — Details related to ProcessingFailureReason#INSUFFICIENT_GPS.
      - `gpsPointsFound` integer — The number of GPS points that were found in the video.
    - `gpsDataGapDetails` GpsDataGapFailureDetails — Details related to ProcessingFailureReason#GPS_DATA_GAP. If there are multiple GPS data gaps, only the one with the largest duration is reported here.
      - `gapDuration` string, google-duration — The duration of the gap in GPS data that was found.
      - `gapStartTime` string, google-duration — Relative time (from the start of the video stream) when the gap started.
    - `notOutdoorsDetails` NotOutdoorsFailureDetails — Details related to ProcessingFailureReason#NOT_OUTDOORS. If there are multiple indoor frames found, the first frame is recorded here.
      - `startTime` string, google-duration — Relative time (from the start of the video stream) when an indoor frame was found.
    - `noOverlapGpsDetails` NoOverlapGpsFailureDetails — Details related to PhotoSequenceProcessingFailureReason#NO_OVERLAP_GPS.
      - `gpsStartTime` string, google-datetime — Time of first recorded GPS point.
      - `videoEndTime` string, google-datetime — End time of video.
      - `videoStartTime` string, google-datetime — Start time of video.
      - `gpsEndTime` string, google-datetime — Time of last recorded GPS point.
    - `imuDataGapDetails` ImuDataGapFailureDetails — Details related to ProcessingFailureReason#IMU_DATA_GAP. If there are multiple IMU data gaps, only the one with the largest duration is reported here.
      - `gapDuration` string, google-duration — The duration of the gap in IMU data that was found.
      - `gapStartTime` string, google-duration — Relative time (from the start of the video stream) when the gap started.
  - `processingState` 'PROCESSING_STATE_UNSPECIFIED' | 'PENDING' | 'PROCESSING' | 'PROCESSED' | 'FAILED' — Output only. The processing state of this sequence.
  - `imu` Imu — IMU data from the device sensors.
    - `accelMpsps` Measurement3d[] — The accelerometer measurements in meters/sec^2 with increasing timestamps from devices.
      - `captureTime` string, google-datetime — The timestamp of the IMU measurement.
      - `y` number, float — The sensor measurement in the y axis.
      - `x` number, float — The sensor measurement in the x axis.
      - `z` number, float — The sensor measurement in the z axis.
    - `magUt` Measurement3d[] — The magnetometer measurements of the magnetic field in microtesla (uT) with increasing timestamps from devices.
      - `captureTime` string, google-datetime — The timestamp of the IMU measurement.
      - `y` number, float — The sensor measurement in the y axis.
      - `x` number, float — The sensor measurement in the x axis.
      - `z` number, float — The sensor measurement in the z axis.
    - `gyroRps` Measurement3d[] — The gyroscope measurements in radians/sec with increasing timestamps from devices.
      - `captureTime` string, google-datetime — The timestamp of the IMU measurement.
      - `y` number, float — The sensor measurement in the y axis.
      - `x` number, float — The sensor measurement in the x axis.
      - `z` number, float — The sensor measurement in the z axis.
  - `sequenceBounds` LatLngBounds — A rectangle in geographical coordinates.
    - `northeast` LatLng — An object that represents a latitude/longitude pair. This is expressed as a pair of doubles to represent degrees latitude and degrees longitude. Unless specified otherwise, this object must conform to the WGS84 standard. Values must be within normalized ranges.
      - `latitude` number, double — The latitude in degrees. It must be in the range [-90.0, +90.0].
      - `longitude` number, double — The longitude in degrees. It must be in the range [-180.0, +180.0].
    - `southwest` LatLng — An object that represents a latitude/longitude pair. This is expressed as a pair of doubles to represent degrees latitude and degrees longitude. Unless specified otherwise, this object must conform to the WGS84 standard. Values must be within normalized ranges.
      - `latitude` number, double — The latitude in degrees. It must be in the range [-90.0, +90.0].
      - `longitude` number, double — The longitude in degrees. It must be in the range [-180.0, +180.0].
  - `filename` string — Output only. The filename of the upload. Does not include the directory path. Only available if the sequence was uploaded on a platform that provides the filename.
  - `captureTimeOverride` string, google-datetime — Optional. Absolute time when the photo sequence starts to be captured. If the photo sequence is a video, this is the start time of the video. If this field is populated in input, it overrides the capture time in the video or XDM file.
  - `rawGpsTimeline` Pose[] — Input only. Raw GPS measurements with increasing timestamps from the device that aren't time synced with each photo. These raw measurements will be used to infer the pose of each frame. Required in input when InputType is VIDEO and raw GPS measurements are not in Camera Motion Metadata Track (CAMM). User can indicate which takes precedence using gps_source if raw GPS measurements are provided in both raw_gps_timeline and Camera Motion Metadata Track (CAMM).
    - `latLngPair` LatLng — An object that represents a latitude/longitude pair. This is expressed as a pair of doubles to represent degrees latitude and degrees longitude. Unless specified otherwise, this object must conform to the WGS84 standard. Values must be within normalized ranges.
      - `latitude` number, double — The latitude in degrees. It must be in the range [-90.0, +90.0].
      - `longitude` number, double — The longitude in degrees. It must be in the range [-180.0, +180.0].
    - `altitude` number, double — Altitude of the pose in meters above WGS84 ellipsoid. NaN indicates an unmeasured quantity.
    - `roll` number, double — Roll, measured in degrees. Value must be >= 0 and <360. A value of 0 means level with the horizon. NaN indicates an unmeasured quantity.
    - `level` Level — Level information containing level number and its corresponding name.
      - `name` string — Required. A name assigned to this Level, restricted to 3 characters. Consider how the elevator buttons would be labeled for this level if there was an elevator.
      - `number` number, double — Optional. Floor number, used for ordering. 0 indicates the ground level, 1 indicates the first level above ground level, -1 indicates the first level under ground level. Non-integer values are OK.
    - `gpsRecordTimestampUnixEpoch` string, google-datetime — Time of the GPS record since UTC epoch.
    - `accuracyMeters` number, float — The estimated horizontal accuracy of this pose in meters with 68% confidence (one standard deviation). For example, on Android, this value is available from this method: https://developer.android.com/reference/android/location/Location#getAccuracy(). Other platforms have different methods of obtaining similar accuracy estimations.
    - `heading` number, double — The following pose parameters pertain to the center of the photo. They match https://developers.google.com/streetview/spherical-metadata. Compass heading, measured at the center of the photo in degrees clockwise from North. Value must be >=0 and <360. NaN indicates an unmeasured quantity.
    - `pitch` number, double — Pitch, measured at the center of the photo in degrees. Value must be >=-90 and <= 90. A value of -90 means looking directly down, and a value of 90 means looking directly up. NaN indicates an unmeasured quantity.
  - `failureReason` 'PROCESSING_FAILURE_REASON_UNSPECIFIED' | 'LOW_RESOLUTION' | 'DUPLICATE' | 'INSUFFICIENT_GPS' | 'NO_OVERLAP_GPS' | 'INVALID_GPS' | 'FAILED_TO_REFINE_POSITIONS' | 'TAKEDOWN' | 'CORRUPT_VIDEO' | 'INTERNAL' | 'INVALID_VIDEO_FORMAT' | 'INVALID_VIDEO_DIMENSIONS' | 'INVALID_CAPTURE_TIME' | 'GPS_DATA_GAP' | 'JUMPY_GPS' | 'INVALID_IMU' | 'INSUFFICIENT_IMU' | 'INSUFFICIENT_OVERLAP_TIME_SERIES' | 'IMU_DATA_GAP' | 'UNSUPPORTED_CAMERA' | 'NOT_OUTDOORS' | 'INSUFFICIENT_VIDEO_FRAMES' | 'INSUFFICIENT_MOVEMENT' | 'MAST_DOWN' | 'CAMERA_COVERED' — Output only. If this sequence has processing_state = FAILED, this will contain the reason why it failed. If the processing_state is any other value, this field will be unset.
  - `viewCount` string, int64 — Output only. The total number of views that all the published images in this PhotoSequence have received.
  - `distanceMeters` number, double — Output only. The computed distance of the photo sequence in meters.
  - `id` string — Output only. Unique identifier for the photo sequence. This also acts as a long running operation ID if uploading is performed asynchronously.
  - `photos` Photo[] — Output only. Photos with increasing timestamps.
    - `connections` Connection[] — Optional. Connections to other photos. A connection represents the link from this photo to another photo.
      - `target` PhotoId — Identifier for a Photo.
        - `id` string — A unique identifier for a photo.
    - `transferStatus` 'TRANSFER_STATUS_UNKNOWN' | 'NEVER_TRANSFERRED' | 'PENDING' | 'COMPLETED' | 'REJECTED' | 'EXPIRED' | 'CANCELLED' | 'RECEIVED_VIA_TRANSFER' — Output only. Status of rights transfer on this photo.
    - `mapsPublishStatus` 'UNSPECIFIED_MAPS_PUBLISH_STATUS' | 'PUBLISHED' | 'REJECTED_UNKNOWN' — Output only. Status in Google Maps, whether this photo was published or rejected.
    - `shareLink` string — Output only. The share link for the photo.
    - `thumbnailUrl` string — Output only. The thumbnail URL for showing a preview of the given photo.
    - `viewCount` string, int64 — Output only. View count of the photo.
    - `places` Place[] — Optional. Places where this photo belongs.
      - `placeId` string — Place identifier, as described in https://developers.google.com/places/place-id.
      - `languageCode` string — Output only. The language_code that the name is localized with. This should be the language_code specified in the request, but may be a fallback.
      - `name` string — Output only. The name of the place, localized to the language_code.
    - `captureTime` string, google-datetime — Optional. Absolute time when the photo was captured. When the photo has no exif timestamp, this is used to set a timestamp in the photo metadata.
    - `pose` Pose — Raw pose measurement for an entity.
      - `latLngPair` LatLng — An object that represents a latitude/longitude pair. This is expressed as a pair of doubles to represent degrees latitude and degrees longitude. Unless specified otherwise, this object must conform to the WGS84 standard. Values must be within normalized ranges.
        - `latitude` number, double — The latitude in degrees. It must be in the range [-90.0, +90.0].
        - `longitude` number, double — The longitude in degrees. It must be in the range [-180.0, +180.0].
      - `altitude` number, double — Altitude of the pose in meters above WGS84 ellipsoid. NaN indicates an unmeasured quantity.
      - `roll` number, double — Roll, measured in degrees. Value must be >= 0 and <360. A value of 0 means level with the horizon. NaN indicates an unmeasured quantity.
      - `level` Level — Level information containing level number and its corresponding name.
        - `name` string — Required. A name assigned to this Level, restricted to 3 characters. Consider how the elevator buttons would be labeled for this level if there was an elevator.
        - `number` number, double — Optional. Floor number, used for ordering. 0 indicates the ground level, 1 indicates the first level above ground level, -1 indicates the first level under ground level. Non-integer values are OK.
      - `gpsRecordTimestampUnixEpoch` string, google-datetime — Time of the GPS record since UTC epoch.
      - `accuracyMeters` number, float — The estimated horizontal accuracy of this pose in meters with 68% confidence (one standard deviation). For example, on Android, this value is available from this method: https://developer.android.com/reference/android/location/Location#getAccuracy(). Other platforms have different methods of obtaining similar accuracy estimations.
      - `heading` number, double — The following pose parameters pertain to the center of the photo. They match https://developers.google.com/streetview/spherical-metadata. Compass heading, measured at the center of the photo in degrees clockwise from North. Value must be >=0 and <360. NaN indicates an unmeasured quantity.
      - `pitch` number, double — Pitch, measured at the center of the photo in degrees. Value must be >=-90 and <= 90. A value of -90 means looking directly down, and a value of 90 means looking directly up. NaN indicates an unmeasured quantity.
    - `downloadUrl` string — Output only. The download URL for the photo bytes. This field is set only when GetPhotoRequest.view is set to PhotoView.INCLUDE_DOWNLOAD_URL.
    - `photoId` PhotoId — Identifier for a Photo.
      - `id` string — A unique identifier for a photo.
    - `uploadReference` UploadRef — Upload reference for media files.
      - `uploadUrl` string — An upload reference should be unique for each user. It follows the form: "https://streetviewpublish.googleapis.com/media/user/{account_id}/photo/{upload_reference}"
    - `uploadTime` string, google-datetime — Output only. Time when the image was uploaded.

## Response `200`

Successful response

---

[API](https://skmtc.net/google/apis/streetviewpublish.md) · [All operations](https://skmtc.net/google/apis/streetviewpublish/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/google/streetviewpublish/revisions/be96449e6f98/schema)
