Get downloads for an order
/orders/{id}/downloadsCosts 1 rate-limit point · Rate limits
Retrieve a flat list of all downloadable files for an order. Each item includes pre-computed boolean flags indicating whether the download has expired, the download limit has been reached, access has been revoked, or the file is part of a preorder that hasn't been released yet.
The downloadable field is a master flag: it is true only when all
conditions are met (not expired, limit not reached, access not revoked,
preorder released).
When downloadable is true, the download_url field contains a
signed URL (for internal files) or the external URL. When downloadable
is false, download_url is null.
If PDF watermarking is enabled for the shop, calling this endpoint also
starts watermark generation for eligible PDFs that do not have it yet.
Watermarking is asynchronous: entries with watermark_status of
processing have a null download_url and should be polled until the
status becomes ready, at which point download_url points at the
watermarked copy of the file.
Path parameters
idstringRequiredThe order ID
Headers
X-Auth-TokenstringRequiredAPI key for authentication
Returns
order_idstringExample:3e84eb8d-e1d9-4e92-a4b2-a419c7f1122forder_namestringExample:#1001downloadsarray of objectsShow 20 child attributesHide child attributes
idstringUnique identifier for this download entry
product_namestringName of the product this file belongs to
file_namestringName of the file
file_typestringMIME type of the file
file_size_bytesintegerFile size in bytes (0 for external links and licence keys)
download_urlstring, nullableSigned download URL (for internal files) or external URL. When the file is watermarked and
watermark_statusisready, this points at the watermarked copy.nullwhendownloadableisfalseor whilewatermark_statusisprocessing.is_watermarkedbooleanWhether this file is personalised with the buyer's details by the shop's PDF watermarking settings
watermark_statusstringnot_applicablewhen the file is not watermarked,processingwhile the watermarked copy is being generated (download_urlisnull), andreadyoncedownload_urlserves the watermarked copy.One ofnot_applicableprocessingreadydownload_countintegerNumber of times this file has been downloaded for this order
download_limitinteger, nullableMaximum number of downloads allowed per file.
nullmeans unlimited.download_limit_reachedbooleanWhether the download limit has been reached
expires_atstring, nullableWhen the download expires.
nullmeans no expiration date is set.download_expiredbooleanWhether the download has expired based on the store's download limit days setting
access_revokedbooleanWhether access to this file has been revoked (e.g. due to refund or cancellation)
is_preorderbooleanWhether this file belongs to a preorder product
preorder_available_atstring, nullableWhen the preorder content becomes available.
nullif not a preorder.preorder_releasedbooleanWhether the preorder has been released (always
truefor non-preorder items)is_licence_keybooleanWhether this download is a licence key rather than a file
licence_keystring, nullableThe licence key value if this is a licence key type and one has been assigned.
nullotherwise.downloadablebooleanMaster flag indicating whether the file can be downloaded right now.
trueonly when: not expired, download limit not reached, access not revoked, and preorder released (if applicable).
Errors
Authentication failed
Resource not found
Rate limit exceeded
curl "https://app.filemonk.io/api/v1/external/orders/{id}/downloads" \
-H "X-Auth-Token: $FILEMONK_API_KEY"const res = await fetch("https://app.filemonk.io/api/v1/external/orders/{id}/downloads", {
headers: {
"X-Auth-Token": process.env.FILEMONK_API_KEY,
},
});
const data = await res.json();import os
import requests
res = requests.get(
"https://app.filemonk.io/api/v1/external/orders/{id}/downloads",
headers={"X-Auth-Token": os.environ["FILEMONK_API_KEY"]},
)
data = res.json()require "net/http"
require "json"
uri = URI("https://app.filemonk.io/api/v1/external/orders/{id}/downloads")
req = Net::HTTP::Get.new(uri, "X-Auth-Token" => ENV["FILEMONK_API_KEY"])
res = Net::HTTP.start(uri.host, uri.port, use_ssl: true) { |http| http.request(req) }
data = JSON.parse(res.body){
"order_id": "3e84eb8d-e1d9-4e92-a4b2-a419c7f1122f",
"order_name": "#1001",
"downloads": [
{
"id": "3e84eb8d-e1d9-4e92-a4b2-a419c7f1122f",
"product_name": "Digital Art Pack",
"file_name": "artwork-collection.zip",
"file_type": "application/zip",
"file_size_bytes": 52428800,
"download_url": "https://example.com",
"is_watermarked": true,
"watermark_status": "not_applicable",
"download_count": 2,
"download_limit": 5,
"download_limit_reached": true,
"expires_at": "2026-01-15T09:30:00Z",
"download_expired": true,
"access_revoked": true,
"is_preorder": true,
"preorder_available_at": "2026-01-15T09:30:00Z",
"preorder_released": true,
"is_licence_key": true,
"licence_key": "string",
"downloadable": true
}
]
}{
"error": "API key is required"
}{
"error": "Resource not found"
}