For AI agents: a documentation index is available at the root level at /llms.txt and /llms-full.txt. Append /llms.txt to any URL for a page-level index, or .md for the markdown version of any page.
Go to app
DocumentationAPI Reference
DocumentationAPI Reference
  • API Reference
    • Introduction
    • Users
    • Taskflow
    • AI Task Builder
    • Studies
    • Representative sample studies
    • Filter Sets
    • Participant Groups
    • Custom Groups
    • Study Distribution
    • Submissions
    • Submission Feedback Upload
      • GETRequest a feedback upload URL
    • Bonuses
    • Messages
    • Workspaces
    • Projects
    • Surveys
    • Webhooks
    • Invitations
    • Reward Recommendations
    • Testing
    • Well Known Endpoints
Go to app
LogoLogo
On this page
  • Overview
  • Prerequisites
  • Step 1: Request an upload URL
  • Example request
  • Example response
  • Step 2: Upload your file
  • Supported file formats
  • Best practices
  • Support
API Reference

Uploading submission feedback files

|View as Markdown|Open in Claude|
Was this page helpful?
Previous

Bulk approve submissions

Next

Request a feedback upload URL

This guide explains how to use the Submission Feedback Upload API to submit feedback files for your completed studies.

Overview

The Submission Feedback Upload API lets you upload feedback files in any schema for a pain-free experience. Uploading follows a secure two-step process:

  1. Request a pre-signed upload URL.
  2. Upload your file directly to the provided upload URL.

This approach enables secure and efficient file transfers while supporting a range of file formats for your research feedback, namely CSV, XLS, XLSX, JSON, TXT and PDF.

Prerequisites

  • A Prolific researcher account with API access.
  • Your API token.
  • The feedback file you wish to upload.

Step 1: Request an upload URL

To begin the upload process, request a secure upload URL by sending a GET request to the endpoint below.

$GET /api/v1/submissions/signals/upload-url/{filename}?workspace_id={id}
ParameterInDescription
filenamepathThe name of the file you want to upload, including its extension (e.g. participant_feedback.csv).
workspace_idqueryYour Prolific workspace ID.

Example request

$curl -X GET \
> -H "Authorization: Token YOUR_API_TOKEN" \
> "https://api.prolific.com/api/v1/submissions/signals/upload-url/study123_feedback.csv?workspace_id=6278acb09062db3b35bcb123"

Example response

1{
2 "expires_at": "2025-05-15T11:11:14.321Z",
3 "http_method": "PUT",
4 "upload_url": "https://submission-signals.s3.amazonaws.com/study123_feedback.csv?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=..."
5}

The response includes a temporary, pre-signed upload_url that you use in the next step.

Step 2: Upload your file

After receiving the upload URL, upload your file directly to it with an HTTP PUT request.

$curl -X PUT \
> --upload-file "/path/to/your/participant_feedback.csv" \
> "https://submission-signals.s3.amazonaws.com/study123_feedback.csv?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=..."

For successful uploads, you’ll receive an HTTP 200 OK response with an empty body.

The PUT request must not include an Authorization header. The upload URL is already authenticated by its query-string signature; sending your API token as well will cause the upload to fail. Your API token is only needed for Step 1.

Use the upload_url exactly as returned. Some API clients (e.g. Postman, Bruno) re-encode query parameters, which corrupts the signature and results in an error. If in doubt, upload with curl as shown above — it sends the URL verbatim.

The pre-signed upload_url is temporary — it is valid for 20 minutes from when it was issued. Upload your file before the expires_at time in the response, otherwise request a new URL. Note that expires_at is in UTC, and an expired URL returns 403 Access Denied.

Supported file formats

The API supports the following file formats:

  • CSV
  • Excel spreadsheets (XLS, XLSX)
  • JSON files
  • TXT files
  • PDF files

If you would like to upload your feedback file in a format that isn’t currently supported, please get in touch.

Best practices

  1. File naming - use descriptive and consistent file naming conventions.
  2. File size - there is a maximum file size limit of 5GB. For files approaching this limit, consider compressing them or splitting them into multiple smaller files where possible.
  3. Token security - keep your API token secure and never share it in public repositories.
  4. Retries - consider implementing retry logic with exponential backoff for transient failures (e.g. network timeouts) when uploading large files.

Support

If you encounter any issues or have questions about the Submission Feedback Upload API, please contact our support team.