# UploadThing REST API API

> UploadThing REST API API on Apizie: 12 endpoints (Poll for server callback data. This is used to retrieve the data returned from `onUploadComplete` callback., Set server callback data. This is used to set the data returned from `onUploadComplete` callback., List files for the current app. Response is paginated., Rename files., …) returned as clean JSON through one API key. Send your own provider key in the x-upstream-key header. Call it over REST at https://www.apizie.tech/v1/open-data:uploadthing/{endpoint} or from Claude, ChatGPT and Cursor through the Apizie MCP server. Free plan: 1,000 requests a month.

- Project key: `open-data:uploadthing`
- Category: Open Data
- Status: byok
- Source: https://uploadthing.com
- Page: https://www.apizie.tech/api/open-data/uploadthing
- OpenAPI: https://www.apizie.tech/api/open-data/uploadthing/openapi.json

UploadThing is the easiest way to add file uploads to your full stack TypeScript application. Many services have tried to build a "better S3", but in our opinion, none found the right compromise of ownership,…

## Endpoints

### Poll for server callback data. This is used to retrieve the data returned from `onUploadComplete` callback.
`GET https://www.apizie.tech/v1/open-data:uploadthing/server-callback-get-data` (byok)

### Set server callback data. This is used to set the data returned from `onUploadComplete` callback.
`POST https://www.apizie.tech/v1/open-data:uploadthing/server-callback-set-data` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| x-uploadthing-version | string | yes | A semver parseable version string of the SDK calling the API |
| x-uploadthing-fe-package | string | no | Used for analytics, the package name of the frontend |
| x-uploadthing-be-adapter | string | no | Used for analytics, the name of the backend adapter |
| body | object | no | JSON request body |

### List files for the current app. Response is paginated.
`POST https://www.apizie.tech/v1/open-data:uploadthing/file-list-files` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| x-uploadthing-version | string | yes | A semver parseable version string of the SDK calling the API |
| x-uploadthing-fe-package | string | no | Used for analytics, the package name of the frontend |
| x-uploadthing-be-adapter | string | no | Used for analytics, the name of the backend adapter |
| body | object | no | JSON request body |

### Rename files.
`POST https://www.apizie.tech/v1/open-data:uploadthing/file-rename-files` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| x-uploadthing-version | string | yes | A semver parseable version string of the SDK calling the API |
| x-uploadthing-fe-package | string | no | Used for analytics, the package name of the frontend |
| x-uploadthing-be-adapter | string | no | Used for analytics, the name of the backend adapter |
| body | object | no | JSON request body |

### Mark files for deletion. The files will be deleted at the storage provider shortly after.
`POST https://www.apizie.tech/v1/open-data:uploadthing/file-mark-for-deletion` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| x-uploadthing-version | string | yes | A semver parseable version string of the SDK calling the API |
| x-uploadthing-fe-package | string | no | Used for analytics, the package name of the frontend |
| x-uploadthing-be-adapter | string | no | Used for analytics, the name of the backend adapter |
| body | object | no | JSON request body |

### Retrieve usage info for the app associated with the provided API key.
`POST https://www.apizie.tech/v1/open-data:uploadthing/usage-info-get-usage-info` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| x-uploadthing-version | string | yes | A semver parseable version string of the SDK calling the API |
| x-uploadthing-fe-package | string | no | Used for analytics, the package name of the frontend |
| x-uploadthing-be-adapter | string | no | Used for analytics, the name of the backend adapter |

### Complete a multipart upload. This will finalize the upload and make the file available for download.
`POST https://www.apizie.tech/v1/open-data:uploadthing/multipart-complete-upload` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| x-uploadthing-version | string | yes | A semver parseable version string of the SDK calling the API |
| x-uploadthing-fe-package | string | no | Used for analytics, the package name of the frontend |
| x-uploadthing-be-adapter | string | no | Used for analytics, the name of the backend adapter |
| body | object | no | JSON request body |

### Mark an upload as failed, or abort a multipart upload. This will free up resources and revert the storage…
`POST https://www.apizie.tech/v1/open-data:uploadthing/callback-mark-upload-failed` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| x-uploadthing-version | string | yes | A semver parseable version string of the SDK calling the API |
| x-uploadthing-fe-package | string | no | Used for analytics, the package name of the frontend |
| x-uploadthing-be-adapter | string | no | Used for analytics, the name of the backend adapter |
| body | object | no | JSON request body |

### Request a presigned GET url for a private file.
`POST https://www.apizie.tech/v1/open-data:uploadthing/file-request-presigned-url` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| x-uploadthing-version | string | yes | A semver parseable version string of the SDK calling the API |
| x-uploadthing-fe-package | string | no | Used for analytics, the package name of the frontend |
| x-uploadthing-be-adapter | string | no | Used for analytics, the name of the backend adapter |
| body | object | no | JSON request body |

### Request presigned URLs for file uploads through based on your file router. NOTE: This spec complies with SDK…
`POST https://www.apizie.tech/v1/open-data:uploadthing/upload-request-presigned-urls` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| x-uploadthing-version | string | yes | A semver parseable version string of the SDK calling the API |
| x-uploadthing-fe-package | string | no | Used for analytics, the package name of the frontend |
| x-uploadthing-be-adapter | string | no | Used for analytics, the name of the backend adapter |
| body | object | no | JSON request body |

### Request presigned URLs for file uploads without file routes. NOTE: This spec complies with SDK versions…
`POST https://www.apizie.tech/v1/open-data:uploadthing/file-request-presigned-urls` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| x-uploadthing-version | string | yes | A semver parseable version string of the SDK calling the API |
| x-uploadthing-fe-package | string | no | Used for analytics, the package name of the frontend |
| x-uploadthing-be-adapter | string | no | Used for analytics, the name of the backend adapter |
| body | object | no | JSON request body |

### Update the ACL for a list of files.
`POST https://www.apizie.tech/v1/open-data:uploadthing/acl-update-file-acl` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| x-uploadthing-version | string | yes | A semver parseable version string of the SDK calling the API |
| x-uploadthing-fe-package | string | no | Used for analytics, the package name of the frontend |
| x-uploadthing-be-adapter | string | no | Used for analytics, the name of the backend adapter |
| body | object | no | JSON request body |

## Example
```
curl "https://www.apizie.tech/v1/open-data:uploadthing/server-callback-get-data" \
  -H "x-api-key: $APIZIE_KEY" \
  -H "x-upstream-key: $PROVIDER_KEY"
```

## FAQ

### How do I call the UploadThing REST API API?
Create a free Apizie key, then send GET https://www.apizie.tech/v1/open-data:uploadthing/server-callback-get-data with the header x-api-key. Every endpoint returns { project, data, timestamp }.

### Is the UploadThing REST API API free on Apizie?
Yes. The Free plan includes 1,000 requests a month at 100 requests a minute, no credit card. UploadThing REST API itself also needs your own key from uploadthing.com.

### Can AI agents use the UploadThing REST API API?
Yes. Add the Apizie MCP server (https://www.apizie.tech/mcp) to Claude, ChatGPT, Cursor or VS Code, then ask in plain language. The agent calls run_scraper with project key open-data:uploadthing.

### What is the status of the UploadThing REST API API?
Needs your own provider key (bring your own key)
