Download a submission attachment
GET/v1/flows/:flow_id/submissions/:submission_id/attachments/:attachment_id
Redirects (302, empty body) to a time-limited signed URL for the stored file — the same path a submission's attachments[].url field carries. 404s for a flow, submission, or attachment this key cannot see, or an attachment not yet stored (status other than stored) — all on the same terms as the other operations: no existence oracle. Requires the submissions:read scope.
Request
Responses
- 302
- 400
- 401
- 403
- 404
- 429
Redirects to a presigned download URL, valid for 15 minutes. No response body.
Response Headers
The presigned download URL.
A malformed flow_id, submission_id, or attachment_id (code: invalid_parameter).
Missing, malformed, unknown, revoked, or expired key — one body for all of them (code: unauthorized), with WWW-Authenticate: Bearer realm="hop".
The key lacks the scope (code: insufficient_scope), named in WWW-Authenticate: Bearer error="insufficient_scope", scope="…".
No such flow, submission, or attachment on it — or the attachment isn't stored yet. All answer identically (code: not_found): no existence oracle.
Over a bucket. Obey Retry-After (seconds); RateLimit-* fields are informational.
Response Headers
Requests allowed in the current window. Informational.
Requests left in the current window. Informational.
Seconds until the window resets. Informational.
Seconds to wait before retrying. The binding contract.