curl --request POST \
--url https://api.gumnut.ai/api/assets/exist \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"checksums": [
"<string>"
],
"checksum_sha1s": [
"<string>"
],
"deviceId": "<string>",
"deviceAssetIds": [
"<string>"
]
}
'import requests
url = "https://api.gumnut.ai/api/assets/exist"
payload = {
"checksums": ["<string>"],
"checksum_sha1s": ["<string>"],
"deviceId": "<string>",
"deviceAssetIds": ["<string>"]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
checksums: ['<string>'],
checksum_sha1s: ['<string>'],
deviceId: '<string>',
deviceAssetIds: ['<string>']
})
};
fetch('https://api.gumnut.ai/api/assets/exist', 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.gumnut.ai/api/assets/exist",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'checksums' => [
'<string>'
],
'checksum_sha1s' => [
'<string>'
],
'deviceId' => '<string>',
'deviceAssetIds' => [
'<string>'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.gumnut.ai/api/assets/exist"
payload := strings.NewReader("{\n \"checksums\": [\n \"<string>\"\n ],\n \"checksum_sha1s\": [\n \"<string>\"\n ],\n \"deviceId\": \"<string>\",\n \"deviceAssetIds\": [\n \"<string>\"\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.gumnut.ai/api/assets/exist")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"checksums\": [\n \"<string>\"\n ],\n \"checksum_sha1s\": [\n \"<string>\"\n ],\n \"deviceId\": \"<string>\",\n \"deviceAssetIds\": [\n \"<string>\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.gumnut.ai/api/assets/exist")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"checksums\": [\n \"<string>\"\n ],\n \"checksum_sha1s\": [\n \"<string>\"\n ],\n \"deviceId\": \"<string>\",\n \"deviceAssetIds\": [\n \"<string>\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"assets": [
{
"id": "<string>",
"device_asset_id": "<string>",
"device_id": "<string>",
"checksum": "<string>",
"checksum_sha1": "<string>"
}
]
}{
"detail": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}{
"detail": "<string>"
}Check asset existence
Checks which assets exist in the user’s library based on checksums or device identifiers. Provide exactly one of: checksums, checksum_sha1s, or (deviceId AND deviceAssetIds). List parameters are limited to 5000 items.
curl --request POST \
--url https://api.gumnut.ai/api/assets/exist \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"checksums": [
"<string>"
],
"checksum_sha1s": [
"<string>"
],
"deviceId": "<string>",
"deviceAssetIds": [
"<string>"
]
}
'import requests
url = "https://api.gumnut.ai/api/assets/exist"
payload = {
"checksums": ["<string>"],
"checksum_sha1s": ["<string>"],
"deviceId": "<string>",
"deviceAssetIds": ["<string>"]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
checksums: ['<string>'],
checksum_sha1s: ['<string>'],
deviceId: '<string>',
deviceAssetIds: ['<string>']
})
};
fetch('https://api.gumnut.ai/api/assets/exist', 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.gumnut.ai/api/assets/exist",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'checksums' => [
'<string>'
],
'checksum_sha1s' => [
'<string>'
],
'deviceId' => '<string>',
'deviceAssetIds' => [
'<string>'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.gumnut.ai/api/assets/exist"
payload := strings.NewReader("{\n \"checksums\": [\n \"<string>\"\n ],\n \"checksum_sha1s\": [\n \"<string>\"\n ],\n \"deviceId\": \"<string>\",\n \"deviceAssetIds\": [\n \"<string>\"\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.gumnut.ai/api/assets/exist")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"checksums\": [\n \"<string>\"\n ],\n \"checksum_sha1s\": [\n \"<string>\"\n ],\n \"deviceId\": \"<string>\",\n \"deviceAssetIds\": [\n \"<string>\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.gumnut.ai/api/assets/exist")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"checksums\": [\n \"<string>\"\n ],\n \"checksum_sha1s\": [\n \"<string>\"\n ],\n \"deviceId\": \"<string>\",\n \"deviceAssetIds\": [\n \"<string>\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"assets": [
{
"id": "<string>",
"device_asset_id": "<string>",
"device_id": "<string>",
"checksum": "<string>",
"checksum_sha1": "<string>"
}
]
}{
"detail": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}{
"detail": "<string>"
}Authorizations
Gumnut API key (apikey_...) sent as a Bearer token in the Authorization header. Create and manage keys in the Gumnut app, or with the API key endpoints while signed in to it.
Query Parameters
Library to check assets in. Optional if the user has a single live (non-trashed) library; required when they have multiple.
Body
Request body for checking asset existence.
List of base64-encoded SHA-256 checksums to check for existence
List of base64-encoded SHA-1 checksums to check for existence
Device ID to filter assets by (required with deviceAssetIds)
List of device asset IDs to check for existence (requires deviceId)
Response
Successful Response
Response for asset existence check endpoint.
List of assets matching the query criteria
Show child attributes
Show child attributes