curl --request POST \
--url https://go.aiinsurance.io/api/v1/companies/{companyId}/files/download-urls \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"fileIds": [
"550e8400-e29b-41d4-a716-446655440001",
"550e8400-e29b-41d4-a716-446655440002"
]
}
'{
"downloadUrls": [
{
"fileId": "550e8400-e29b-41d4-a716-446655440001",
"url": "https://storage.googleapis.com/bucket/companies/.../files/...?X-Goog-Expires=900&X-Goog-Signature=...",
"expiresAt": "2026-07-23T09:30:00.000Z",
"fileName": "master-agreement.pdf",
"contentType": "application/pdf",
"byteSize": 482133
},
{
"fileId": "550e8400-e29b-41d4-a716-446655440002",
"url": "https://storage.googleapis.com/bucket/companies/.../files/...?X-Goog-Expires=900&X-Goog-Signature=...",
"expiresAt": "2026-07-23T09:30:00.000Z",
"fileName": "loss-runs.pdf",
"contentType": "application/pdf",
"byteSize": 118220
}
]
}Batch Download URLs
Get download links for up to 100 documents in one call, for example every
attachment on a claim. Use it instead of Get Download URL
(getCompanyFileDownloadUrl) when you need more than one file. Get the
file ids from List Files (listCompanyFiles) or List Folder Contents
(listFolderContents), then GET each returned url within 15 minutes.
Mints short-lived signed read URLs for a batch of ready files in one
round trip — the batch counterpart of
GET /files/{fileId}/download-url, for fetching an entity’s whole document
set at once. Fetch each file’s bytes with a plain GET of its url; the
bytes come straight from cloud storage, never through this API. Each URL is
signed with the requested content disposition and expires at expiresAt
(15 minutes) — request fresh ones instead of caching.
This is a POST because the id list is a request body, not a query string,
but it is a read: it mints nothing durable and records no audit entry.
All-or-nothing. If any requested file is missing, belongs to another
company, or is not ready (a pending upload), the WHOLE request is
rejected and NO URLs are returned — a mixed batch can never partially leak.
A missing or cross-company id is a 404; a not-ready file is a 409.
Batch size is capped at 100 ids. More than 100, or an empty fileIds
array, is a 400.
Always serves each file’s current version — this endpoint does not expose per-version pinning.
Required permission: file.download
curl --request POST \
--url https://go.aiinsurance.io/api/v1/companies/{companyId}/files/download-urls \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"fileIds": [
"550e8400-e29b-41d4-a716-446655440001",
"550e8400-e29b-41d4-a716-446655440002"
]
}
'{
"downloadUrls": [
{
"fileId": "550e8400-e29b-41d4-a716-446655440001",
"url": "https://storage.googleapis.com/bucket/companies/.../files/...?X-Goog-Expires=900&X-Goog-Signature=...",
"expiresAt": "2026-07-23T09:30:00.000Z",
"fileName": "master-agreement.pdf",
"contentType": "application/pdf",
"byteSize": 482133
},
{
"fileId": "550e8400-e29b-41d4-a716-446655440002",
"url": "https://storage.googleapis.com/bucket/companies/.../files/...?X-Goog-Expires=900&X-Goog-Signature=...",
"expiresAt": "2026-07-23T09:30:00.000Z",
"fileName": "loss-runs.pdf",
"contentType": "application/pdf",
"byteSize": 118220
}
]
}