Me submittals
GET /me/documents/submittals
List my submittals (across all my projects)
Authorization
bearer In: header
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"Restrict to submittals that HAVE active AI-review findings. high = a spec-compliance finding with severity mismatch OR a quality finding with severity required; any = any active finding of either source. Active = spec findings that are not soft-deleted and not dismissed (findings accumulate across review runs; a superseded or spec-removed finding is soft-deleted and drops out. Quality findings have no state). Composes with filter.status (e.g. filter.status=with-consultants). Pair with include=reviewHints to embed the findings themselves.
"high" | "any"Comma-separated optional fields to embed per row. Available: reviewHints — the submittal's active AI-review findings (spec-compliance + quality), normalized into a single shape. Strictly opt-in: omit for the default (unenriched) list. When filter.reviewHint is also set, the embedded findings use the same severity lens; otherwise all active findings are embedded.
length <= 500Response Body
application/json
application/json
curl -X GET "https://api.part3.io/v1/me/documents/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": [
{}
],
"reviewHints": [
{
"source": "spec",
"severity": "mismatch",
"title": "Finish mismatch",
"description": "Submitted finish does not match the specified custom paint.",
"suggestedComment": "Confirm the cabinet will be field-painted to match.",
"specSectionId": "spec_09a3f1",
"key": "contractor_stamp",
"confidence": 0.82
}
]
}
],
"total": 0,
"nextCursor": null,
"hasMore": true,
"meta": {}
}{
"error": "User record not found"
}