Load next page
curl --request POST \
--url https://api.docusnap365.com/api/v1/cursor/continue \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"cursor": "<nextCursor of the previous response>"
}
'import requests
url = "https://api.docusnap365.com/api/v1/cursor/continue"
payload = { "cursor": "<nextCursor of the previous response>" }
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({cursor: '<nextCursor of the previous response>'})
};
fetch('https://api.docusnap365.com/api/v1/cursor/continue', 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.docusnap365.com/api/v1/cursor/continue",
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([
'cursor' => '<nextCursor of the previous response>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <api-key>"
],
]);
$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.docusnap365.com/api/v1/cursor/continue"
payload := strings.NewReader("{\n \"cursor\": \"<nextCursor of the previous response>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
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.docusnap365.com/api/v1/cursor/continue")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"cursor\": \"<nextCursor of the previous response>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.docusnap365.com/api/v1/cursor/continue")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"cursor\": \"<nextCursor of the previous response>\"\n}"
response = http.request(request)
puts response.read_body{
"items": [
{
"id": "01a13e83-6da5-7532-9162-617cf17f4553",
"name": "SRV01",
"schemaId": "00000000-0000-0000-0000-000000000000",
"object_data": {
"id": "01a13e83-0000-0000-0000-000000000001",
"data.serialNumber": "CZC811922L",
"data.manufacturer": "HP"
}
}
],
"nextCursor": null,
"hasMore": false,
"incompleteExpands": null
}{
"type": "urn:ds365:error:unknown-path",
"title": "Unknown field path",
"status": 400,
"detail": "<string>",
"instance": "/api/v1/assets/query",
"errorCode": "UNKNOWN_PATH",
"errors": [
{
"code": "<string>",
"path": "<string>",
"data": {}
}
],
"traceId": "<string>"
}{
"type": "urn:ds365:error:unknown-path",
"title": "Unknown field path",
"status": 400,
"detail": "<string>",
"instance": "/api/v1/assets/query",
"errorCode": "UNKNOWN_PATH",
"errors": [
{
"code": "<string>",
"path": "<string>",
"data": {}
}
],
"traceId": "<string>"
}{
"type": "urn:ds365:error:unknown-path",
"title": "Unknown field path",
"status": 400,
"detail": "<string>",
"instance": "/api/v1/assets/query",
"errorCode": "UNKNOWN_PATH",
"errors": [
{
"code": "<string>",
"path": "<string>",
"data": {}
}
],
"traceId": "<string>"
}{
"type": "urn:ds365:error:rest-request-quota-exceeded",
"title": "Request quota exceeded",
"status": 429,
"detail": "The request quota of 10000 requests per period is exhausted until 2026-10-17T09:52:44.0000000+00:00.",
"instance": "/api/v1/assets",
"errorCode": "REST_REQUEST_QUOTA_EXCEEDED",
"errors": [
{
"code": "REST_REQUEST_QUOTA_EXCEEDED",
"data": {
"requestsLimit": 10000,
"requestsUsed": 10000,
"quotaResetAt": "2026-10-17T09:52:44+00:00"
}
}
],
"traceId": "00-…"
}{
"type": "urn:ds365:error:unknown-path",
"title": "Unknown field path",
"status": 400,
"detail": "<string>",
"instance": "/api/v1/assets/query",
"errorCode": "UNKNOWN_PATH",
"errors": [
{
"code": "<string>",
"path": "<string>",
"data": {}
}
],
"traceId": "<string>"
}{
"type": "urn:ds365:error:unknown-path",
"title": "Unknown field path",
"status": 400,
"detail": "<string>",
"instance": "/api/v1/assets/query",
"errorCode": "UNKNOWN_PATH",
"errors": [
{
"code": "<string>",
"path": "<string>",
"data": {}
}
],
"traceId": "<string>"
}Assets
Load next page
Continues a query with a cursor – the main query’s nextCursor or the
cursor of an entry in incompleteExpands.
Cursors are encrypted, bound to tenant and user and expire after one
hour (400 CURSOR_EXPIRED). Another user’s cursor yields
403 CURSOR_USER_MISMATCH.
Known limitation (2026-11-04): A cursor from incompleteExpands
for object_essentials or object_blocks currently returns empty
entries without data. Until this is fixed, choose the expand’s
limit so that all entries fit into the first response.
Permission: Read.
POST
/
cursor
/
continue
Load next page
curl --request POST \
--url https://api.docusnap365.com/api/v1/cursor/continue \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"cursor": "<nextCursor of the previous response>"
}
'import requests
url = "https://api.docusnap365.com/api/v1/cursor/continue"
payload = { "cursor": "<nextCursor of the previous response>" }
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({cursor: '<nextCursor of the previous response>'})
};
fetch('https://api.docusnap365.com/api/v1/cursor/continue', 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.docusnap365.com/api/v1/cursor/continue",
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([
'cursor' => '<nextCursor of the previous response>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <api-key>"
],
]);
$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.docusnap365.com/api/v1/cursor/continue"
payload := strings.NewReader("{\n \"cursor\": \"<nextCursor of the previous response>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
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.docusnap365.com/api/v1/cursor/continue")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"cursor\": \"<nextCursor of the previous response>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.docusnap365.com/api/v1/cursor/continue")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"cursor\": \"<nextCursor of the previous response>\"\n}"
response = http.request(request)
puts response.read_body{
"items": [
{
"id": "01a13e83-6da5-7532-9162-617cf17f4553",
"name": "SRV01",
"schemaId": "00000000-0000-0000-0000-000000000000",
"object_data": {
"id": "01a13e83-0000-0000-0000-000000000001",
"data.serialNumber": "CZC811922L",
"data.manufacturer": "HP"
}
}
],
"nextCursor": null,
"hasMore": false,
"incompleteExpands": null
}{
"type": "urn:ds365:error:unknown-path",
"title": "Unknown field path",
"status": 400,
"detail": "<string>",
"instance": "/api/v1/assets/query",
"errorCode": "UNKNOWN_PATH",
"errors": [
{
"code": "<string>",
"path": "<string>",
"data": {}
}
],
"traceId": "<string>"
}{
"type": "urn:ds365:error:unknown-path",
"title": "Unknown field path",
"status": 400,
"detail": "<string>",
"instance": "/api/v1/assets/query",
"errorCode": "UNKNOWN_PATH",
"errors": [
{
"code": "<string>",
"path": "<string>",
"data": {}
}
],
"traceId": "<string>"
}{
"type": "urn:ds365:error:unknown-path",
"title": "Unknown field path",
"status": 400,
"detail": "<string>",
"instance": "/api/v1/assets/query",
"errorCode": "UNKNOWN_PATH",
"errors": [
{
"code": "<string>",
"path": "<string>",
"data": {}
}
],
"traceId": "<string>"
}{
"type": "urn:ds365:error:rest-request-quota-exceeded",
"title": "Request quota exceeded",
"status": 429,
"detail": "The request quota of 10000 requests per period is exhausted until 2026-10-17T09:52:44.0000000+00:00.",
"instance": "/api/v1/assets",
"errorCode": "REST_REQUEST_QUOTA_EXCEEDED",
"errors": [
{
"code": "REST_REQUEST_QUOTA_EXCEEDED",
"data": {
"requestsLimit": 10000,
"requestsUsed": 10000,
"quotaResetAt": "2026-10-17T09:52:44+00:00"
}
}
],
"traceId": "00-…"
}{
"type": "urn:ds365:error:unknown-path",
"title": "Unknown field path",
"status": 400,
"detail": "<string>",
"instance": "/api/v1/assets/query",
"errorCode": "UNKNOWN_PATH",
"errors": [
{
"code": "<string>",
"path": "<string>",
"data": {}
}
],
"traceId": "<string>"
}{
"type": "urn:ds365:error:unknown-path",
"title": "Unknown field path",
"status": 400,
"detail": "<string>",
"instance": "/api/v1/assets/query",
"errorCode": "UNKNOWN_PATH",
"errors": [
{
"code": "<string>",
"path": "<string>",
"data": {}
}
],
"traceId": "<string>"
}Authorizations
API key from Docusnap365 (Administration › Integrations › API Keys). Read endpoints require the access Read, write endpoints Read and Write.
Body
application/json
nextCursor or a cursor from incompleteExpands.
Response
One page of assets.