Generate a collated PDF for a given request and get a temporary download URL.
Authentication: Same as the rest of the API (API key e.g. Authorization: Basic <base64(apiKey:)> or ?api_key=..., or OAuth Bearer token). The authenticated user must have requests-download permission for the request.
Default export (templateId omitted): All uploaded documents for that request, in item order. Forms are not included.
Custom template (templateId set): Export follows the template (documents, static pages, PDFs, forms, order, "do not include if form has no answers", etc.). Template IDs are shown in the app in "Manage your PDF exports" (list and in the template detail modal when editing).
The client should use the returned url with a simple GET (e.g. redirect or fetch) to download the PDF. The link is valid for 15 minutes; after that a new export must be requested.
Query parameters
-
ID of the export template to use. If omitted, the default export is used (all uploaded documents in item order, no forms). Custom template IDs are shown in the app in "Manage your PDF exports".
Responses
-
Pre-signed URL to download the generated PDF.
-
Nothing to export (e.g. template results in an empty list, or export not supported for this storage).
-
Unauthorized -- Your API key is wrong.
-
Forbidden — user not allowed to download this request (e.g. missing requests-download permission).
-
Not found — invalid or unknown requestId, or template not found when templateId is provided.
-
Too Many Requests -- You're requesting too many objects! Slow down!
-
Server or Lambda error during export or URL generation.
-
Service Unavailable -- We're temporarily offline for maintenance. Please try again later.
curl \
--request GET 'https://api.usecollect.com/v1/requests/{requestId}/export' \
--user "username:password"
{
"url": "https://collecttempseu.s3.eu-west-3.amazonaws.com/export-abc123.pdf?X-Amz-Algorithm=...",
"expiresIn": 900
}
{
"error": 400,
"message": "string"
}
{
"error": 403,
"message": "Forbidden"
}
{
"error": 404,
"message": "string"
}
{
"error": 500,
"message": "string"
}