---
title: "Upload an image"
method: POST
path: "/v1/images"
tags: ["Images"]
---

# Upload an image

`POST /v1/images`

## Request

- Base URL: `https://api.navigateai.co`
- URL: `https://api.navigateai.co/v1/images`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/navigate/apis/navigateai-api/docs/v1/images/post.ts> (a function with typed inputs; its response is checked against the schema)

## Request body `multipart/form-data`

- object
  - `image` string, binary, required: A JPEG, PNG, WebP or GIF image of 50 MB or less.
  - `reference_key` string, required: Your identifier for the image, unique within your organization, at most 255 characters. Surrounding whitespace is removed. An upload with a `reference_key` that already exists returns the existing image and does not upload again.

## Response `200`

OK

- UploadImageResponse
  - `image` ImageEvidenceExternalSchema, required
    - `type` 'image'
    - `image_id` string, required: Use with the Get Image endpoint to retrieve the image file.
    - `reference_key` string, nullable: For an image from Upload an image, the `reference_key` you sent. Images captured in the NavigateAI app can have a value that the app set.
    - `visit_id` string, nullable: The visit this image was captured during. Null for images from Upload an image.
    - `is_selected` boolean: Whether this image was explicitly selected as evidence.
    - `is_starred` boolean: Whether this image was starred as the primary evidence photo.

## Other responses

- `201`: Created

## Changes

- **2026-10-29** `912b48581de7`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/navigate/apis/navigateai-api/changes/v1/images/post.md)

---

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