---
search:
  tags:
    - Sources
    - POST
seo:
  description: >-
    Reserves a file Source and returns a scoped URL to upload the file to.
    Reference for the POST /v1/sources/uploads endpoint in the Jellypod API.
sidebar:
  label: Request a file upload
  badge: POST
title: Request a file upload
type: openapi-operation
---
Reserves a file Source and returns a scoped URL to upload the file to.

`POST /v1/sources/uploads`

**Request body** (`application/json`, required)

- `file_name` (string, required)
- `mime_type` (string, required)
- `prepare_visuals` (boolean) — Deprecated compatibility field. Source preparation is automatic.
- `size_bytes` (integer, required) — File size in bytes, up to 100 MB for all supported Source files.
- `title` (string)

Request body example:

```json
{
  "file_name": "string",
  "mime_type": "string",
  "prepare_visuals": false,
  "size_bytes": 1,
  "title": "string"
}
```

**Responses**

- `201` — Upload slot reserved. PUT raw file bytes to upload.url with the returned headers, then POST complete\_path. File content is processed asynchronously.
- `400` — Validation failed or malformed request.
- `401` — Missing or invalid API key.
- `403` — Authenticated, but this API key does not have access to this resource.
- `404` — Resource not found.
- `429` — Rate limit exceeded. Wait \`Retry-After\` seconds before retrying; \`RateLimit-Limit\`, \`RateLimit-Remaining\`, and \`RateLimit-Reset\` describe the window.
- `500` — Internal server error.
- `502` — The API could not enqueue the downstream asynchronous workflow.

Response example, 201:

```json
{
  "data": {
    "complete_path": "string",
    "source": {
      "created_at": "string",
      "error_message": "string",
      "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
      "metadata": null,
      "status": "string",
      "title": "string",
      "type": "string",
      "updated_at": "string"
    },
    "upload": {
      "expires_at": "2019-08-24T14:15:22Z",
      "headers": {
        "content-type": "string"
      },
      "method": "PUT",
      "url": "http://example.com"
    }
  }
}
```
