List Documents
Page through your document library with GET /v3/api/documents — which documents your key can use as the source of a case.
Returns the documents in your library (Dashboard → Documents) that your key may use as the source of a signing case, newest first, one page at a time.
GET https://api.nextsign.dk/v3/api/documentsAuthenticated with an API key — see Authorization.
Quickstart
curl "https://api.nextsign.dk/v3/api/documents?limit=25" \
-H "Authorization: Bearer $NEXTSIGN_API_KEY"const response = await fetch('https://api.nextsign.dk/v3/api/documents?limit=25', {
headers: { Authorization: `Bearer ${process.env.NEXTSIGN_API_KEY}` },
});
const { documents, nextCursor, hasMore } = await response.json();
const templates = documents.filter((d) => d.format === 'docx');import os, requests
response = requests.get(
"https://api.nextsign.dk/v3/api/documents",
headers={"Authorization": f"Bearer {os.environ['NEXTSIGN_API_KEY']}"},
params={"limit": 25},
)
page = response.json()Query Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
limit | integer | 25 | Documents per page, 1–100 |
cursor | string | — | Where to continue from. Use nextCursor from the previous page |
Anything else is rejected with 400 validation-failed naming the parameter — the same rule as everywhere else in v3.
There is no search or filter yet. The list is small for most companies; page through it and pick by name on your side.
Pagination
Paging is by cursor, exactly as for List Cases: pass nextCursor back as ?cursor= and stop when hasMore is false. Treat the cursor as opaque, and do not store it — a cursor you did not receive from us returns 400 validation-failed on the cursor field.
Response
{
"documents": [
{
"id": "6a58c2a06f829bebd9232c1b",
"name": "Employment Contract.docx",
"format": "docx",
"private": true,
"shared": false,
"createdAt": "2026-05-12T09:14:08.201Z",
"updatedAt": "2026-05-12T09:14:09.377Z",
"currentVersion": {
"id": "6a58c2a16f829bebd9232c1e",
"versionNumber": 1,
"name": "Employment Contract.docx",
"format": "docx",
"createdAt": "2026-05-12T09:14:09.301Z",
"fieldCount": 27
}
},
{
"id": "6a33dbb9426f03b090c79ea2",
"name": "Terms of service.pdf",
"format": "pdf",
"private": false,
"shared": false,
"createdAt": "2026-04-14T11:02:51.940Z",
"updatedAt": "2026-04-14T11:02:52.118Z",
"currentVersion": {
"id": "6a33dbb9426f03b090c79ea5",
"versionNumber": 1,
"name": "Terms of service.pdf",
"format": "pdf",
"createdAt": "2026-04-14T11:02:52.080Z",
"fieldCount": 0
}
}
],
"nextCursor": "MTc4MjE0MDYyNDEyOS42YTM5NGVkMDhlZThjMzY2OWYyYzNlMTc",
"hasMore": true
}| Field | Description |
|---|---|
id | The document id. This is the documentId you pass when creating a case |
name | The current version's file name |
format | docx or pdf. Only a docx has fillable fields — see below |
private | Whether the document is visible only to its creator in the dashboard |
shared | true when the document belongs to another company that has shared it with yours |
currentVersion | The version used unless you pin a versionId. fieldCount is how many fields a caller can fill |
nextCursor | Pass as ?cursor= for the next page. null on the last page |
hasMore | Whether another page exists |
The list deliberately says nothing about the fields themselves beyond their count. Fetch the document with Retrieve a Document to learn what to fill — it is one request per document, against a schema that rarely changes, so cache it.
docx versus pdf is decided by the stored file. A .docx in the library is a template: it has {tag} placeholders that are filled with the values you send and then rendered to PDF when the case is created. A .pdf is attached as it is, and sending tags for it is rejected.
What you see
An API key belongs to a company, and this endpoint returns that company's library as the person behind the key would see it in the dashboard:
- every document that is not private,
- every document created by the key's user (keys made in the dashboard carry the user who made them),
- every document another company has shared with yours — these come back with
shared: true.
A private document created by a colleague is not listed, and asking for it by id returns 404, the same as the dashboard would hide it. A key with no user behind it sees only the non-private and shared documents.
Documents that exist only inside a public form are never listed — they are part of the form, not of the library.
Errors
error | Status | Meaning |
|---|---|---|
validation-failed | 400 | A query parameter is invalid or unrecognised. See details |
Reading never changes anything, so every request here is safe to retry. Full detail in Errors.