Initiate a content upload#

Description#

Starts the process to upload content to a script source. The response body includes an uploadUrl. To upload the source contents, perform a PUT on the uploadUrl with the same authentication credentials and flow as the upload request. For more details, see Authentication documentation.

The response also includes a Location header (and an operationLocation field in the response body), which indicates where to poll for operation results. For more details on long-running job polling, see Operations endpoint.

POST /scripts/{scriptId}/sources/{sourceId}/contentUpload

Required OAuth Scopes

file:write

Parameters#

Parameter

In

Type

Required

Description

X-Version

header

string

true

Version of the API (2026-09-01.scripting.preview)

scriptId

path

string

true

The unique identifier of the script

sourceId

path

string

true

The unique identifier of the source

Code Samples#

curl -X POST https://api.app.wdesk.com/scripts/{scriptId}/sources/{sourceId}/contentUpload \
    -H 'Accept: application/json' \
    -H 'Authorization: Bearer {access-token}' \
    -H 'X-Version: 2026-09-01.scripting.preview'
http POST https://api.app.wdesk.com/scripts/{scriptId}/sources/{sourceId}/contentUpload \
    X-Version:2026-09-01.scripting.preview \
    Accept:application/json \
    Authorization:"Bearer {access-token}"
wget --method=POST "https://api.app.wdesk.com/scripts/{scriptId}/sources/{sourceId}/contentUpload" \
    --output-document - \
    --header 'Accept: application/json' \
    --header 'Authorization: Bearer {access-token}' \
    --header 'X-Version: 2026-09-01.scripting.preview'
import requests

headers = {
  'X-Version': '2026-09-01.scripting.preview',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('https://api.app.wdesk.com/scripts/{scriptId}/sources/{sourceId}/contentUpload', headers = headers)

print(r.headers['Location'])

Returns#

202 - Accepted#

Contains a presigned URL that can be used to upload content to a source. The Location header also contains a URL for an Operation that can be polled to find out if the upload was successful.

Header

Description

Location

The location to poll for the operation result.

Retry-After

The number of seconds to wait before polling for a result and between polling attempts.

400 - Bad Request#

Error response that indicates that the service is not able to process the incoming request. The reason is provided in the error message.

401 - Unauthorized#

Error response that indicates that the service is not able to process the incoming request. The reason is provided in the error message.

403 - Forbidden#

Error response that indicates that the service is not able to process the incoming request. The reason is provided in the error message.

404 - Not Found#

Error response that indicates that the service is not able to process the incoming request. The reason is provided in the error message.

429 - Too Many Requests#

Error response that indicates that the service is not able to process the incoming request. The reason is provided in the error message.

500 - Internal Server Error#

Error response that indicates that the service is not able to process the incoming request. The reason is provided in the error message.

503 - Service Unavailable#

Error response that indicates that the service is not able to process the incoming request. The reason is provided in the error message.

Example Responses#

{
  "uploadUrl": "<presigned_url>"
}
{
  "code": "400BadRequest",
  "message": "The request was unacceptable, often due to a missing or invalid parameter"
}
{
  "code": "401Unauthorized",
  "message": "No valid API token provided"
}
{
  "code": "403Forbidden",
  "message": "The API token does not have permissions to perform the request"
}
{
  "code": "404NotFound",
  "message": "The requested resource could not be found"
}
{
  "code": "429TooManyRequests",
  "message": "Too many requests have been made against the API in too short a time"
}
{
  "code": "500InternalServerError",
  "message": "The server encountered an unexpected condition that prevented it from fulfilling the request"
}
{
  "code": "503ServiceUnavailable",
  "message": "The server cannot handle the request due to a temporary overload or scheduled maintenance"
}