Get export
curl --request GET \
--url https://api.trydatadriver.com/v1/exports/{id}import requests
url = "https://api.trydatadriver.com/v1/exports/{id}"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.trydatadriver.com/v1/exports/{id}', 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.trydatadriver.com/v1/exports/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$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.trydatadriver.com/v1/exports/{id}"
req, _ := http.NewRequest("GET", url, nil)
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.trydatadriver.com/v1/exports/{id}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.trydatadriver.com/v1/exports/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_bodyEndpoints
Get export
Check on an export. Once complete, you get a signed download URL.
GET
/
v1
/
exports
/
{id}
Get export
curl --request GET \
--url https://api.trydatadriver.com/v1/exports/{id}import requests
url = "https://api.trydatadriver.com/v1/exports/{id}"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.trydatadriver.com/v1/exports/{id}', 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.trydatadriver.com/v1/exports/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$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.trydatadriver.com/v1/exports/{id}"
req, _ := http.NewRequest("GET", url, nil)
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.trydatadriver.com/v1/exports/{id}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.trydatadriver.com/v1/exports/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_bodyWhen you’d use this
Right afterPOST /v1/exports. Poll every few seconds until status
is completed, then download from download_url.
Path parameters
| Name | Type | Description |
|---|---|---|
id | string (required) | The export_id from POST /v1/exports. |
Request
curl https://api.trydatadriver.com/v1/exports/exp_a3f9b2c1d4e5f6g7 \
-H "Authorization: Bearer dd_a3f9b2c1d4e5f6g7h8i9j0"
Responses
Still working (200 RUNNING)
{
"export_id": "exp_a3f9b2c1d4e5f6g7",
"status": "running",
"progress_pct": 42,
"created_at": "2026-05-09T12:14:00Z"
}
Ready to download (200 COMPLETED)
{
"export_id": "exp_a3f9b2c1d4e5f6g7",
"status": "completed",
"row_count": 8421,
"byte_size": 932144,
"format": "csv",
"compression": "gzip",
"download_url": "https://xxx.supabase.co/storage/v1/object/sign/api-exports/exp_a3f9...csv.gz?token=...",
"url_expires_at":"2026-05-16T12:14:00Z",
"completed_at": "2026-05-09T12:16:38Z"
}
Failed (200 FAILED)
{
"export_id": "exp_a3f9b2c1d4e5f6g7",
"status": "failed",
"error": {
"code": "QUERY_TOO_BROAD",
"message": "Filter matches more than 10,000,000 rows. Add narrower constraints."
},
"failed_at": "2026-05-09T12:14:08Z"
}
Expired (410 GONE)
{
"error": {
"code": "EXPORT_EXPIRED",
"message": "This export expired on 2026-05-16T12:14:00Z. Please re-create.",
"request_id": "req_a3f9b2c1d4e5"
}
}
Downloading the file
Once you havedownload_url, just curl it. No auth header needed
— the URL is pre-signed:
curl -o leads.csv.gz "https://xxx.supabase.co/.../exp_a3f9...csv.gz?token=..."
gunzip leads.csv.gz
URL expires in 7 days. If you need it later, re-create the
export. Cheaper than us holding files forever.
⌘I