List a task's files under a path
One directory inside the task's working directory.
GET /tasks/{id}/files/list/{path}
curl --request GET \
--url https://{host}/api/tasks/{id}/files/list/{path} \
--header 'Authorization: Bearer <token>' \
--header 'X-Pinecone-Api-Version: <x-pinecone-api-version>'import requests
url = "https://{host}/api/tasks/{id}/files/list/{path}"
headers = {
"Authorization": "Bearer <token>",
"X-Pinecone-Api-Version": "<x-pinecone-api-version>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: "GET", headers: {"Authorization": "Bearer <token>", "X-Pinecone-Api-Version": "<x-pinecone-api-version>"}};
fetch("https://{host}/api/tasks/{id}/files/list/{path}", 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://{host}/api/tasks/{id}/files/list/{path}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"X-Pinecone-Api-Version: <x-pinecone-api-version>"
],
]);
$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://{host}/api/tasks/{id}/files/list/{path}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("X-Pinecone-Api-Version", "<x-pinecone-api-version>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://{host}/api/tasks/{id}/files/list/{path}")
.header("Authorization", "Bearer <token>")
.header("X-Pinecone-Api-Version", "<x-pinecone-api-version>")
.asString();require 'uri'
require 'net/http'
url = URI("https://{host}/api/tasks/{id}/files/list/{path}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
request["X-Pinecone-Api-Version"] = '<x-pinecone-api-version>'
response = http.request(request)
puts response.read_body{
"entries": [
{
"name": "<string>",
"kind": "<string>",
"size": 123,
"mtime": "<string>"
}
],
"total": 123,
"offset": 123,
"limit": 123,
"next_offset": 123
}{
"message": "<string>",
"code": "<string>"
}Authorizations
Section titled “Authorizations”AuthorizationstringrequiredSession token from POST /auth/login, sent as Authorization: Bearer <token>.
Headers
Section titled “Headers”X-Pinecone-Api-Version?stringDate-based contract version, echoed back on the same header. Omit for the default (2026-07); send unstable for the in-development surface. An unrecognized value is rejected with 400 unsupported_api_version.
Path Parameters
Section titled “Path Parameters”idstringrequiredTask id.
pathstringrequiredRelative path within the tree. Matches greedily, so it may contain /.
Query Parameters
Section titled “Query Parameters”offset?integerWhere the page starts. Source and knowledge listings echo it rather than applying it, since they return the whole directory in one page.
limit?integerMaximum entries in the page. Source and knowledge listings echo it rather than applying it, since they return the whole directory in one page.
Response
Section titled “Response”200 — Directory listing
Read after the task's files were archived.
entriesobject[]requiredThe directory's immediate children.
Show child attributes
namestringrequiredEntry name, not a full path.
kindstringrequiredWhether the entry is a file or a directory.
sizeintegerrequiredByte size. 0 for a directory.
mtimestringrequiredRFC3339 last-modified, or empty when the store reports none.
totalintegerrequiredEntries in the directory.
offsetintegerrequiredWhere this page starts.
limitintegerrequiredMaximum entries in this page.
next_offsetinteger | nullrequiredNull on the last page.