---
title: "[beta] Complete a fleet installer photo upload."
method: POST
path: "/fleet/installer/photo-uploads/complete"
tags: ["Beta APIs"]
---

# \[beta\] Complete a fleet installer photo upload.

`POST /fleet/installer/photo-uploads/complete`

## Request

- Base URL: `https://api.samsara.com`
- URL: `https://api.samsara.com/fleet/installer/photo-uploads/complete`
- Auth: HTTP bearer

Marks a fleet installer photo upload session as complete after the file bytes have been uploaded to S3. Triggers async processing of the photo. Poll GET /fleet/installer/photo-uploads to observe the final state.

 <b>Rate limit:</b> 100 requests/min (learn more about rate limits <a href="https://developers.samsara.com/docs/rate-limits" target="_blank">here</a>).

To use this endpoint, select **Write Devices** under the Devices category when creating or editing an API token. <a href="https://developers.samsara.com/docs/authentication#scopes-for-api-tokens" target="_blank">Learn More.</a>
 

 **Submit Feedback**: Likes, dislikes, and API feature requests should be filed as feedback in our <a href="https://forms.gle/zkD4NCH7HjKb7mm69" target="_blank">API feedback form</a>. If you encountered an issue or noticed inaccuracies in the API documentation, please <a href="https://www.samsara.com/help" target="_blank">submit a case</a> to our support team.

## Query parameters

- `id` string, required

## Response `200`

OK response.

- FleetInstallerPhotoUploadsPostFleetInstallerPhotoUploadCompleteResponseBody
  - `data` FleetInstallerPhotoUploadSessionResponseBody, required: A fleet installer photo upload session.
    - `contentMd5` string, required: Base64-encoded MD5 of the file bytes.
    - `createdAtTime` string, date-time, required: Session creation timestamp (RFC 3339).
    - `deviceId` string, required: Samsara device ID.
    - `fileFormatType` 'imageJpeg' | 'imagePng' | 'unknown', required: File format. Valid values: `imageJpeg`, `imagePng`, `unknown`
    - `fileName` string, required: Original file name supplied at session creation.
    - `hardwareType` 'vehicleGateway' | 'assetGateway' | 'camera' | 'cameraConnector' | 'environmentalMonitor' | 'assetTag' | 'trackingLabel' | 'unknown', required: Hardware category of the device. Valid values: `vehicleGateway`, `assetGateway`, `camera`, `cameraConnector`, `environmentalMonitor`, `assetTag`, `trackingLabel`, `unknown`
    - `id` string, required: Unique session UUID.
    - `photoType` 'installPhoto' | 'assetPhoto' | 'unknown', required: Purpose of the photo. Valid values: `installPhoto`, `assetPhoto`, `unknown`
    - `processingStatus` 'awaitingUpload' | 'processing' | 'finished' | 'unknown', required: Upload lifecycle state. Valid values: `awaitingUpload`, `processing`, `finished`, `unknown`
    - `sizeBytes` integer, required: File size in bytes.
    - `updatedAtTime` string, date-time, required: Timestamp of last state change (RFC 3339). Equals createdAtTime at session creation; updated when processingStatus changes.

## Other responses

- `401`: Unauthorized response.
- `404`: Not Found response.
- `405`: Method Not Allowed response.
- `413`: Content Too Large response.
- `429`: Too Many Requests response.
- `500`: Internal Server Error response.
- `501`: Not Implemented response.
- `502`: Bad Gateway response.
- `503`: Service Unavailable response.
- `504`: Gateway Timeout response.
- `default`: Bad Request response.

---

[API](https://skmtc.dev/samsara/apis/samsara-api.md) - [All operations](https://skmtc.dev/samsara/apis/samsara-api/llms.txt) - [OpenAPI document](https://skmtc.dev/samsara/apis/samsara-api/revisions/a9e35d4999be?raw)
