Limited feature (only available with API)
The use of file uploads and the retrieval of attached files is only available for GC Forms users using an API integration to retrieve submitted data.
Getting access to the file upload feature
GC Forms has an application programming interface (API) that can be used to retrieve form responses programmatically, with machine-to-machine connections. The API data retrieval method is currently the only way people can include file upload components in their forms and retrieve files attached to form responses.
Consult our API technical documentation to find out how to set up your API integration for a form.
Creating a form that includes file uploads
There are some limitations in this initial release of the file upload, as a feature. This includes constraints when it comes to file formats, file size, and ability of end users to save progress.
- API data retrieval only
- Must integrate with data retrieval API.
- Cannot change delivery method, or delete API key once form is published.
- Allowable file types:
- Documents (pdf, txt, doc, docx)
- Images (jpg, jpeg, png)
- Spreadsheets (xls, xlsx, csv)
- File size limitations:
- 10 MB maximum per file
- 50 files within a repeating set
- Users saving a copy of their answers:
- Saving answers, either when in progress or once submitted, will not include the files uploaded themselves. If a user resumes filling the form later, they will need to re-upload the files uploaded so far.
To add file upload to a form you’re building:
- Create a form.
- In Settings > API integration, generate an API key.
- Work with a developer to integrate with API. See API documentation for how to proceed with authenticating, connecting to your target system, making various requests.
- Add a form element to your form and select the file upload component.
- Ensure your form also contains a question asking for contact information. (This is important in cases where you might need to follow up, if there is an issue with a file attached).
- Test and publish your form.
- Share your form and start receiving responses.
Retrieving files that were submitted within a form
The retrieval of files attached within submissions is only possible via the API data delivery method. The same storage conditions apply as for submission data, where GC Forms only temporarily keeps data and files until downloaded and confirmed.
Files are linked directly within responses accompanied by an attribute that shows whether scanning for malicious files detected any potential harm. It is your responsibility to check the isPotentiallyMalicious attribute before opening the linked files.
To retrieve files uploaded to a submitted form:
- Once set-up, your integrated target system will make an API call to retrieve responses. You will receive each submission as a raw JSON file that includes direct links to files, if attached.
- Note: These direct download links are only valid for 10 seconds for security reasons.
- As files are scanned upon being submitted, they may also be marked as potentially being malicious, based on the file scanning software. You must decide what to do with flagged files — whether to download those files or not if they include a flagged with a “malicious” or “bad” metadata attribute.
- Note: No file scanning software is perfect, take precautions when opening any files.
- Add some code for how to handle the encountering of
isPotentiallyMalicious:true - Access submission data and files attached in your system.
- Before confirming a response, ensure you’ve got access to all attached files. These file download links are only temporarily available, as they are valid for up to 10 seconds. If you have not received all files, redownload the same form submission to get new download links.
- Report a problem if there is one with file or data.
- Once you are confident that you indeed have all submission data and files submitted, confirm that all data has been transferred successfully.
- Responses and files will then be removed from GC Forms, after 30 days.
Example: Response data will look something like this:
{
"createdAt":1749476854628,
"status":"New",
"confirmationCode":"714dfe46-6fa1-4281-8d15-a39bcebc3c4f",
"answers":"{\"1\":\"Test1\",\"2\":\"form_attachments/2025-06-09/8b42aafd-09e9-44ad-9208-d3891a7858df/output.txt\",\"3\":\"form_attachments/2025-06-09/9064b3c7-eee5-4599-99c8-a257b2b5f37d/a0393b10-396c-4b8d-a97c-15394fddda86.jpg\",\"4\":\"form_attachments/2025-06-09/0c7c3414-05e2-4ae6-a825-683857e4c0c4/IMG_0441.jpeg\"}",
"checksum":"cc33cb49f6c088bf98b7315794db216e",
"attachments":[
{
"name":"output.txt",
"directLinkToFile":"https://s3-link...",
"isPotentiallyMalicious":true
"md5":"54b0c58c7ce9f2a8b551351102ee0938"
}
]
}