Submittals list
GET /organization/{orgId}/project/{projectId}/document/submittals
List submittals in a project
Authorization
bearer In: header
Path Parameters
Organization ID. Returned from GET /v1/client/me for the authenticated client; for web-app users it is the active org context.
Project ID. Returned from GET /v1/organization/{orgId}/project. Must belong to the org in the path.
Query Parameters
Pagination cursor
Page size (1-50, default 25)
Sort field (createdAt, updatedAt, dueDate, title, …).
Sort direction (default: desc)
"asc" | "desc"Filter by DOCUMENT workflow status (e.g. draft, with-consultants, issued, returned, closed, cancelled), comma-separated for OR. NOTE: this is the document lifecycle status, NOT the consultant review outcome — for "pending/approved/rejected submittals" use filter.reviewStatus, and for open/overdue use filter.open / filter.overdue.
length <= 500Full-text search across title, id, and format-specific text
length <= 500Same as status — DOCUMENT workflow status (comma-separated OR). Not the review outcome.
length <= 500Due-date range as "from,to" ISO dates (YYYY-MM-DD). For overdue items prefer filter.overdue=true.
length <= 25length <= 25Include meta.filters with enum values for filterable columns
"true"Consultant review OUTCOME — the value shown in the UI submittal "Status" column. Comma-separated for OR. Values: reviewed, reviewed-as-noted, reviewed-as-noted-partial-resubmit, revise-and-resubmit, revise-and-resubmit-for-record, rejected, for-record-only, not-reviewed, not-required-for-review, pending. Mapping: "approved" ≈ {reviewed, reviewed-as-noted}; "pending submittals" = pending (NOT document status); "rejected" is ambiguous (often includes revise-and-resubmit) — clarify with the user. Org list presets relabel these (e.g. reviewed shows as "Approved"/"No Exception") but the underlying value is unchanged.
length <= 500length <= 25Closed-date range as "from,to" ISO dates — when the submittal was closed out. For simple open vs closed, prefer filter.open=true, which keys on the document lifecycle status rather than this timestamp.
length <= 25Set 'true' for OPEN items only — status is not terminal (not closed/cancelled/locked/accepted/approved). 'open' is about the document lifecycle, independent of consultant review outcome.
"true"Set 'true' for OVERDUE items only — past the due date AND still open (dueDate < now AND status not terminal). 'overdue' is measured against the due date, not the on-site need-by date.
"true"Response Body
application/json
curl -X GET "https://api.part3.io/v1/organization/org_8a1b2c3d4e/project/proj_5f9a3c2e8b/document/submittals"{
"data": [
{
"uid": "string",
"id": null,
"format": "string",
"type": "string",
"title": null,
"status": "string",
"priority": null,
"dueDate": null,
"issuedAt": null,
"createdAt": null,
"updatedAt": null,
"projectId": "string",
"projectName": null,
"organizationId": null,
"organizationName": null,
"referenceNumber": null,
"divisionTitle": null,
"reviewStatus": null,
"receivedAt": null,
"closedAt": null,
"ballInCourt": null,
"assignees": [
{}
],
"approvers": [
{}
],
"distributionRecipients": [
{}
],
"consultants": [
{}
]
}
],
"total": 0,
"nextCursor": null,
"hasMore": true,
"meta": {}
}