Check Upload Status
curl --request GET \
--url https://api.lobstr.io/v1/tasks/upload/{upload_task_id} \
--header 'Authorization: <authorization>'import requests
url = "https://api.lobstr.io/v1/tasks/upload/{upload_task_id}"
headers = {"Authorization": "<authorization>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<authorization>'}};
fetch('https://api.lobstr.io/v1/tasks/upload/{upload_task_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.lobstr.io/v1/tasks/upload/{upload_task_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: <authorization>"
],
]);
$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.lobstr.io/v1/tasks/upload/{upload_task_id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<authorization>")
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.lobstr.io/v1/tasks/upload/{upload_task_id}")
.header("Authorization", "<authorization>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.lobstr.io/v1/tasks/upload/{upload_task_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<authorization>'
response = http.request(request)
puts response.read_body{
"id": "<string>",
"object": "<string>",
"state": "<string>",
"meta.duplicates": 123,
"meta.inserted": 123,
"meta.invalid": 123,
"meta.valid": 123
}Task
Check Upload Status
Monitor the status of a task upload operation
GET
/
v1
/
tasks
/
upload
/
{upload_task_id}
Check Upload Status
curl --request GET \
--url https://api.lobstr.io/v1/tasks/upload/{upload_task_id} \
--header 'Authorization: <authorization>'import requests
url = "https://api.lobstr.io/v1/tasks/upload/{upload_task_id}"
headers = {"Authorization": "<authorization>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<authorization>'}};
fetch('https://api.lobstr.io/v1/tasks/upload/{upload_task_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.lobstr.io/v1/tasks/upload/{upload_task_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: <authorization>"
],
]);
$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.lobstr.io/v1/tasks/upload/{upload_task_id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<authorization>")
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.lobstr.io/v1/tasks/upload/{upload_task_id}")
.header("Authorization", "<authorization>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.lobstr.io/v1/tasks/upload/{upload_task_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<authorization>'
response = http.request(request)
puts response.read_body{
"id": "<string>",
"object": "<string>",
"state": "<string>",
"meta.duplicates": 123,
"meta.inserted": 123,
"meta.invalid": 123,
"meta.valid": 123
}This endpoint checks the status of a task upload operation using the upload task ID returned from the Upload Tasks endpoint.
Headers
string
required
Your API authentication token. Value:
Token YOUR_API_KEYPath Parameters
string
required
The upload task ID returned from Upload Tasks endpoint. Example:
427a7bfc54cf4ce483d83ba23425164bResponse Field Explanations
string
Upload task identifier. Example:
"427a7bfc54cf4ce483d83ba23425164b"string
Always “task_upload”. Example:
"task_upload"string
Current upload state (PENDING, PROGRESS, SUCCESS, FAILURE). Example:
"SUCCESS"integer
Number of duplicate tasks skipped. Example:
0integer
Number of tasks successfully inserted. Example:
8integer
Number of invalid rows in the file. Example:
0integer
Number of valid rows processed. Example:
8State Values
| State | Description |
|---|---|
| PENDING | Upload task is queued and waiting to start |
| PROGRESS | File is being processed |
| SUCCESS | Upload completed successfully |
| FAILURE | Upload failed due to an error |
Poll this endpoint periodically until state is SUCCESS or FAILURE before running your squid.
Check meta.invalid to identify how many rows had issues. Review your CSV format if this number is high.
Don’t start a squid run until the upload state is SUCCESS, or you may miss tasks.
Code Examples
curl -X GET "https://api.lobstr.io/v1/tasks/upload/427a7bfc54cf4ce483d83ba23425164b" \
-H "Authorization: Token YOUR_API_KEY"
import requests
import time
url = "https://api.lobstr.io/v1/tasks/upload/427a7bfc54cf4ce483d83ba23425164b"
headers = {
"Authorization": "Token YOUR_API_KEY"
}
# Poll until upload completes
while True:
response = requests.get(url, headers=headers)
data = response.json()
state = data['state']
print(f"Upload state: {state}")
if state == "SUCCESS":
print(f"Inserted: {data['meta']['inserted']} tasks")
print(f"Duplicates: {data['meta']['duplicates']}")
print(f"Invalid rows: {data['meta']['invalid']}")
break
elif state == "FAILURE":
print("Upload failed!")
break
else:
time.sleep(2) # Wait before polling again
Response
200
{
"id": "427a7bfc54cf4ce483d83ba23425164b",
"object": "task_upload",
"state": "SUCCESS",
"meta": {
"duplicates": 0,
"inserted": 8,
"invalid": 0,
"valid": 8
}
}
202
{
"id": "427a7bfc54cf4ce483d83ba23425164b",
"object": "task_upload",
"state": "PROGRESS",
"meta": null
}
404
{
"error": {
"message": "Upload task not found",
"type": "not_found_error",
"param": "upload_task_id"
}
}