List documents

GET/api/v1/listDocuments

List documents with bounded cursor pagination

owner_email and source cannot be combined. Documents are newest first by creation time unless sort_by=statusChangedAt is supplied. Status time ordering requires the statusChangedAt backfill for historical rows. Residual filters can return short or empty pages with hasMore=true; continue with meta.nextCursor until hasMore=false.

Permission

An OAuth access token with this scope. How to get a token

documents:read
Read document summaries and hydrated document data.

Parameters

Not sure what to enter? Here’s where to find IDs.

client_idquery · stringrequired
The Client ID of your OAuth client. It’s public, and goes on every request alongside your access token. Find it in QuoteCloud under Settings → API dashboard → Manage Integrations → OAuth Clients.Length at least 1.
statusquery · string
Only documents with this status.One of sent, opened, signing, signing_complete, part_paid, paid, accepted, lost, canceled, creating, revising, workflow_review_requested, workflow_review_accepted, pending_sent, scheduled_send, delivery_delayed, delivered, alert, email_complained, email_bounced, send_failed, expired, custom, template, system_template.
owner_emailquery · string (email)
Only documents owned by this QuoteCloud user. Can’t be combined with source.
sourcequery · string
Only documents created this way. Can’t be combined with owner_email.One of blank, document, template, import, salesforce, sabre, tramada, tres, amadeus, zapier, travelAPI, graphql, legacyDocument.
created_afterquery · string (date-time)
Only documents created after this date, for example 2026-01-31T00:00:00Z.
status_changed_afterquery · string
Status changed strictly after this ISO date or epoch milliseconds. Alias statusChangedAfter.
sort_byquery · string
Ordering field. Alias sortBy.One of createdAt, statusChangedAt. Default createdAt.
created_beforequery · string (date-time)
Only documents created before this date, for example 2026-01-31T00:00:00Z.
cursorquery · string or null
Where the next page starts. Leave this out for the first page, then send meta.nextCursor from the previous response.
limitquery · integer
How many results to return per page, up to 100.Default 25. Value 1 to 100.

Responses

200Document page.
dataarray of objectrequired
Item fields
idstringrequired
documentRefstringrequired
displayIdintegerrequired
titlestringrequired
statusstringrequired
sourcestringrequired
ownerEmailstringrequired
createdAtstring (date-time)required
statusChangedAtstring (date-time)
updatedAtstring (date-time)required
hasMorebooleanrequired
nextCursorstringrequired
metaobjectrequired
Fields
hasMorebooleanrequired
nextCursorstringrequired
400Invalid request or validation failure.
dataobjectrequired
Fields
statusstringrequired
Always error.
messagestringrequired
codestring
documentRefstring
assetGenerationIdstring
errorsarray of object
Item fields
fieldstringrequired
messagestringrequired
401Missing or invalid bearer token or client ID.
errorstringrequired
error_descriptionstring
403Insufficient scope, missing add-on, usage limit, or permission denial.

Exactly one of these:

OAuthError
errorstringrequired
error_descriptionstring
ApiErrorEnvelope
dataobjectrequired
Fields
statusstringrequired
Always error.
messagestringrequired
codestring
documentRefstring
assetGenerationIdstring
errorsarray of object
Item fields
fieldstringrequired
messagestringrequired
429Shared company API request quota exceeded. Wait before retrying.
Retry-Afterheader · integer
Minimum seconds to wait before retrying.Value at least 1.
dataobjectrequired
Fields
statusstringrequired
Always error.
messagestringrequired
retryAfterSecondsintegerrequired
Value at least 1.

Rate limit

120 requests a minute per company, shared across REST, Zapier and MCP. On a 429, wait for Retry-After.