---
title: "Confirm a presigned upload and enforce the size limit"
method: POST
path: "/uploads/verify"
tags: ["Uploads"]
---

# Confirm a presigned upload and enforce the size limit

`POST /uploads/verify`

## Request

- Base URL: `https://www.sociahive.com/api/v1`
- URL: `https://www.sociahive.com/api/v1/uploads/verify`
- Auth: one of:
  - API key in header `X-API-Key`
  - OAuth 2 (authorization code, authorization URL `/api/oauth/authorize`, token URL `/api/oauth/token`, scopes: `uploads:write`)

Call after the PUT. The server reads the stored size; an object over the plan limit is deleted (413). The key must be one of the caller's.

## Request body

- VerifyUploadRequest
  - `key` string, required: The key returned by POST /uploads/presign.
  - `purpose` 'scheduler': `scheduler` when the file is post media: it is added to the media library (SCHEDULER_MEDIA_LIBRARY).
  - `filename` string: Display name in the media library.

## Response `200`

Upload verified

- VerifyUploadResponse
  - `verified` true, required
  - `size_bytes` integer, required: The stored size, read from storage.
  - `public_url` string, uri
  - `asset_id` string: The media library entry, when one was recorded.

## Other responses

- `400`: Bad request — invalid parameters
- `401`: Authentication required — provide X-API-Key or Bearer token
- `403`: Insufficient scope for this operation
- `413`: Uploaded object is over the plan limit; it was deleted
- `429`: Rate limit exceeded
- `500`: Internal server error

---

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