List and search files
get
https://api.imagekit.io
/v1/files
List and search file API
The
searchQuery
parameter can be used to apply advanced filters to your search.Basic usage
Using AND/OR operator
Grouping multiple queries
You can query based on a single field. For example:
createdAt > "7d"
This will return all files which are created in the last 7 days.
You can combine multiple conditions using the
AND
and OR
operators. For example:createdAt > "7d" AND name: "file-name"
This will return all files created within the last 7 days with name starting with
file-name
.You can use parenthesis
(
and )
to group multiple queries and create complex search filters. For example:(size < "1mb" AND width > 500) OR (tags IN ["summer-sale","banner"])
For example, let's say you have uploaded two files,
red-dress-summer.jpg
and red-dress-winter.jpg
in the media library.The name match is case-sensitive.
Exact match
Begins with match
To find a file or folder using the exact name, use the
=
operator. For example:name = "red-dress-summer.jpg"
This will only return the file with the name
red-dress-summer.jpg
.To find a file or folder using a prefix, you can use
:
operator. For example:name : "red-dress"
This will return both
red-dress-summer.jpg
and red-dress-winter.jpg
.You can filter using
createdAt
and updatedAt
to search based on the first uploaded or last modified time.createdAt
and updatedAt
accept ISO 8601 format string or relative unit.ISO 8601 format
Relative units
The API supports a string in the ISO 8601 format.
YYYY-MM-DD
- When no time is provided, it is set to 00:00:00 UTC by default.YYYY-MM-DDTHH:MM:SS
For example:
createdAt < 2020-01-01
createdAt < "2020-01-01T12:12:12"
The API supports relative time units, e.g.
1h
- one hour in the past2d
- two days in the past- Similarly
3w
,4m
, etc.
Example usage:
createdAt < 2d (createdAt should be before two days ago)
createdAt < 2w (createdAt should be before two weeks ago)
createdAt < 2m (createdAt should be before two months ago)
createdAt < 2y (createdAt should be before two years ago)
Every embedded metadata field must be prefixed with 'embeddedMetadata' and a period, and it must be enclosed within double quotes. For example,
"embeddedMetadata.Keywords" IN ["black"]
Every custom metadata field must be prefixed with 'customMetadata' and a period, and it must be enclosed within double-quotes. For example,
"customMetadata.description" IN ["black"]
Refer to the supported parameters table to see which embedded metadata values are supported and the corresponding supported operators and examples. The table also specifies the supported operators and examples corresponding to each custom metadata type.
Field | Supported Operators | Examples |
---|---|---|
name |
| Accepts a string value in quotes. For example: name = "red-dress.jpg" will return all
files & folders with the exact name red-dress.jpg .name: "red-dress" will return all files & folderswith a name starting with red-dress .name IN ["red-dress.jpg", "red-dress.png"] will returnall files & folders with the name either red-dress.jpg orred-dress.png .name NOT = "red-dress.jpg" will return all files and folderswith a name other than red-dress.jpg . |
tags |
| Accepts an array of string values. tags IN ["summer-collection", "sale"] will return all files that have either summer-collection or sale inside either the tags array or the AITags array.tags NOT IN ["big-banner"] will return all files that do not have big-banner inside neither the tags array nor the AITags array. |
type |
| Possible values are file , file-version or folder in quotes or in the array.type = "file" will only return files in the search result.
type = "file-version" will only return file versions in the search result.
type = "folder" will only return folders in the search result.
type IN ["file", "folder"] will return both files and folders in the search result. |
createdAt |
| Accepts a string value in ISO 8601 format or relative time units e.g 1h , 2d , 3w , or 4m .
createdAt > "2020-01-01" will return all files first uploaded
after 1 Jan 2020 at 00:00 hours in UTC.createdAt > "2020-01-01T12:12:12" will return all files first uploaded after 1 Jan 2020 12:12:12 hours in UTC.createdAt > "7d" will return all files first uploaded in the last 7 days. |
updatedAt |
| Accepts a string value in ISO 8601 format or relative time units e.g 1h , 2d , 3w , or 4m .
updatedAt > "2020-01-01" will return all files last modified
after 1 Jan 2020 at 00:00 hours in UTC.updatedAt > "2020-01-01T12:12:12" will return all files last modified after 1 Jan 2020 12:12:12 hours in UTC.updatedAt > "7d" will return all files last modified in the last 7 days. |
height |
| Accepts a numeric value e.g. 500 , 200 etc. This is only applicable for image-type assets.height > 200 will return all image files with a height greater than 200px.height <= 400 will return all image files with a height less than or equal to 400px. |
width |
| Accepts a numeric value e.g. 500 , 200 etc. This is only applicable for image-type assets.width > 200 will return all image files with a width greater than 200px.width <= 400 will return all image files with a width less than or equal to 400px. |
size |
| Accepts a numeric value e.g. 500 , 200 or string e.g. 1mb , 10kb etc.size > 1024 will return all assets with a file size greater than 1024 bytes.
size <= "1mb" will return all assets with a file size less than or equal to 1MB. |
format |
| Accepts a string value.
Allowed values are jpg , webp , png , gif , svg , avif , pdf , js , woff2 , woff , ttf , otf , eot , css , txt , mp4 , webm , mov , swf , ts , m3u8 , ico .format = "jpg" will return all JPG image files. |
private |
| Accepts a boolean value i.e. true or false without quotes.private = true will return all files marked as private during upload. |
published |
| Accepts a boolean value without quotes. private = false will return all files that are in draft or unpublished state. |
transparency |
| Accepts a boolean value i.e. true or false without quotes. This is only applicable to images.transparency = true will return all image files that have an alpha layer. However, the presence of the alpha layer does not guarantee transparency if all pixels in the alpha layer have the value 1. |
embeddedMetadata.LocationTaken |
| Accepts a location value in one of the supported types:
Note: All coordinates are in the format latitude,longitude |
embeddedMetadata.Keywords |
| Accepts an array of string values. "embeddedMetadata.Keywords" IN ["luxury", "dress"] will return all files that have either luxury or dress as one of the values in its Keywords field."embeddedMetadata.Keywords" NOT IN ["big-banner"] will return all files that do not have big-banner as one of the values in its Keywords field. |
embeddedMetadata.DateTimeOriginal |
| Accepts a string value in ISO 8601 format or relative time units e.g 1h , 2d , 3w , or 4m .
"embeddedMetadata.DateTimeOriginal" > "2020-01-01" will return all files with a value later than 1 Jan 2020 at 00:00 hours in UTC."embeddedMetadata.DateTimeOriginal" > "2020-01-01T12:12:12" will return all files with a value later than 1 Jan 2020 12:12:12 hours in UTC."embeddedMetadata.DateTimeOriginal" > "7d" will return all files with a value that lies in the last 7 days. |
Custom metadata Text type field |
| Accepts a string value in quotes. For example: "customMetadata.description" = "black cars" will return all files & folders with the description custom field exactly equal to black cars ."customMetadata.description": "red" will return all files & folders with the description custom field starting with red ."customMetadata.description" IN ["red cars", "black cars"] will return all files & folders with the description custom field either red cars orblack cars ."customMetadata.description" NOT = "red dress" will return all files and folderswith the description custom field other than red dress . |
Custom metadata Textarea type field |
| Accepts a string value in quotes. For example: "customMetadata.longDescription": "luxury" will return all files & folders with the longDescription custom field starting with luxury . |
Custom metadata Date type field |
| Accepts a string value in ISO 8601 format or relative time units e.g 1h , 2d , 3w , or 4m .
"customMetadata.purchaseDate" > "2020-01-01" will return all files with a purchaseDate value later than 1 Jan 2020 at 00:00 hours in UTC."customMetadata.purchaseDate" > "2020-01-01T12:12:12" will return all files with a purchaseDate value later than 1 Jan 2020 12:12:12 hours in UTC."customMetadata.purchaseDate" > "7d" will return all files with a purchaseDate value that lies in the last 7 days. |
Custom metadata Number type field |
| Accepts a numeric value e.g. 500 , 200.125 , etc."customMetadata.quantitySold" > 200 will return all items with a quantitySold value greater than 200."customMetadata.quantitySold" <= 400 will return all items with a quantitySold value less than or equal to 400. |
Custom metadata Boolean type field |
| Accepts a boolean value i.e. true or false without quotes."customMetadata.active" = true will return all items with an active value equal to true. |
Custom metadata SingleSelect type |
| Accepts boolean, numeric, or string values. "customMetadata.rating" = "excellent" will return all files with a rating value equal to excellent "customMetadata.rating" > 4.3 will return all files that have a numeric rating value that is greater than 4.3Note: certain operators will be valid only for certain types of values. For example, the >= operator will be valid only for numeric values. |
Custom metadata MultiSelect type |
| Accepts an array of boolean, numeric, or string values. "customMetadata.tuple" IN ["luxury", 500, true] will return all files that have either luxury or 500 or true as one of the values in its tuples field."customMetadata.tuples" NOT IN ["big-banner"] will return all files that do not have big-banner as one of the values in its tuples field. |
In case of an error, you will get an error code along with the error message. You will receive a
200
status code with the list of file object in the JSON-encoded response body on success.Here are some example requests to understand the API usage.
Fetch the first 10 files uploaded in the media library. To change the order, you can use
sort
option.cURL
Node.js
Python
PHP
Java
Ruby
Go
.Net
curl -X GET 'https://api.imagekit.io/v1/files?skip=0&limit=10' \
-u your_private_api_key:
var ImageKit = require("imagekit");
var imagekit = new ImageKit({
publicKey : "your_public_api_key",
privateKey : "your_private_api_key",
urlEndpoint : "https://ik.imagekit.io/your_imagekit_id/"
});
imagekit.listFiles({
skip : 0,
limit : 10
}, function(error, result) {
if(error) console.log(error);
else console.log(result);
});
from imagekitio import ImageKit
imagekit = ImageKit(
public_key='your_public_api_key',
private_key='your_private_api_key',
url_endpoint = 'https://ik.imagekit.io/your_imagekit_id/'
)
list_files = imagekit.list_files(options=ListAndSearchFileRequestOptions(skip=0, limit = 10))
print("List files-", "\n", list_files)
# Raw Response
print(list_files.response_metadata.raw)
# print the first file's ID
print(list_files.list[0].file_id)
use ImageKit\ImageKit;
$public_key = "your_public_api_key";
$your_private_key = "your_private_api_key";
$url_end_point = "https://ik.imagekit.io/your_imagekit_id";
$imageKit = new ImageKit(
$public_key,
$your_private_key,
$url_end_point
);
$listFiles = $imageKit->listFiles(array(
"skip" => 0,
"limit" => 10,
));
echo ("List files : " . json_encode($listFiles));
GetFileListRequest getFileListRequest = new GetFileListRequest();
getFileListRequest.setSkip("0");
getFileListRequest.setLimit("10");
ResultList resultList = ImageKit.getInstance().getFileList(getFileListRequest);
imagekitio = ImageKitIo::Client.new("your_private_key", "your_public_key", "your_url_endpoint")
list_files = imagekitio.list_files({skip: 0, limit: 10})
resp, err := ik.Media.Files(ctx, media.FilesParam{
Skip: 0,
Limit: 10,
})
var imagekit = new ImageKit({
publicKey : "your_public_api_key",
privateKey : "your_private_api_key",
urlEndpoint : "https://ik.imagekit.io/your_imagekit_id/"
});
GetFileListRequest model = new GetFileListRequest
{
Limit = 10,
Skip = 0
};
ResultList res = imagekit.GetFileListRequest(model);
List all files uploaded in the last 7 days with a file size greater than 2MB. We will use the following value for
searchQuery
parameter.createdAt >= "7d" AND size > "2mb"
cURL
Node.js
Python
PHP
Java
Ruby
Go
.Net
curl -X GET 'https://api.imagekit.io/v1/files' \
-G --data-urlencode "searchQuery=createdAt >= \"7d\" AND size > \"2mb\"" \
-u your_private_api_key:
var ImageKit = require("imagekit");
var imagekit = new ImageKit({
publicKey : "your_public_api_key",
privateKey : "your_private_api_key",
urlEndpoint : "https://ik.imagekit.io/your_imagekit_id/"
});
imagekit.listFiles({
searchQuery : 'createdAt >= "7d" AND size > "2mb"'
}, function(error, result) {
if(error) console.log(error);
else console.log(result);
});
from imagekitio import ImageKit
imagekit = ImageKit(
public_key='your_public_api_key',
private_key='your_private_api_key',
url_endpoint = 'https://ik.imagekit.io/your_imagekit_id/'
)
list_files = imagekit.list_files(options=ListAndSearchFileRequestOptions(search_query='createdAt >= "7d" AND size > "2mb"'))
print("List files-", "\n", list_files)
# Raw Response
print(list_files.response_metadata.raw)
# print the first file's ID
print(list_files.list[0].file_id)
use ImageKit\ImageKit;
$public_key = "your_public_api_key";
$your_private_key = "your_private_api_key";
$url_end_point = "https://ik.imagekit.io/your_imagekit_id";
$imageKit = new ImageKit(
$public_key,
$your_private_key,
$url_end_point
);
$listFiles = $imageKit->listFiles(array(
"searchQuery" => 'createdAt >= "7d" AND size > "2mb"',
));
echo ("List files : " . json_encode($listFiles));
GetFileListRequest getFileListRequest = new GetFileListRequest();
getFileListRequest.setSearchQuery("createdAt >= '7d' AND size > '2mb'");
ResultList resultList = ImageKit.getInstance().getFileList(getFileListRequest);
imagekitio = ImageKitIo::Client.new("your_private_key", "your_public_key", "your_url_endpoint")
list_files = imagekitio.list_files({search_query: 'createdAt >= "7d" AND size > "2mb"'})
resp, err := ik.Media.Files(ctx, media.FilesParam{
SearchQuery: "createdAt >= \"7d\" AND size > \"2mb\"",
})
var imagekit = new ImageKit({
publicKey : "your_public_api_key",
privateKey : "your_private_api_key",
urlEndpoint : "https://ik.imagekit.io/your_imagekit_id/"
});
GetFileListRequest model = new GetFileListRequest
{
SearchQuery = "createdAt >= \"7d\""
};
ResultList res = imagekit.GetFileListRequest(model);
List all files belonging to the
clothing
or accessories
categories using a custom metadata field called category
. The custom metadata schema for this field must have been defined first."customMetadata.category IN ["clothing", "accessories"]"
cURL
Node.js
Python
PHP
Java
Ruby
Go
.Net
curl -X GET 'https://api.imagekit.io/v1/files' \
-G --data-urlencode "searchQuery=\"customMetadata.category\" IN [\"clothing\", \"accessories\"]" \
-u your_private_api_key:
var ImageKit = require("imagekit");
var imagekit = new ImageKit({
publicKey : "your_public_api_key",
privateKey : "your_private_api_key",
urlEndpoint : "https://ik.imagekit.io/your_imagekit_id/"
});
imagekit.listFiles({
searchQuery : '"customMetadata.category" IN ["clothing", "accessories"]"'
}, function(error, result) {
if(error) console.log(error);
else console.log(result);
});
from imagekitio import ImageKit
imagekit = ImageKit(
public_key='your_public_api_key',
private_key='your_private_api_key',
url_endpoint = 'https://ik.imagekit.io/your_imagekit_id/'
)
list_files = imagekit.list_files(options=ListAndSearchFileRequestOptions(search_query='"customMetadata.category" IN ["clothing", "accessories"]"'))
print("List files-", "\n", list_files)
# Raw Response
print(list_files.response_metadata.raw)
# print the first file's ID
print(list_files.list[0].file_id)
use ImageKit\ImageKit;
$public_key = "your_public_api_key";
$your_private_key = "your_private_api_key";
$url_end_point = "https://ik.imagekit.io/your_imagekit_id";
$imageKit = new ImageKit(
$public_key,
$your_private_key,
$url_end_point
);
$listFiles = $imageKit->listFiles(array(
"searchQuery" => '"customMetadata.category" IN ["clothing", "accessories"]"',
));
echo ("List files : " . json_encode($listFiles));
GetFileListRequest getFileListRequest = new GetFileListRequest();
getFileListRequest.setSearchQuery("'customMetadata.category' IN ['clothing', 'accessories']'");
ResultList resultList = ImageKit.getInstance().getFileList(getFileListRequest);
imagekitio = ImageKitIo::Client.new("your_private_key", "your_public_key", "your_url_endpoint")
list_files = imagekitio.list_files({search_query: '"customMetadata.category" IN ["clothing", "accessories"]"'})
resp, err := ik.Media.Files(ctx, media.FilesParam{
SearchQuery: `"customMetadata.category" IN ["clothing", "accessories"]"`,
})
var imagekit = new ImageKit({
publicKey : "your_public_api_key",
privateKey : "your_private_api_key",
urlEndpoint : "https://ik.imagekit.io/your_imagekit_id/"
});
GetFileListRequest model = new GetFileListRequest
{
SearchQuery = '"customMetadata.category" IN ["clothing", "accessories"]"'
};
ResultList res = imagekit.GetFileListRequest(model);
List all files with a
DateTimeOriginal
value later than one year ago by using the embeddedMetadata.DateTimeOriginal
field. i.e. all files that were originally created within the last one year."embeddedMetadata.DateTimeOriginal" > "1y"
cURL
Node.js
Python
PHP
Java
Ruby
Go
.Net
curl -X GET 'https://api.imagekit.io/v1/files' \
-G --data-urlencode "searchQuery=\"embeddedMetadata.DateTimeOriginal\" > \"1y\"" \
-u your_private_api_key:
var ImageKit = require("imagekit");
var imagekit = new ImageKit({
publicKey : "your_public_api_key",
privateKey : "your_private_api_key",
urlEndpoint : "https://ik.imagekit.io/your_imagekit_id/"
});
imagekit.listFiles({
searchQuery : '"embeddedMetadata.DateTimeOriginal" > "1y"'
}, function(error, result) {
if(error) console.log(error);
else console.log(result);
});
from imagekitio import ImageKit
imagekit = ImageKit(
public_key='your_public_api_key',
private_key='your_private_api_key',
url_endpoint = 'https://ik.imagekit.io/your_imagekit_id/'
)
list_files = imagekit.list_files(options=ListAndSearchFileRequestOptions(search_query='"embeddedMetadata.DateTimeOriginal" > "1y"'))
print("List files-", "\n", list_files)
# Raw Response
print(list_files.response_metadata.raw)
# print the first file's ID
print(list_files.list[0].file_id)
use ImageKit\ImageKit;
$public_key = "your_public_api_key";
$your_private_key = "your_private_api_key";
$url_end_point = "https://ik.imagekit.io/your_imagekit_id";
$imageKit = new ImageKit(
$public_key,
$your_private_key,
$url_end_point
);
$listFiles = $imageKit->listFiles(array(
"searchQuery" => '"embeddedMetadata.DateTimeOriginal" > "1y"',
));
echo ("List files : " . json_encode($listFiles));
GetFileListRequest getFileListRequest = new GetFileListRequest();
getFileListRequest.setSearchQuery("'embeddedMetadata.DateTimeOriginal' > '1y'");
ResultList resultList = ImageKit.getInstance().getFileList(getFileListRequest);
imagekitio = ImageKitIo::Client.new("your_private_key", "your_public_key", "your_url_endpoint")
list_files = imagekitio.list_files({search_query: '"embeddedMetadata.DateTimeOriginal" > "1y"'})
resp, err := ik.Media.Files(ctx, media.FilesParam{
SearchQuery: `"embeddedMetadata.DateTimeOriginal" > "1y"`,
})
var imagekit = new ImageKit({
publicKey : "your_public_api_key",
privateKey : "your_private_api_key",
urlEndpoint : "https://ik.imagekit.io/your_imagekit_id/"
});
GetFileListRequest model = new GetFileListRequest
{
SearchQuery = '"embeddedMetadata.DateTimeOriginal" > "1y"'
};
ResultList res = imagekit.GetFileListRequest(model);
List all files with filename
file-name.jpg
. We will use the following value of thesearchQuery
parameter. The match is always case-sensitive.name="file-name.jpg"
cURL
Node.js
Python
PHP
Java
Ruby
Go
.Net
curl -X GET 'https://api.imagekit.io/v1/files' \
-G --data-urlencode "searchQuery=name=\"file-name.jpg\"" \
-u your_private_api_key: