---
title: "Upload an image"
method: POST
path: "/api/v1/uploads"
tags: ["Orders"]
---

# Upload an image

`POST /api/v1/uploads`

## Request

- Base URL: `https://spoofy.social`
- URL: `https://spoofy.social/api/v1/uploads`
- Auth: one of:
  - HTTP bearer
  - API key in cookie `better-auth.session_token`

An image for a done-for-you order (logo, banner): multipart field `file`, or the raw bytes with an image Content-Type. PNG, JPG, WEBP or GIF up to 4 MB. Send the returned `id` in the order’s `details`; an upload no order uses is deleted after a day.

## Response `201`

Stored.

- object
  - `upload` Upload
    - `id` string: Send it in an order’s `details` for an image field.
    - `mime` 'image/png' | 'image/jpeg' | 'image/webp' | 'image/gif'
    - `size` integer: Bytes.
    - `width` integer
    - `height` integer

## Other responses

- `400`: The request is not valid. `error.message` says why.
- `401`: No valid API key or session.
- `403`: Refused by this key's safety rails (scope, platforms, caps) or session-only.
- `413`: The request body is too big (uploads up to 4 MB, everything else up to 64 KB).
- `429`: Slow down: too many requests in a short time. Wait `Retry-After` seconds and carry on.

---

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