---
title: "Upload an image"
method: POST
path: "/v1/forms/{form_id}/images"
tags: ["forms"]
---

# Upload an image

`POST /v1/forms/{form_id}/images`

## Request

- Base URL: `https://api.formcarry.com`
- URL: `https://api.formcarry.com/v1/forms/{form_id}/images`
- Auth: HTTP bearer

Uploads a logo and returns a URL. The upload does not change the form. You must put the response `url` into the corresponding field with a PATCH.

Send the request as `multipart/form-data` with two parts: `file`, the image, and `use`, where it will be shown.

| `use` | Put the returned `url` in |
|---|---|
| `self_email_notification_logo` | `self_email_notification.logo_url` (the email you get on every submission) |
| `auto_response_logo` | `auto_response.logo_url` (the reply the person who submitted receives) |
| `after_submit_logo` | `after_submit.page.logo_url` (the thank you page) |
| `after_submit_logo_dark` | `after_submit.page.logo_dark_url` (the thank you page in its dark look) |

Uploads need a paid plan. Images may be up to 5 MB.

`self_email_notification_logo` and `auto_response_logo` only accept PNG, JPEG or GIF because email clients do not display WebP or SVG. The thank you page placements take all five.

## Path parameters

- `form_id` string, required

## Response `201`

- UploadedImage
  - `url` string, required

## Other responses

- `400`: The image part is missing, not an image, of a format the placement does not take, or `use` is unknown.
- `401`: The request carried no usable key or token.
- `403`: The key is valid but may not upload here.
- `404`: No such form for this key.
- `413`: The image is larger than 5 MB.
- `429`: Slow down and retry after the Retry-After header.

---

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