canonical: https://jentic.com/apis/googleapis.com/streetviewpublish

# Google Street View Publish API

The Street View Publish API lets developers and AI agents upload, list, update, and delete user-contributed 360 photos and photo sequences on Google Maps. Single 360 photos and ordered photo sequences are uploaded via a startUpload-then-create flow that returns an upload URL the client streams content into. The API exposes batch operations for retrieving, updating, and deleting many photos at once, and supports attaching metadata such as capture time, place IDs, and connections that link adjacent photos.

## For AI agents

Upload, list, update, and delete user-contributed 360 photos and photo sequences on Google Maps Street View. Batch endpoints handle many photos in one call.

## Scope

Does not render maps, geocode addresses, or browse third-party Street View imagery - use for publishing and managing your own 360 photos on Google Maps only.

## Capabilities

- Upload a 360 photo via the startUpload session and create-photo flow
- Upload a 360 photo sequence (e.g. driven route) via startUpload for sequences
- List, get, update, and delete a single 360 photo on Google Maps
- Batch get, update, or delete many photos with one call
- Attach metadata - capture time, place IDs, heading - to a photo
- Connect adjacent photos to enable navigation between them in Street View

## Use cases

### Tourism Operator 360 Tours

A tourism operator publishes 360 photos of guided tour stops to Google Maps so prospective visitors can preview each location. The Street View Publish API exposes photo:startUpload to obtain an upload URL, then photo POST to register the uploaded image with capture time, lat/lng, and place ID metadata so the photo appears on the right map listing.

Example prompt: POST /v1/photo:startUpload, stream the JPEG to the returned URL, then POST /v1/photo with the upload reference, captureTime, and placeIds=['ChIJabc'].

### Vehicle-Captured Sequence Upload

A surveyor uploads a continuous 360 photo sequence captured from a roof-mounted rig along a driven route. The Street View Publish API exposes photoSequence:startUpload to allocate a sequence-scoped upload URL, after which POST /v1/photoSequence registers the sequence with route metadata. Long-running processing happens server-side and is polled via GET /v1/photoSequence/{sequenceId}.

Example prompt: POST /v1/photoSequence:startUpload, upload the GPMF-tagged video, POST /v1/photoSequence with the upload reference, then poll GET /v1/photoSequence/{sequenceId} until processing completes.

### Bulk Place ID Re-Tagging

Re-tag a backlog of previously uploaded 360 photos with corrected Google Place IDs after a place merge. The API exposes POST /v1/photos:batchUpdate, which accepts up to 20 photo updates per call so the entire backlog can be re-tagged with a small number of batched requests.

Example prompt: POST /v1/photos:batchUpdate with updatePhotoRequests=[{photo: {photoId: 'p1', places: [{placeId: 'ChIJxyz'}]}, updateMask: 'places'}, ...].

### AI Agent 360 Photo Curation

An AI agent assigned to curate a customer's published 360 photo set lists the customer's photos via Jentic, identifies any that lack place IDs, then issues a batch update to enrich them. Through Jentic, the agent searches for the photos.list and photos.batchUpdate operations, loads each schema, and executes - credentials never enter the agent context.

Example prompt: Search Jentic for 'list my Street View photos', call GET /v1/photos, identify those with no places set, then POST /v1/photos:batchUpdate to attach the resolved place IDs.

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| POST | /v1/photo:startUpload | Start an upload session for a 360 photo |
| POST | /v1/photo | Create a 360 photo record from an uploaded asset |
| GET | /v1/photo/{photoId} | Get a 360 photo by ID |
| GET | /v1/photos | List the caller's 360 photos |
| POST | /v1/photos:batchUpdate | Batch update many photos in one call |
| POST | /v1/photos:batchDelete | Batch delete many photos in one call |
| POST | /v1/photoSequence:startUpload | Start an upload session for a 360 photo sequence |
| POST | /v1/photoSequence | Create a 360 photo sequence record from an uploaded asset |

## Key resources

- **photo** — Start an upload, create, get, update, and delete a single 360 photo.
- **photos** — List, batch get, batch update, and batch delete 360 photos.
- **photoSequence** — Start an upload, create, get, and delete a 360 photo sequence.
- **photoSequences** — List 360 photo sequences belonging to the authenticated user.

## Why Jentic

- **Setup:** Wiring the Street View Publish API by hand means setting up Google OAuth, requesting the streetviewpublish scope, driving the resumable startUpload flow, and refreshing tokens yourself. Through Jentic you install once, import the Street View Publish API from the API Directory, store the OAuth credential once, and your agent calls it.
- **Permission scoping:** This API acts on the photos in your own authenticated Street View account, so scope by operation rather than by a single photo: limit the agent to the operations it needs, such as photo:startUpload and photos.list. You choose the operations it may call, so destructive ones like photos:batchDelete are not included unless you add them.
- **Credential handling:** Your Street View Publish OAuth credential is stored once, encrypted, by your own Jentic One instance and injected at execution time. It never enters the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'upload a 360 photo to Street View' or 'list my Street View photos', and Jentic returns the matching Street View Publish operation with its input schema so the agent calls the right endpoint without browsing the reference docs.

## Related APIs

- **Google Places API** — Places returns the place IDs that Street View Publish photos can be tagged with.
- **Google Drive API** — Drive can store the source 360 JPEGs and videos before they are streamed to a Street View upload URL.
- **Cloud Storage JSON API** — Cloud Storage holds raw 360 media for backend pipelines; Street View Publish exposes only public Google Maps publishing.

## FAQ

### What authentication does the Street View Publish API use?

The Street View Publish API uses OAuth 2.0 with the streetviewpublish scope, on behalf of the user that owns the published photos. Through Jentic, OAuth credentials are stored in your Jentic One instance and exchanged for short-lived access tokens, so refresh tokens never enter the agent context.

### Can I upload a 360 photo with the Street View Publish API?

Yes. The flow is two calls: POST /v1/photo:startUpload returns an upload URL the client streams the JPEG to; then POST /v1/photo with the upload reference plus metadata (captureTime, lat/lng, place IDs) registers the photo on Google Maps.

### What are the rate limits for the Street View Publish API?

Default project quotas allow several hundred requests per minute, with batch endpoints accepting up to 20 photos per call to keep large updates within budget. Quotas can be inspected and raised in the Google Cloud Console under IAM and admin > Quotas.

### How do I publish a 360 photo through Jentic?

Search Jentic for 'upload a 360 photo to Street View', load the photo:startUpload and photo create schemas, and execute. The agent first calls POST /v1/photo:startUpload, streams the photo to the returned URL, then calls POST /v1/photo with the upload reference and capture metadata.

### Is the Street View Publish API free?

The API is free to use for accounts publishing their own 360 content to Google Maps. Standard Google Cloud project quotas apply. There is no per-photo or per-call charge.

### Can I upload a video sequence rather than individual photos?

Yes. POST /v1/photoSequence:startUpload allocates an upload URL for a sequence (e.g. a 360 video with GPMF telemetry from a driven route). After the content is uploaded, POST /v1/photoSequence registers the sequence and Google processes it server-side into discrete connected photos.

### Can I limit what my agent is allowed to do with the Street View Publish API?

Yes. Because Jentic One is self-hosted, you control which Street View Publish operations your agent can call, and your own rules decide the credentials it uses. Since this API acts on the photos in your own authenticated Street View account, you scope by operation rather than by a single photo: grant only what the task needs, such as photo:startUpload and photos.list. Destructive operations like photos:batchDelete are excluded unless you explicitly add them.
