Skip to main content
GET /documents returns the documents visible to the key owner in the registry, newest first. The scope is documents:read. List items carry only the document’s scalar fields: files and route are omitted, so call GET /documents/{document_id} for those.

Filters

status takes exactly one value: to collect documents in two statuses, make two requests. Pagination is the shared one, through limit and page_token; there is no total_count here.

What the list leaves out

A document you can reach only through route participation — you are a signer or an approver, but not the initiator and you hold no permission over it — never appears in this list. The registry lists by initiator and by permission scope, and participation is neither. GET /documents/{id} on such a document still works.
So an integrator who only participates needs a different entry point: subscribe to document.approval_started and document.signing_started and keep the document_id from those events. The recipe Approve a document as a participant walks through it.

What to use instead of polling

Polling the list does not replace events: a document can move through several statuses between two polls. Keep the list for reconciliation and reporting, and build your reactions on document events.

Reconciling after downtime

If webhooks were not arriving, fetch everything that changed since the last successful delivery:
The DOCUMENT_ORDER_UPDATED_AT_ASC order matters: a document that changes mid-walk moves ahead of your checkpoint instead of slipping past it. Advance the checkpoint by the update_time of the last record you processed.
Encode a timezone offset in the query as %2B05:00, or send the time in Z (UTC): a + in a URL is otherwise read as a space.