curl --request GET \
--url https://api.eu.linqalpha.com/v1/documents/batch_presigned_urls \
--header 'X-API-KEY: <api-key>'import requests
url = "https://api.eu.linqalpha.com/v1/documents/batch_presigned_urls"
headers = {"X-API-KEY": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-KEY': '<api-key>'}};
fetch('https://api.eu.linqalpha.com/v1/documents/batch_presigned_urls', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.eu.linqalpha.com/v1/documents/batch_presigned_urls",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-KEY: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.eu.linqalpha.com/v1/documents/batch_presigned_urls"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-KEY", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.eu.linqalpha.com/v1/documents/batch_presigned_urls")
.header("X-API-KEY", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.eu.linqalpha.com/v1/documents/batch_presigned_urls")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-KEY"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"error": null,
"payload": {
"documents": [
{
"id": "123e4567-e89b-12d3-a456-426614174000",
"ticker": "AAPL",
"doc_type": "filing",
"doc_sub_type": "10-K",
"name": "Q4 2024 Apple Inc.",
"fiscal_date": "2024-12-31",
"calendar_date": "2025-01-30",
"published_at": "2025-01-30T16:00:00Z",
"presigned_url": "https://linq-vertex-documents.s3.amazonaws.com/..."
}
],
"total_count": 42,
"page": 1,
"per_page": 20,
"has_more": false,
"skipped_count": 3
}
}{
"error": {
"code": "TICKERS_MISSING",
"msg": "ticker query parameter is required",
"message": "ticker query parameter is required"
},
"payload": null
}{
"error": {
"code": "API_KEY_MISSING",
"msg": "header does not contain api key",
"message": "header does not contain api key"
},
"payload": null
}Batch Presigned URLs
Legacy in the EU region. This endpoint is kept for backward compatibility and is not recommended for new EU integrations. Use Batch Presigned URLs V2 (GET /v2/documents/presigned_urls) instead.
Generates temporary presigned URLs for multiple documents in a single request.
Filter documents by ticker, document type, and date ranges. Returns paginated results with presigned URLs and document metadata.
This is useful when you need to download multiple source documents at once, rather than calling the single-document presigned URL endpoint repeatedly.
curl --request GET \
--url https://api.eu.linqalpha.com/v1/documents/batch_presigned_urls \
--header 'X-API-KEY: <api-key>'import requests
url = "https://api.eu.linqalpha.com/v1/documents/batch_presigned_urls"
headers = {"X-API-KEY": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-KEY': '<api-key>'}};
fetch('https://api.eu.linqalpha.com/v1/documents/batch_presigned_urls', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.eu.linqalpha.com/v1/documents/batch_presigned_urls",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-KEY: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.eu.linqalpha.com/v1/documents/batch_presigned_urls"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-KEY", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.eu.linqalpha.com/v1/documents/batch_presigned_urls")
.header("X-API-KEY", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.eu.linqalpha.com/v1/documents/batch_presigned_urls")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-KEY"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"error": null,
"payload": {
"documents": [
{
"id": "123e4567-e89b-12d3-a456-426614174000",
"ticker": "AAPL",
"doc_type": "filing",
"doc_sub_type": "10-K",
"name": "Q4 2024 Apple Inc.",
"fiscal_date": "2024-12-31",
"calendar_date": "2025-01-30",
"published_at": "2025-01-30T16:00:00Z",
"presigned_url": "https://linq-vertex-documents.s3.amazonaws.com/..."
}
],
"total_count": 42,
"page": 1,
"per_page": 20,
"has_more": false,
"skipped_count": 3
}
}{
"error": {
"code": "TICKERS_MISSING",
"msg": "ticker query parameter is required",
"message": "ticker query parameter is required"
},
"payload": null
}{
"error": {
"code": "API_KEY_MISSING",
"msg": "header does not contain api key",
"message": "header does not contain api key"
},
"payload": null
}Quick Start
curl --request GET \
--url 'https://api.eu.linqalpha.com/v1/documents/batch_presigned_urls?tickers=AAPL&per_page=20' \
--header 'X-API-KEY: <api-key>'
curl --request GET \
--url 'https://api.eu.linqalpha.com/v1/documents/batch_presigned_urls?tickers=AAPL&calendar_period[start_time][year]=2025&calendar_period[start_time][month]=1&calendar_period[end_time][year]=2025&calendar_period[end_time][month]=12' \
--header 'X-API-KEY: <api-key>'
curl --request GET \
--url 'https://api.eu.linqalpha.com/v1/documents/batch_presigned_urls?tickers=AAPL&tickers=MSFT&doc_sub_type=10-K&doc_sub_type=10-Q&per_page=50' \
--header 'X-API-KEY: <api-key>'
Authorizations
Query Parameters
Ticker symbol(s) to filter by. At least one ticker or stock_id is required. Use multiple tickers params for multiple tickers (e.g., ?tickers=AAPL&tickers=MSFT).
Stock ID(s) to filter by. Can be used instead of or together with tickers.
Document type filter (e.g., filing, earnings_call)
Document sub-type filter (e.g., 10-K, 10-Q, annual_report, press_release)
Fiscal period filter. Use nested object notation in the query string (e.g., fiscal_period[start_time][year]=2024&fiscal_period[start_time][quarter]=1).
Show child attributes
Show child attributes
Calendar period filter. Use nested object notation in the query string (e.g., calendar_period[start_time][year]=2025&calendar_period[start_time][month]=1).
Show child attributes
Show child attributes
Page number (default: 1)
x >= 1Number of results per page (default: 20, max: 200)
1 <= x <= 200