NextSign API
Documents

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/documents

Authenticated 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

ParameterTypeDefaultDescription
limitinteger25Documents per page, 1–100
cursorstringWhere 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

200 OK
{
  "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
}
FieldDescription
idThe document id. This is the documentId you pass when creating a case
nameThe current version's file name
formatdocx or pdf. Only a docx has fillable fields — see below
privateWhether the document is visible only to its creator in the dashboard
sharedtrue when the document belongs to another company that has shared it with yours
currentVersionThe version used unless you pin a versionId. fieldCount is how many fields a caller can fill
nextCursorPass as ?cursor= for the next page. null on the last page
hasMoreWhether 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

errorStatusMeaning
validation-failed400A query parameter is invalid or unrecognised. See details

Reading never changes anything, so every request here is safe to retry. Full detail in Errors.