Part3 Developers

Documents list

GET /organization/{orgId}/project/{projectId}/document

List documents in a project

GET
/organization/{orgId}/project/{projectId}/document
AuthorizationBearer <token>

In: header

Path Parameters

orgId*string

Organization ID. Returned from GET /v1/client/me for the authenticated client; for web-app users it is the active org context.

projectId*string

Project ID. Returned from GET /v1/organization/{orgId}/project. Must belong to the org in the path.

Query Parameters

cursor?string

Cursor for the next page. Pass back the nextCursor from a prior response. Omit on the first page.

limit?string

Page size, 1–50 (default 20). Sent as a string for query-param friendliness.

sortBy?string

Sort field. createdAt (default) is most useful for "recently created" feeds; dueDate for "what's due next"; updatedAt for change tracking; title for alphabetical exports.

Value in"createdAt" | "updatedAt" | "dueDate" | "title"
sortOrder?string

Sort direction. Default desc (newest first).

Value in"asc" | "desc"
search?string

Full-text search. Matches across title, human-readable id (e.g. "RFI-014"), description, RFI questions, change-order reasons, comments, review responses, responder names/emails, and submittal division titles. Case-insensitive.

Lengthlength <= 500
format?string

Filter by document format. Comma-separated for OR semantics. Values: bulletin, certificate, change, instruction, quote, rfi, submittal.

type?string

Filter by finer-grained document type code. Comma-separated for OR semantics. Values: Bulletin, CA, CD, Certificate, CO, minute, PC, Quote, report, RFI, SI, Submittal.

status?string

Filter by lifecycle status. Comma-separated for OR semantics. Values: draft, pending, submitted, with-consultants, issued, approved, accepted, returned, resubmitted, revision, closed, locked, cancelled, needs-work.

dueDate?string

Due-date range filter, "YYYY-MM-DD,YYYY-MM-DD" (from,to). Either side is optional — "2026-05-01," is "from May 1 onwards", ",2026-05-31" is "up to May 31".

createdAt?string

Created-date range filter, "YYYY-MM-DD,YYYY-MM-DD" (from,to). Same open-bound semantics as dueDate.

include?string

Comma-separated optional fields to include in each document. Available: activityCount (total activity entries — extra DB query per page), assignees (assigned user IDs/names), consultants (consultant disciplines + per-consultant review status).

assigneeId?string

Filter to documents assigned to a specific user (Part3 user UID). For "documents assigned to me" use the authenticated user's UID from /v1/me.

assigneeName?string

Filter where any assignee's display name contains this substring (case-insensitive). Use for "everything assigned to anyone named Anika" lookups.

Lengthlength <= 200

Response Body

application/json

application/json

application/json

curl -X GET "https://api.part3.io/v1/organization/org_8a1b2c3d4e/project/proj_5f9a3c2e8b/document"
{
  "data": [
    {
      "uid": "doc_2a3b4c5d6e",
      "id": "RFI-014",
      "format": "rfi",
      "type": "RFI",
      "title": "Curtain wall flashing detail",
      "status": "with-consultants",
      "priority": "normal",
      "dueDate": "2026-05-15",
      "issuedAt": "2026-04-21T14:02:00Z",
      "createdAt": "2026-04-21T13:50:00Z",
      "updatedAt": "2026-04-22T09:14:00Z",
      "activityCount": 12,
      "assignees": [
        {
          "userId": "user_77b2c3d4e5",
          "name": "Anika Patel"
        }
      ],
      "consultants": [
        {
          "type": "mechanical",
          "status": "pending"
        }
      ]
    },
    {
      "uid": "doc_9f8e7d6c5b",
      "id": "SUB-08 71 00-001",
      "format": "submittal",
      "type": "Submittal",
      "title": "Door hardware — finish hardware",
      "status": "pending",
      "priority": "normal",
      "dueDate": "2026-05-08",
      "issuedAt": null,
      "createdAt": "2026-04-22T11:00:00Z",
      "updatedAt": "2026-04-22T11:00:00Z"
    }
  ],
  "nextCursor": "eyJzIjoiMjAyNi0wNC0yMlQxMTowMDowMFoiLCJpZCI6ImRvY185ZjhlN2Q2YzViIn0",
  "hasMore": true
}
{
  "error": "Insufficient permissions"
}
{
  "error": "Insufficient permissions"
}